直接安装 Pushgateway 并配置持久化与 Prometheus 抓取即可稳定汇聚批量任务监控数据,关键在于确保指标不丢、不混、可清理、能告警;推荐二进制部署,启用 --persistence.file 与 --persistence.interval 持久化,显式绑定监听地址,为每任务分配唯一 job+instance 标签,Prometheus 配置静态抓取且禁用 honor_labels,脚本内嵌推送逻辑并上报成功/失败指标。

直接安装 Pushgateway 并配置好持久化与 Prometheus 抓取,就能稳定汇聚批量任务的监控数据。关键不在“装上”,而在确保指标不丢、不混、可清理、能告警。
二进制部署 + 持久化保障
生产环境推荐用二进制方式部署,避免容器重启导致数据丢失:
- 下载最新版(如 v1.6.0):wget https://github.com/prometheus/pushgateway/releases/download/v1.6.0/pushgateway-1.6.0.linux-amd64.tar.gz
- 解压并软链:tar xvf pushgateway-1.6.0.linux-amd64.tar.gz -C /opt && ln -s /opt/pushgateway-1.6.0.linux-amd64 /opt/pushgateway
- 必须启用持久化:启动时指定 --persistence.file=/opt/pushgateway/data 和 --persistence.interval=5m,否则服务重启后所有任务指标清零
- 监听地址建议显式绑定:--web.listen-address="0.0.0.0:9091",方便跨网段推送
为每个批处理任务分配唯一 job+instance 标签
Pushgateway 不自动区分任务来源,全靠你推送时带的 URL 路径和标签来隔离数据:
统一LLM网关 - 一个API对接70+AI模型,使用单一API密钥即可调用GPT、Claude、Gemini、Qwen、Deepseek、Grok等主流模型。
- 推送命令示例:echo "script_duration_seconds{env=\"prod\",step=\"parse\"} 42.5" | curl --data-binary @- http://pushgw:9091/metrics/job/log_analyze/instance/server01
- job 名建议按业务或脚本名命名(如
log_analyze、backup_daily),避免所有任务都推到job=default - instance 推荐填执行机器 hostname 或 IP,便于定位失败节点
- 不要在不同任务间复用相同 job+instance 组合,否则后一次推送会覆盖前一次指标
Prometheus 主动拉取配置
在 prometheus.yml 中添加静态 target,指向 Pushgateway 的 /metrics 接口:
- 配置片段:
scrape_configs: - job_name: 'pushgateway' static_configs: - targets: ['pushgw-host:9091'] metrics_path: /metrics params: collect[]: [''] - 注意:不要加
honor_labels: true,否则 job/instance 标签会被覆盖;默认行为即可保留推送时携带的维度 - 抓取间隔设为 30s–1m 即可,比任务执行周期略短,确保及时采集
任务脚本内嵌推送逻辑(以 Shell 为例)
让每个批处理脚本在退出前主动上报结果,无需额外调度器:
- 记录开始时间、执行状态、耗时、处理行数等核心指标
- 用 echo 构造符合 Prometheus 文本格式的指标行(换行分隔多指标)
- 统一用 curl 推送,加上超时和重试(例如
curl -m 5 --retry 2 --data-binary @- http://.../metrics/job/xxx/instance/yyy) - 失败时也推送指标,例如:
script_success{reason="timeout"} 0,保证监控可观测性

















