如何使用 client_golang 将指标推送到普罗米修斯?
How to push metrics to prometheus using client_golang?
我还没有找到一些在 prometheus 中使用 Gauge、Counter 和 Histogram 的好例子。任何帮助都可以。我尝试使用文档,但未能成功创建可运行的应用程序。
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
页面。
我找到了这个
`
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)
}
`
这可能对某些人有用。
您可以从 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/) 上看到指标。界面如下所示:
我还没有找到一些在 prometheus 中使用 Gauge、Counter 和 Histogram 的好例子。任何帮助都可以。我尝试使用文档,但未能成功创建可运行的应用程序。
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
页面。
我找到了这个
`
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)
}
`
这可能对某些人有用。
您可以从 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/) 上看到指标。界面如下所示: