
Prometheus Go 客户端库
本页内容
引言
以下快速入门指南提供了 Prometheus Go 客户端库的设置说明和预配置仪表盘。完成本快速入门指南的步骤后,您将能够:
设置和配置 Go 客户端库,以收集 Go Prometheus 度量数据,例如总保留内存、堆栈内存使用量和堆内存。Go 客户端库将把这些数据作为 Prometheus 风格的度量数据暴露出来。
配置 Prometheus 抓取 Go 客户端库的度量数据,并可选择将其发送到 Grafana Cloud。
导入 Grafana 仪表盘以可视化您的度量数据。
度量数据使用量
该导出器默认发布大约 45 个 Prometheus 时间序列。要查看该导出器默认附带的度量数据列表,请在此处下载示例度量数据抓取文件。
请注意,根据配置不同,Prometheus Go 客户端库可能会收集和发布比默认集多得多的度量数据。要详细了解如何配置 Prometheus Go 客户端库和切换其收集器,请参阅 Prometheus Go 客户端库的 GitHub 仓库。
除了调整 Prometheus Go 客户端库的设置之外,您还可以通过删除不需要存储在 Prometheus 或 Grafana Cloud 中的时间序列来减少度量数据使用量。要了解具体方法,请参阅 Grafana Cloud 文档中的使用 relabeling 减少 Prometheus 度量数据使用量。
Grafana Cloud 的 Golang 集成
如果您使用 Grafana Cloud,可以通过安装 Prometheus Go 集成来跳过本指南中的所有步骤,该集成旨在帮助您通过几个命令和点击快速启动并运行。免费注册。
要了解如何通过 Prometheus Go 集成设置 Prometheus Go 客户端库,请参阅 Grafana Cloud 文档中的Go 集成。
本页内容
Prometheus Go 客户端库快速入门
在本指南中,您将学习如何设置和配置 Prometheus Go 客户端库,以收集 Go 度量数据,例如总保留内存和堆栈内存使用量,并将其作为 Prometheus 风格的度量数据暴露出来。然后,您将配置 Prometheus 来抓取 Go 度量数据,并可选择将其发送到 Grafana Cloud。最后,您将设置一个预配置的 Grafana 仪表盘。完成本指南后,您将拥有一个可用于可视化 Go 度量数据的仪表盘。
如果您使用Grafana Cloud,Go 集成可以帮助您快速启动并运行。Go 集成将 Prometheus 度量数据收集器嵌入到 Grafana Cloud Agent 中,并自动配置仪表盘,因此您无需执行本指南中的步骤。要了解如何设置 Go 集成,请参阅 Grafana Cloud 文档中的Go 集成。
先决条件
开始之前,您应该准备好以下各项:
- 您的机器上安装了 Go。要了解更多信息,请参阅 Go 文档中的下载和安装。
- 您的环境中或机器上正在运行 Prometheus。要了解如何安装 Prometheus,请参阅 Prometheus 文档中的安装。
- 您的环境中或机器上正在运行 Grafana。要了解如何安装 Grafana,请参阅 Grafana 文档中的安装 Grafana。
- (可选)一个 Grafana Cloud 账户。Grafana Cloud 托管 Grafana 和基于 Mimir 的 Prometheus 度量数据端点。您仍然需要使用环境中安装的 Prometheus 或 Grafana Cloud Agent 来抓取度量数据。要了解更多关于 Grafana Cloud 的信息,请参阅Grafana Cloud。
步骤 1:设置 Prometheus Go 客户端库
本步骤将设置 Go 客户端库,以 Prometheus 格式收集和暴露 Go 度量数据。本指南使用 Ubuntu 20.04 系统和 Go 1.16.2 版本。具体步骤可能因您的操作系统和 Go 版本而略有不同。
本指南将设置一个最小化应用程序,以暴露默认的 Go 度量数据。要为现有应用程序进行埋点,请参阅 client_golang 的 GitHub 仓库。
首先创建一个名为 metrics_test
的目录用于您的最小化 Go 应用,然后 cd
进入该目录
mkdir metrics_test
cd metrics_test
接下来,使用 go mod init
初始化一个 Go 模块
go mod init test_metrics
go: creating new go.mod: module test_metrics
go: to add module requirements and sums:
go mod tidy
使用 go get
下载并安装所有必需的 client_golang
库
go get github.com/prometheus/client_golang/prometheus/promhttp
go get: added github.com/prometheus/client_golang v1.9.0
接下来,使用您喜欢的编辑器打开一个名为 main.go
的文件,然后粘贴以下 Go 代码
package main
import (
"net/http"
"github.com/prometheus/client_golang/prometheus/promhttp"
)
func main() {
http.Handle("/metrics", promhttp.Handler())
http.ListenAndServe(":2112", nil)
}
这段最小化代码设置了一个 /metrics
HTTP 端点,用于暴露一组默认的 Go 度量数据。它在 localhost:2112
监听 HTTP 请求。
完成后,保存并关闭文件。
使用 go run
编译并测试代码
go run main.go
此时您的 shell 应该会挂起。打开另一个会话或将进程置于后台,以 curl 度量数据端点
curl https://:2112/metrics
. . .
process_start_time_seconds 1.61559003439e+09
# HELP process_virtual_memory_bytes Virtual memory size in bytes.
# TYPE process_virtual_memory_bytes gauge
process_virtual_memory_bytes 1.106751488e+09
# HELP process_virtual_memory_max_bytes Maximum amount of virtual memory available in bytes.
# TYPE process_virtual_memory_max_bytes gauge
process_virtual_memory_max_bytes -1
# HELP promhttp_metric_handler_requests_in_flight Current number of scrapes being served.
# TYPE promhttp_metric_handler_requests_in_flight gauge
promhttp_metric_handler_requests_in_flight 1
# HELP promhttp_metric_handler_requests_total Total number of scrapes by HTTP status code.
# TYPE promhttp_metric_handler_requests_total counter
promhttp_metric_handler_requests_total{code="200"} 0
promhttp_metric_handler_requests_total{code="500"} 0
promhttp_metric_handler_requests_total{code="503"} 0
如果您看到上述输出,就可以开始使用 Prometheus 抓取 Go 度量数据了。
使用 client_golang
,您还可以对现有 Go 应用进行埋点,以发出自定义度量数据。要了解这些功能的更多信息,请参阅Go 客户端库 GitHub 仓库。
步骤 2:使用 Prometheus 抓取 Prometheus Go 客户端库的度量数据
现在 Prometheus Go 客户端库已在您的机器上运行,您可以配置一个 Prometheus 抓取任务来收集和存储 Prometheus Go 客户端库的度量数据。
将以下抓取任务配置添加到您的 prometheus.yml
配置文件中的 scrape_configs
部分
- job_name: go
static_configs:
- targets: ['localhost:2112']
将 localhost
替换为您运行 Go 应用的机器的 IP 地址。要了解更多关于配置 Prometheus 的信息,请参阅 Prometheus 文档中的配置。
如果您没有 prometheus.yml
配置文件,请使用您喜欢的文本编辑器创建一个简单的文件。打开您首选的文本编辑器,并粘贴以下 Prometheus 配置
global:
scrape_interval: 15s
scrape_configs:
- job_name: go
static_configs:
- targets: ['localhost:2112']
此配置告诉 Prometheus 每 15 秒抓取所有任务。唯一配置的抓取任务名为 go
,并定义了 localhost:2112
目标。默认情况下,Prometheus 将使用 HTTP 抓取 /metrics
端点。
保存并关闭文件。然后您可以使用以下命令运行 Prometheus
./prometheus --config.file=./prometheus.yml
将度量数据发送到 Grafana Cloud
要将 Go 度量数据从 Prometheus 发送到 Grafana Cloud,请在您的 prometheus.yml
配置文件中配置 remote_write
参数。要了解更多信息,请参阅 Grafana Cloud 文档中的度量数据 — Prometheus。要了解更多关于 remote_write
参数的信息,请参阅 Prometheus 文档中的remote_write
。
步骤 3:配置仪表盘
本快速入门指南包含一个仪表盘
- Go 运行时度量数据
要了解如何将此仪表盘导入 Grafana,请参阅 Grafana 文档中的导入仪表盘。
您可以在此处获取该仪表盘。
结论
在本快速入门指南中,您在 Linux 机器上安装并运行了一个最小化 Go 应用,该应用使用 client_golang
暴露 Prometheus 度量数据。然后,您配置了 Prometheus 来抓取 client_golang
暴露的 Go 度量数据。最后,您导入了一个 Grafana 仪表盘来可视化您的 Go 度量数据。
如果您使用 Grafana Cloud,可以通过使用 Grafana Cloud Agent 安装 Go 集成来跳过本指南中的所有步骤。要了解如何设置 Go 集成,请参阅Grafana Cloud 集成。
该仪表盘是使用 Go Prometheus Mixin 生成的。Mixins 是由领域专家策划和设计的仪表盘、记录规则和告警的可重用模板。要了解更多信息,请参阅 Go Mixin 仓库。
本页内容
Grafana Cloud 提供不断扩展的集成集,可在几分钟内快速启动并运行可观测性技术栈。内置于 Grafana Cloud Agent 中的 Go 集成会抓取重要的 Go 度量数据并将其推送到 Grafana Cloud。Agent 将抓取 client_golang
库暴露的度量数据,Grafana Cloud 将自动配置一个定制的 Grafana 仪表盘,用于可视化和处理这些数据。
要了解更多信息,请查看Grafana Cloud 文档。
工作原理
配置、安装、连接和维护 Prometheus 监控组件通常需要大量的领域知识。从设置到仪表盘和告警可能需要相当长的时间。作为 Grafana 的创建者,以及 Prometheus 和 Cortex 的核心贡献者,我们构建了简单的集成来抽象掉其中的一些工作,以便快速开始使用。工作原理:
- 注册(或登录)免费 Grafana Cloud 账户。
- 选择您想要观测的目标(不断扩展的目录)。
- 运行一行命令安装 Grafana Agent。Agent 会嵌入和预配置 Exporters 以暴露默认度量数据,并将其推送到 Grafana Cloud 度量数据后端。
- 瞧!您将看到定制的 Grafana 仪表盘,并可受益于合理的默认告警设置。
正在寻找不同的 Exporter 或集成?查看我们不断增长的流行组件集成库,如 MySQL、Postgres、Redis、Memcached 等。