如何使用Pushgateway推送数据
更新时间:2025-05-08
概述
当您的业务监控数据源无法主动暴露接口供Prometheus Server拉取时(如边缘计算节点、临时任务等网络隔离场景),可通过百度智能云Prometheus监控服务提供的托管Pushgateway实现数据中转推送。数据源将指标主动上报至Pushgateway网关,云端Prometheus Server将周期拉取,保障监控数据连续性。
实现流程
1. 获取Pushgateway接入端点
通过百度智能云 Prometheus 监控服务控制台,查看监控实例信息,获取Pushgateway地址。
2. 上报监控数据
- 通过使用开源SDK或者curl命令实现数据推送
- 原生Pushgateway协议仅支持基础的Basic Auth,存在数据泄露风险。可通过控制台获取动态 Token,一键启用标准 JWT 鉴权协议,实现身份核验。
操作步骤
步骤一:获取Pushgateway地址及token
- 已创建百度 Prometheus 监控实例,具体操作参考:创建实例
- 登录百度智能云控制台,选择“产品服务>容器> Prometheus 监控服务”。
- 单击对应监控实例跳转对应的实例信息页。
- 在监控实例页面复制 PushGateway 公网地址。
- 单击【生成 Token】 并复制或点击【更多 Token】 使用已有 Token。
步骤二:上报数据
注意: 1.上报数据的 Header 里需要携带 InstanceId、Authorization 字段。
2.由于 Pushgateway SDK 支持的压缩格式与当前百度云 CProm 支持的格式不兼容,因此,推荐使用 text/plain 明文格式。
使用开源SDK推送数据(go 代码示例)
Plain Text
1// ···
2 customTransport := &customHeaderTransport{
3 base: client.Transport,
4 headers: map[string]string{
5 "Authorization": "Bearer eyJhbGc****uKx9aA", //替换为控制台实际的 auth token
6 "instanceId": "cprom-xxxxxxxx", //替换为控制台实际的 auth token
7 },
8 }
9// ···
10func main() {
11 // 创建自定义的HTTP客户端,需加入鉴权信息
12 url := "https://cprom.bj.baidubce.com/import/"
13
14 customClient := NewCustomClient()
15 registry := prometheus.NewRegistry()
16
17 completionTime := prometheus.NewGauge(prometheus.GaugeOpts{
18 Name: "test_completion_timestamp_seconds",
19 Help: "The timestamp of the last successful completion of a pushGateway.Push",
20 })
21
22 registry.MustRegister(completionTime)
23 const timeStep = 5
24
25 pusher := push.New(url, "test").
26 Gatherer(registry).Client(customClient).
27 Grouping("key1", "test1").
28 Format(expfmt.NewFormat(expfmt.TypeTextPlain))
29 for {
30 completionTime.SetToCurrentTime()
31 if err := pusher.Push(); err != nil {
32 fmt.Println("Could not push completion time to PushGateway: ", err)
33 return
34 }
35 time.Sleep(timeStep * time.Second)
36 }
37}
使用curl命令推送数据
Plain Text
1echo "try_metric 15.14" | curl -v \
2 --data-binary @- \
3 -H "InstanceId: cprom-xxxxxxxx" \
4 -H "Content-Type: text/plain; charset=utf-8; version=0.0.4" \
5 -H "Authorization: Bearer eyJhbGc****uKx9aA" \
6 "http://cprom.bj.baidubce.com/import/metrics"
步骤三:结果验证
将对应CProm实例与Grafana进行绑定,在Grafana左侧导航栏 Explore 下即可查询对应指标。