首页/云/可观测性速查/Pushgateway 使用要点与清理
Prometheus 与采集64 条

Pushgateway 使用要点与清理

Pushgateway 保存推送的指标供 Prometheus 抓取;分组由 job 加任意标签组成,同分组重复推送会覆盖;任务结束或下线后要主动清理。

可观测性速查云更新于 2026-10-13

Pushgateway 是什么

Pushgateway 是 Prometheus 体系里的中转站:短生命周期任务在退出前把指标推上来,Prometheus 再按常规方式抓取它。它解决的是「任务跑完就消失,抓取来不及」的问题,但代价是数据不会自己过期——任务下线后旧值会一直留在网关里,看起来像是当前状态。因此配套的清理动作不是可选项,而是使用它的前提。

基本信息

适用平台Prometheus 生态,默认端口 9091
分组标识job 加任意标签,构成指标的分组键
覆盖行为同一分组重复推送会整体覆盖上次的值
关键要求任务结束或实例下线后必须主动清理

典型使用场景

  • 批处理任务:每日跑一次的 ETL 上报耗时与处理行数
  • 备份校验:备份脚本推送成功标记与文件大小
  • 脚本巡检:临时巡检脚本推送检查结果
  • 外部依赖观测:无法被抓取的第三方指标先写入再抓取
  • CI 流水线:把部署结果与时长推送给监控

推送与清理

推送与清理
# 推送:按 exposition 文本格式上传,路径中的 job 与 instance 构成分组
printf 'etl_duration_seconds 42.5\netl_rows_total 120034\n' | \
  curl --data-binary @- http://127.0.0.1:9091/metrics/job/etl/instance/worker-1

# 删除整个分组(任务结束后执行,避免残留旧值)
curl -X DELETE http://127.0.0.1:9091/metrics/job/etl/instance/worker-1

# 校验推送是否成功
curl -s http://127.0.0.1:9091/metrics | grep etl_duration_seconds

关键点与做法

事项做法写错的后果
分组标签标签要能唯一区分实例多实例互相覆盖,数据张冠李戴
抓取配置建议开启 honor_labels推送标签被覆盖,无法区分来源
清理时机任务结束或下线时删除分组旧值长期留存被当成当前状态告警
失败处理推送失败要重试并记录指标缺失但无人察觉
指标命名带业务前缀,如 etl_与其它来源指标重名冲突
Pushgateway 里的数据不会自动过期,也不会被自动清理;把它当成「状态的快照」来管理,任务相关指标必须配清理动作。
能用拉取就别用推送:常驻服务直接用指标暴露端点更可靠;Pushgateway 只适用于无法被抓取的短任务,滥用会让监控语义变模糊。

易错点

  • 任务下线后不清理分组,旧值长期留在网关里,产生「任务已停但仍在告警」的假象
  • 多个实例共用同一分组标签推送会互相覆盖,指标值在多个来源之间反复跳变
  • 抓取端未开启 honor_labels 时会用抓取配置里的标签覆盖推送标签,无法再区分实例
  • 把 Pushgateway 用于常驻服务会丢失实例存活语义,服务挂掉后指标仍显示最后一次的旧值

数据来源与参考

  • Pushgateway 项目文档(github.com/prometheus/pushgateway)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌