为什么告警总在重复发,有时不重复发,怎么避免
告警会在两种情况下重发
- 告警 group 列表中告警有变更(增加或者减少)
- 告警持续到 repeat_interval 配置的重发时间。
告警 group 列表理解:在 alertManager 中,同 group 的告警,在 group_interval 的时间段内触发,会聚合到一个列表,如图一。当 prometheus 下次扫描告警规则时,发现告警列表中的告警(新增/恢复),才会触发告警。
比如一个 group 的告警 A, B,C 在 30s 触发,聚合到一个告警列表发送。在下次扫描规则时,A,B,C 持续异常,且没有别的告警,不会发送告警列表;如果存在新告警D,告警列表会加入 D,此时告警列表存在 A, B, C, D,才会发送告警(原列表中告警恢复也会发送)。
如果告警 A,B,C 一直异常,也没有新增告警,直到 repeat_interval 的间隔时间,也会发送。
解决办法
- group 将易变的告警和容易持续异常的告警分到不同的组,发送时组内就不会存在一直是异常的告警。
- 快速把告警修好。
group_wait: 10s # 分组等待的时间
group_interval: 30s # 上下两组发送告警的间隔时间。比如有同组的告警A和告警B,如果A触发告警,会等待30s,如果B在等待时间内也出发告警,会合并在一起发送,如果告警A 触发两次,告警A 发送后,30s 之后在发告警A第二次触发
repeat_interval: 12h # 重发间隔
图1