Pushgateway 是 Prometheus 生态中的一个中间服务组件,以独立工具形式存在,主要用于解决 Prometheus 无法直接获取监控指标的场景,弥补其定时拉取(pull)模式的不足。
其用途如下:
- 突破网络限制:当监控源位于防火墙之后,Prometheus 无法直接穿透防火墙拉取数据时,可部署 Pushgateway。监控源将数据主动推送至 Pushgateway,再由 Prometheus 定时从中拉取,实现对防火墙后资源的监控。例如企业内部安全隔离网络中的重要业务系统,可通过此方式纳入监控体系。
- 适配特殊服务监控:对于没有可抓取监控数据端点的目标服务(如定时任务、跑批任务等生命周期较短的服务),难以持续提供稳定的供 Prometheus 拉取数据的接口。此时可编写自定义监控脚本,将相关监控数据(如任务执行状态、耗时等)发送给 Pushgateway,再由 Prometheus 采集。例如月末执行一次的财务数据统计任务,可在运行时通过此方式上报监控指标。
- 数据汇总与统一采集:在需要汇总不同来源监控数据的场景中,Pushgateway 可充当统一收集点。各个监控源将数据推送至 Pushgateway 后,Prometheus 只需从这里定时拉取,便于对分散数据进行集中管理和监控。例如多个微服务各自产生不同类型的监控指标,可先汇总到 Pushgateway,再由 Prometheus 采集分析。
需注意,Pushgateway 存在一定局限性:单个实例监视多个目标时可能成为单点故障和性能瓶颈;被监控服务下线后,Prometheus 仍可能拉取到旧数据,需手动清理。因此,它通常作为 Prometheus 常规拉取模式的补充方案,用于解决特定场景下的数据采集难题。