为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 client_golang 将指标推送到 prometheus?

如何使用 client_golang 将指标推送到 prometheus?

Go
偶然的你 2022-01-17 10:38:58
我还没有找到一些在 prometheus 中使用 Gauge、Counter 和 Histogram 的好例子。对此有任何帮助。我尝试使用文档,但无法成功创建工作应用程序。
查看完整描述

3 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

您可以从prometheus/client_golang中找到示例。为了让你开始,你可以得到包:


$ go get github.com/prometheus/client_golang/prometheus

$ go get github.com/prometheus/client_golang/prometheus/push

您可以通过设置正确的推送网关地址来运行以下示例,在此示例中为http://localhost:9091/ :


package main

import (

        "fmt"

        "github.com/prometheus/client_golang/prometheus"

        "github.com/prometheus/client_golang/prometheus/push"

)


func ExamplePusher_Push() {

        completionTime := prometheus.NewGauge(prometheus.GaugeOpts{

                Name: "db_backup_last_completion_timestamp_seconds",

                Help: "The timestamp of the last successful completion of a DB backup.",

        })

        completionTime.SetToCurrentTime()

        if err := push.New("http://localhost:9091/", "db_backup").

                Collector(completionTime).

                Grouping("db", "customers").

                Push(); err != nil {

                fmt.Println("Could not push completion time to Pushgateway:", err)

        }

}

func main() {

        ExamplePusher_Push()

}

运行你的脚本:


$ go run pushExample.go

运行代码后,您应该会在网关 ( http://localhost:9091/ ) 上看到指标。界面如下所示:

//img1.sycdn.imooc.com//61e4d6dd00012cec16100497.jpg

查看完整回答
反对 回复 2022-01-17
?
守候你守候我

TA贡献1802条经验 获得超10个赞

我找到了这个


`


package main


import (

    "net/http"


    "github.com/prometheus/client_golang/prometheus"

)


var (

cpuTemp = prometheus.NewGauge(prometheus.GaugeOpts{

    Name: "cpu_temperature_celsius",

    Help: "Current temperature of the CPU.",

 })

hdFailures = prometheus.NewCounter(prometheus.CounterOpts{

    Name: "hd_errors_total",

    Help: "Number of hard-disk errors.",

})

)


func init() {

    prometheus.MustRegister(cpuTemp)

    prometheus.MustRegister(hdFailures)

}


func main() {

    cpuTemp.Set(65.3)

    hdFailures.Inc()


    http.Handle("/metrics", prometheus.Handler())

    http.ListenAndServe(":8080", nil)

}

`


这可能对某些人有用。


查看完整回答
反对 回复 2022-01-17
?
撒科打诨

TA贡献1934条经验 获得超2个赞

Prometheus 是一个基于拉的系统,如果你想要基于推送的监控,你需要使用某种网关。一个最小的例子(实际上没有做任何有用的事情,比如启动一个 HTTP 监听器,或者实际上对一个指标做任何事情)如下:


import (

        "github.com/prometheus/client_golang/prometheus"

        "net/http"

)


var responseMetric = prometheus.NewHistogram(

        prometheus.HistogramOpts{

                Name: "request_duration_milliseconds",

                Help: "Request latency distribution",

                Buckets: prometheus.ExponentialBuckets(10.0, 1.13, 40),

        })


func main() {

        prometheus.MustRegister(responseMetric)

        http.Handle("/metrics", prometheus.Handler())

        // Any other setup, then an http.ListenAndServe here

}

然后,您需要配置 Prometheus 以抓取/metrics您的二进制文件提供的页面。


查看完整回答
反对 回复 2022-01-17
  • 3 回答
  • 0 关注
  • 488 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信