如果 Prometheus/Pushgateway 有旧数据,Grafana 会发出警报
Grafana to alert if Prometheus/Pushgateway have old data
我有一些客户将他们的指标推送到 Pushgateway, which then gets scraped by Prometheus. Finally I use Grafana 仪表板 - 我猜这不是一个太奇特的设置。
让我感到困惑的是,当其中一个客户端停止工作并且不再推送其指标时,Pushgateway 将进一步向 Prometheus 提供它收到的最后一个值,而 Grafana 将愉快地显示一条水平线。
但是,如果指标太旧,我更愿意收到警报。如何实现?
Prometheus 使用 time() 提供当前时间,它提供自 1970 年 1 月 1 日 UTC 以来的秒数。
Pushgateway 为每个作业保留一个指标:push_time_seconds,它显示自 1970 年 1 月 1 日 UTC 以来最后一次推送的时间(以秒为单位)。
所以查询
time() - push_time_seconds
将显示您每 exported_job 的年龄(以秒为单位)。如果值超过定义的阈值,现在很容易进一步过滤和报警。对于预计每天 运行 一次的工作(因此他们的指标预计永远不会超过 24 小时),我在 Grafana 中将阈值配置为 25 小时(90000 秒)并且它工作得很好。
我有一些客户将他们的指标推送到 Pushgateway, which then gets scraped by Prometheus. Finally I use Grafana 仪表板 - 我猜这不是一个太奇特的设置。
让我感到困惑的是,当其中一个客户端停止工作并且不再推送其指标时,Pushgateway 将进一步向 Prometheus 提供它收到的最后一个值,而 Grafana 将愉快地显示一条水平线。
但是,如果指标太旧,我更愿意收到警报。如何实现?
Prometheus 使用 time() 提供当前时间,它提供自 1970 年 1 月 1 日 UTC 以来的秒数。 Pushgateway 为每个作业保留一个指标:push_time_seconds,它显示自 1970 年 1 月 1 日 UTC 以来最后一次推送的时间(以秒为单位)。
所以查询
time() - push_time_seconds
将显示您每 exported_job 的年龄(以秒为单位)。如果值超过定义的阈值,现在很容易进一步过滤和报警。对于预计每天 运行 一次的工作(因此他们的指标预计永远不会超过 24 小时),我在 Grafana 中将阈值配置为 25 小时(90000 秒)并且它工作得很好。