如何使用Pushgateway推送数据
更新时间:2026-06-12
概述
本文档介绍在业务监控数据源无法主动暴露接口供 Prometheus Server 拉取时,如何通过百度智能云 Prometheus 监控服务提供的托管 Pushgateway 实现数据中转推送,适用于边缘计算节点、临时任务等网络隔离场景。数据源将指标主动上报至 Pushgateway 网关,云端 Prometheus Server 周期拉取,从而保障监控数据连续性。
实现流程
1. 获取Pushgateway接入端点
通过百度智能云 Prometheus 监控服务控制台查看监控实例信息,获取 Pushgateway 地址与 Token。
2. 上报监控数据
通过开源 SDK 或 curl 命令将指标推送至 Pushgateway。原生 Pushgateway 协议仅支持基础的 Basic Auth,存在数据泄露风险。可通过控制台获取动态 Token,启用标准 JWT 鉴权协议进行身份核验。
操作步骤
步骤一:获取Pushgateway地址及token
- 已创建百度 Prometheus 监控实例,具体操作参考:创建实例
- 登录百度智能云控制台,选择“产品服务>容器> Prometheus 监控服务”。
- 单击对应监控实例跳转对应的实例信息页。
- 在监控实例页面复制 PushGateway 公网地址。
- 单击【生成 Token】 并复制或点击【更多 Token】 使用已有 Token。

步骤二:上报数据
导航路径:完成 产品服务->容器->Prometheus 监控服务 中的地址与 Token 获取后,在业务应用侧执行推送操作。
注意:
- 上报数据的 Header 里需要携带
InstanceId、Authorization字段。- 由于 Pushgateway SDK 支持的压缩格式与当前百度云 CProm 支持的格式不兼容,因此推荐使用
text/plain明文格式。
| 参数 | 必填 | 说明 |
|---|---|---|
InstanceId |
是 | 填写目标 Prometheus 监控实例 ID。 |
Authorization |
是 | 填写控制台生成或已有 Token,格式为 Bearer <Token>。 |
Content-Type |
是 | 建议使用 text/plain; charset=utf-8; version=0.0.4。 |
使用开源 SDK 推送数据(Go 代码示例)
Go
1// ...
2 customTransport := &customHeaderTransport{
3 base: client.Transport,
4 headers: map[string]string{
5 "Authorization": "Bearer <Token>", // 替换为控制台实际的 Token
6 "InstanceId": "<监控实例 ID>", // 替换为控制台实际的监控实例 ID
7 },
8 }
9// ...
10
11func main() {
12 // 创建自定义的 HTTP 客户端,需加入鉴权信息
13 url := "<Pushgateway 地址>/import/"
14
15 customClient := NewCustomClient()
16 registry := prometheus.NewRegistry()
17
18 completionTime := prometheus.NewGauge(prometheus.GaugeOpts{
19 Name: "<指标名称>",
20 Help: "The timestamp of the last successful completion of a Pushgateway push",
21 })
22
23 registry.MustRegister(completionTime)
24 const timeStep = 5
25
26 pusher := push.New(url, "<任务名称>").
27 Gatherer(registry).Client(customClient).
28 Grouping("<标签名>", "<标签值>").
29 Format(expfmt.NewFormat(expfmt.TypeTextPlain))
30 for {
31 completionTime.SetToCurrentTime()
32 if err := pusher.Push(); err != nil {
33 fmt.Println("Could not push completion time to PushGateway: ", err)
34 return
35 }
36 time.Sleep(timeStep * time.Second)
37 }
38}
使用 curl 命令推送数据
Bash
1echo "<指标名称> <指标值>" | curl -v \
2 --data-binary @- \
3 -H "InstanceId: <监控实例 ID>" \
4 -H "Content-Type: text/plain; charset=utf-8; version=0.0.4" \
5 -H "Authorization: Bearer <Token>" \
6 "<Pushgateway 地址>/import/metrics"
步骤三:结果验证
绑定 Grafana 服务
导航路径:产品服务->容器->Prometheus 监控服务
- 在“监控实例”列表中,定位目标实例,单击 【绑定Grafana服务】。
- 在弹窗中选择目标 Grafana 实例,单击 【确认】。
- 绑定完成后,实例列表中的 Grafana服务 列会显示已绑定的 Grafana 服务名称,操作按钮变为 【解绑Grafana服务】。
在 Grafana 中查询指标
导航路径:产品服务->容器->Prometheus 监控服务
- 单击已绑定的 Grafana 服务名称,进入 Grafana。
- 登录后,在左侧导航栏选择 【Explore】。
- 在 数据源 下拉列表中选择目标 CProm 数据源。
- 在查询框中输入目标指标表达式,设置时间范围后执行查询。
- 查询结果返回目标指标值,表示 Pushgateway 指标已成功写入并可被检索。
若新绑定实例暂未出现在数据源列表,等待数据源同步完成后刷新页面。若刚完成推送后暂未查询到结果,可等待 Prometheus Server 完成周期拉取后再次查询。

评价此篇文章
