什么时候使用 Pushgateway
Pushgateway 是一个中间媒介服务,可以让你从无法被抓取的工作负载中推送指标数据。有关详细信息,请参阅推送指标数据。
我应该使用 Pushgateway 吗?
我们仅推荐在某些限定情况下使用 Pushgateway。 盲目地使用 Pushgateway 代替 Prometheus 常规的抓取模型进行一般指标收集时,可能会陷入一些陷阱:
- 当通过单个 Pushgateway 监控多个实例时,Pushgateway 会成为单一故障点和潜在的瓶颈。
- 你会失去 Prometheus 通过
up
指标自动进行的实例健康监测(每轮抓取生成)。 - Pushgateway 永远不会丢弃推送的数据。除非你通过 Pushgateway 的 API 手动删除这些序列,否则它们将会永远被暴露给 Prometheus。
特别是当一个工作负载的不同实例通过instance
标签或其他类似方式在 Pushgateway 中区分其指标时,这一点尤为重要。即使发起实例重命名或移除,该实例的指标仍然会保留在 Pushgateway 中。这是因为 Pushgateway 的指标生命周期与向其推送指标的过程的生命周期根本不同。相比之下,Prometheus 的常规拉取式式监控是:当实例消失(无论是有意还是无意),它的指标都将自动随之消失。使用 Pushgateway 时,指标则不会自动消失,你需要手动删除所有过时的指标,或者自行自动化此生命周期同步流程。
通常,Pushgateway 唯一有效的使用场景是捕获服务级别的批处理作业的结果。所谓“服务级别”的批处理作业是指与特定主机或作业实例无语义关联的作业(例如,整个服务中删除一定数量用户的批处理作业)。这类作业的指标不应包含机器或实例标签,以将特定主机或实例的生命周期和指标分离。这降低了管理 Pushgateway 中过时指标的负担。详情参见批量作业监控的最佳实践。
替代策略
如果入站防火墙或 NAT 阻止了从目标抓取指标数据,请考虑将 Prometheus 服务器移除出网络屏障。我们通常建议在监控实例所在的同一网络上运行 Prometheus 服务器。否则,请考虑 PushProx,它允许 Prometheus 穿越防火墙或 NAT。
对于与主机相关的批量作业(如自动安全更新 cronjob 或配置管理客户端运行次数),可以使用 Node Exporter 的 Textfile Collector(文本文件收集器)而不是 Pushgateway 来暴露指标。
该文档基于 Prometheus 官方文档翻译而成。