将 Prometheus 警报条件与 "or" 相结合?

Combine Prometheus alert conditions with "or"?

我知道 Prometheus 在警报语句中支持 andunlesshttps://www.robustperception.io/combining-alert-conditions/

是否支持or?我想编写一个警报,在时间序列超过阈值或在给定时间段内不存在时触发。

是的,or 是 Prometheus 算子。参见 the docs

Prometheus 支持 or 操作,正如 中已经指出的那样。当时间序列 foo 超过给定的 threshold 或时间序列 food 期间不存在时,必须使用以下查询发出警报:

foo > threshold or absent_over_time(foo[d])

参见 absent_over_time() docs。请注意 absent_over_time() 没有按预期工作,例如如果有多个名称为 foo 的时间序列,并且只有一个时间序列在 d 期间没有新样本,则不会 return non-empty 结果。基本上,只有在只有一个匹配的时间序列时,它才会按预期工作。

Prometheus 不提供创建通用警报的功能,该功能可以检测多个匹配时间序列在给定持续时间内没有新样本的时间序列。然而,VictoriaMetrics - see lag()中存在这样的功能。例如,以下查询警报(例如 returns non-empty 结果)具有 foo 名称的时间序列,超过给定的 threshold 或没有新样本在最后 5 分钟内,而他们在过去一小时内至少有一个样本:

foo > threshold or lag(foo[1h]) > 5m