首页 > 解决方案 > 在查询中插入缺失的 Prometheus 值

问题描述

我的 IoT 设备被外部 Prometheus 代理抓取,该代理将数据上传到 Grafana Cloud。

它输出两个有趣的指标:uptime一个是自设备启动以来的 CPU 滴答数,然后last_update是当前时间值(通过 NTP 检索)。

我正在寻找的是一个跟踪自上次更新以来经过的时间的指标,因此我可以在设备一小时内未报告时设置警报。我以为我可以做类似的事情:

time() - last_update{job="charger"}

这可以正常工作,并显示这两个值之间存在约 2 秒的偏差。但是在数据丢失的瞬间没有数据,所以我正好错过了我有兴趣获得的东西。正是在这段时间内,该值应该上升,并最终触发警报阈值。

当没有数据时,还可以选择使用upwhich 确实具有价值0,但我不确定如何使其工作。

关于如何实现此查询的任何想法?

对此类问题的其他答案(例如:关于缺少系列/数据的警报)侧重于更新抓取配置,而不是更新查询。

谢谢,

-mk

标签: prometheusgrafana

解决方案


如果您只想在过去 1 小时内根本没有报告并且您的指标“上升”时才发出警报,我会使用如下查询:

sum_over_time(up[1h]) == 0

你也可以用它来调音。<0.5 使其在一半时间下降时发出警报或将其设置为 <1 以便即使它失败一次也会触发,


推荐阅读