首页 > 解决方案 > prometheus alertmanager 中基于时间的警报

问题描述

我想在 Prometheus alertmanager 中设置一个必须在给定时间之间触发的警报例如:要在 09:15 到 15:30 之间检查的条件

标签: prometheusprometheus-alertmanager

解决方案


Prometheus 中的警报会定期评估,您无法真正为它们设置时间表。

我认为可以通过一些 PromQL 功夫来实现:

scalar(clamp(hour() > 9 and hour() < 15, 1, 1)) * <alert_promql>

hour() > 9 and hour() < 15 根据一天中的小时定义时间范围(您也可以添加分钟)

clamp(..., 1, 1)确保该值为 1 而不是别的

*- 这就是魔法发生的地方。如果我们从前一个函数中得到任何值,它将为 1,因此乘以 1 对第二个表达式没有影响。否则,第一个表达式没有级数,所以乘法无论如何都不会返回任何结果。


推荐阅读