Grafana提醒Prometheus / Pushgateway是否有旧数据

问题描述

我有一些客户端将其指标推送到Pushgateway,然后被Prometheus抓取。最后,我将Grafana用于仪表板-我猜不是太奇特的设置。

让我感到困惑的是,当其中一个客户端停止工作并且不再推送其指标时,Pushgateway将进一步向Prometheus提供接收到的最后一个值,而Grafana会愉快地显示一条水平线。

但是,如果指标太旧,我希望收到警报。如何做到这一点?

解决方法

Prometheus使用time()提供当前时间,该时间提供自1970年1月1日UTC以来的秒数。 Pushgateway会为每个作业保留一个指标:push_time_seconds,它显示自1970年1月1日UTC以来最后一次推送的时间(秒)。

所以查询

time() - push_time_seconds

将以秒为单位显示您拥有的每个export_job的年龄。现在,如果该值超过定义的阈值,则很容易进一步过滤和报警。对于预计每天运行一次的作业(因此,它们的指标永远不会超过24小时),我在Grafana中将阈值配置为25小时(90000秒),它就像一个魅力。