【发布时间】:2021-04-16 21:18:17
【问题描述】:
我有一个指标,它有一个名为 status 的标签,它告诉我作业是成功还是失败。
我想建立一个警报,告诉我是否连续两次失败,无论两次失败之间的时间如何。
【问题讨论】:
标签: prometheus prometheus-alertmanager promql
我有一个指标,它有一个名为 status 的标签,它告诉我作业是成功还是失败。
我想建立一个警报,告诉我是否连续两次失败,无论两次失败之间的时间如何。
【问题讨论】:
标签: prometheus prometheus-alertmanager promql
在 2 次连续失败时发出警报将非常棘手,因为 prometheus 本质上有 2 个不同的计时器用于抓取指标和评估警报,这些计时器并不总是同步的,here 解释说。您可以解决此问题的方法是根据抓取间隔调整查询并将 count_over_time 设置为抓取时间的两倍,这样如果您的 scrape_interval 为 15 秒查询,您始终会获得至少 2 个系列指标应该是这样的:
count_over_time(metric_name{status="fail"}[30s]) > 1
但即使这样也有一个缺点,如果评估和抓取计时器以特定方式同步,在过去的 30 年代里,你基本上会有 3 次抓取,它们可能是(失败>成功>失败),这也会触发警报.我认为这种情况不会经常发生,但您仍然应该考虑这种可能性
【讨论】: