• 实现一个 Go 应用
    • " level="2">安装
    • " level="2">如何公开
    • " level="2">添加您自己的数据指标
    • " level="2">其它 Go 客户端功能
    • Summary

    实现一个 Go 应用

    Prometheus 具有官方 Go 客户端库 可用于实现 Go 应用程序。在本指南中,我们将创建一个简单的 Go 应用程序,该应用程序通过 HTTP 公开 Prometheus 指标。

    NOTE: 有关全面的 AP I文档,请参见 Prometheus 的各种 Go 库的 GoDoc 文档。

    安装

    您可以使用 go get 安装指南所需的 prometheus, promautopromhttp 库:

    1. go get github.com/prometheus/client_golang/prometheus
    2. go get github.com/prometheus/client_golang/prometheus/promauto
    3. go get github.com/prometheus/client_golang/prometheus/promhttp

    如何公开

    要在 Go 应用程序中公开 Prometheus 指标,您需要提供 /metrics HTTP 端点。您可以使用 prometheus/promhttp 库的 HTTP Handler 作为处理函数。

    例如,这个最小的应用程序将通过 http://localhost:2112/metrics 公开 Go 应用程序的默认指标:

    1. package main
    2. import (
    3. "net/http"
    4. "github.com/prometheus/client_golang/prometheus/promhttp"
    5. )
    6. func main() {
    7. http.Handle("/metrics", promhttp.Handler())
    8. http.ListenAndServe(":2112", nil)
    9. }

    运行该程序:

    1. go run main.go

    获取数据指标:

    1. curl http://localhost:2112/metrics

    添加您自己的数据指标

    上面的应用程序仅公开默认的 Go 指标。您还可以注册自定义应用程序指定指标。如下示例应用程序公开了 myapp_processed_ops_total 计数器,该计数器对到目前为止已处理的操作数量进行计数。每2秒,计数器增加1。

    1. package main
    2. import (
    3. "net/http"
    4. "time"
    5. "github.com/prometheus/client_golang/prometheus"
    6. "github.com/prometheus/client_golang/prometheus/promauto"
    7. "github.com/prometheus/client_golang/prometheus/promhttp"
    8. )
    9. func recordMetrics() {
    10. go func() {
    11. for {
    12. opsProcessed.Inc()
    13. time.Sleep(2 * time.Second)
    14. }
    15. }()
    16. }
    17. var (
    18. opsProcessed = promauto.NewCounter(prometheus.CounterOpts{
    19. Name: "myapp_processed_ops_total",
    20. Help: "The total number of processed events",
    21. })
    22. )
    23. func main() {
    24. recordMetrics()
    25. http.Handle("/metrics", promhttp.Handler())
    26. http.ListenAndServe(":2112", nil)
    27. }

    运行该程序:

    1. go run main.go

    获取数据指标:

    1. curl http://localhost:2112/metrics

    在指标输出中,您将看到 myapp_processed_ops_total 计数器的帮助文本,类型信息和当前值:

    1. # HELP myapp_processed_ops_total The total number of processed events
    2. # TYPE myapp_processed_ops_total counter
    3. myapp_processed_ops_total 5

    您可以配置在本地运行的 Prometheus 实例,从应用程序中获取指标。这是一个 prometheus.yml 配置示例:

    1. scrape_configs:
    2. - job_name: myapp
    3. scrape_interval: 10s
    4. static_configs:
    5. - targets:
    6. - localhost:2112

    其它 Go 客户端功能

    在本指南中,我们仅介绍了 Prometheus Go 客户端库中的一小部分功能。您还可以公开其他度量标准类型,例如 gaugeshistograms非全局 registries,用于推送数据指标到 Prometheus PushGateways,连接 Prometheus 和 Graphite 的函数等。

    Summary

    在本指南中,您创建了两个示例 Go 应用程序,这些示例向 Prometheus 公开了指标 —- 一个仅公开了默认Go指标,另一个还公开了自定义 Prometheus 计数器 —- 并配置了 Prometheus 实例从这些应用程序中获取指标。