活学活用Prometheus(六):Pushgateway详解与使用场景

首先讲一下Prometheus采集监控数据的方法,被监控系统(或者借助Exporter)对外暴露一个用于获取当前监控样本数据的HTTP访问地址,Prometheus通过轮询的方式定时从这个http地址中获取监控数据样本。采集一直运行的服务的监控指标肯定优先使用这种方式。但是除了一直运行的服务外,还有很多生命周期比较短的服务,例如一次性任务、定时任务等,这些服务暴露一个http地址显然是满足不了监控需求的。为了解决对这类服务的监控问题,Prometheus提供了Pushgateway。

什么是Pushgateway

Pushgateway是Prometheus的一个中间服务组件,并做为一个独立的工具存在。它主要用于Prometheus无法直接拿到监控指标的场景,如下:

被监控服务没有可抓取监控数据的端点,例如定时任务

被监控服务位于防火墙之后,Prometheus无法穿透防火墙

这些场景下,用户可以写一些自定义的监控脚本把先需要监控的数据发送给pushgateway, 然后Prometheus server从pushgateway拉取数据。

Pushgateway缺点

如果不是上面提到的场景,是不建议使用Pushgateway的,Pushgateway有以下几个缺点:

当通过单个Pushgateway监视多个实例时,Pushgateway既会成为单故障点,又回成为潜在的瓶颈

失去了对被监控系统运行状态的监控能力

被监控系统即使停止了,prometheus还会拉取到旧的监控数据,为了避免这种情况,需要调用 pushgateway 的api接口清除数据。

使用建议

Pushgateway只建议在被监控服务没有可抓取监控数据的端点的场景下使用,例如定时任务,跑批任务等生命周期短的任务。

针对被监控服务位于防火墙之后,Prometheus无法穿透防火墙这种场景,请考虑将 Prometheus 服务也部署到防火墙之后,将 Prometheus 服务部署在与被监控服务所在的网络内。如果实在不能将 Prometheus 部署在防火墙之后,可以在防火墙中给 Prometheus 服务舔加白名单。

你可能感兴趣的:(活学活用Prometheus,prometheus,devops,微服务,分布式,系统架构)