prometheus 中文文档
v2.17
v2.17
  • Prometheus 中文文档
  • introduction
    • 概述
    • 初识 Prometheus
    • 与替代品比较
    • 常见问题
    • 路线图
    • 相关资源
    • 相关术语
  • concepts
    • 数据模型
    • 数据指标类型
    • 作业和实例
  • prometheus
    • 快速开始
    • 安装
    • 配置
      • 配置
      • 定义记录规则
      • 告警规则
      • 模板示例
      • 模板参考
      • 规则的单元测试
    • 查询
      • Prometheus 查询
      • 运算符
      • 函数
      • 查询示例
      • HTTP API
    • 存储
    • 联合
    • 管理 API
    • Prometheus 2.0 迁移指南
    • API 稳定性保证
  • visualization
    • 表达式浏览器
    • Grafana 对 Prometheus 的支持
    • 控制台模板
  • operating
    • 安全模型
    • 集成
  • instrumenting
    • 客户端库
    • 编写客户端库
    • 推送数据指标
    • 数据导出及相关集成
    • 编写数据导出器
    • 公开的格式
  • alerting
    • 告警概述
    • Alertmanager
    • 配置
    • 发送告警
    • 通知模板参考
    • 通知模板示例
    • 管理 API
  • practices
    • 指标和标签命名
    • 控制台和仪表盘
    • 工具
    • Histogram and Summary
    • 告警
    • 记录规则
    • 什么时候使用 Pushgateway
    • 远程写调试
  • guides
    • 使用 cAdvisor 监控 docker 容器数据指标
    • 使用基于文件的服务发现来发现数据采集目标
    • 实现一个 Go 应用
    • 使用 Node Exporter 监控 Linux 主机指标
    • 使用基本身份验证保护 Prometheus API 和 UI 端点
    • 理解并使用 multi-target exporters 模式
    • 使用 TLS 加密 Prometheus API 和 UI 端点
    • 使用 Prometheus 查询日志
由 GitBook 提供支持
在本页
  • 安装
  • 如何公开
  • 添加您自己的数据指标
  • 其它 Go 客户端功能
  • Summary

这有帮助吗?

  1. guides

实现一个 Go 应用

上一页使用基于文件的服务发现来发现数据采集目标下一页使用 Node Exporter 监控 Linux 主机指标

最后更新于5年前

这有帮助吗?

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

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

安装

您可以使用 安装指南所需的 prometheus, promauto 和 promhttp 库:

go get github.com/prometheus/client_golang/prometheus
go get github.com/prometheus/client_golang/prometheus/promauto
go get github.com/prometheus/client_golang/prometheus/promhttp

如何公开

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

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

package main

import (
        "net/http"

        "github.com/prometheus/client_golang/prometheus/promhttp"
)

func main() {
        http.Handle("/metrics", promhttp.Handler())
        http.ListenAndServe(":2112", nil)
}

运行该程序:

go run main.go

获取数据指标:

curl http://localhost:2112/metrics

添加您自己的数据指标

package main

import (
        "net/http"
        "time"

        "github.com/prometheus/client_golang/prometheus"
        "github.com/prometheus/client_golang/prometheus/promauto"
        "github.com/prometheus/client_golang/prometheus/promhttp"
)

func recordMetrics() {
        go func() {
                for {
                        opsProcessed.Inc()
                        time.Sleep(2 * time.Second)
                }
        }()
}

var (
        opsProcessed = promauto.NewCounter(prometheus.CounterOpts{
                Name: "myapp_processed_ops_total",
                Help: "The total number of processed events",
        })
)

func main() {
        recordMetrics()

        http.Handle("/metrics", promhttp.Handler())
        http.ListenAndServe(":2112", nil)
}

运行该程序:

go run main.go

获取数据指标:

curl http://localhost:2112/metrics

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

# HELP myapp_processed_ops_total The total number of processed events
# TYPE myapp_processed_ops_total counter
myapp_processed_ops_total 5
scrape_configs:
- job_name: myapp
  scrape_interval: 10s
  static_configs:
  - targets:
    - localhost:2112

其它 Go 客户端功能

Summary

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

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

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

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

Go 客户端库
GoDoc
go get
prometheus/promhttp
Handler
gauges
histograms
非全局 registries
推送数据指标
PushGateways
Graphite
计数器
配置