告警会在两种情况下重发
告警 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_wait: 10s # 分组等待的时间
group_interval: 30s # 上下两组发送告警的间隔时间。比如有同组的告警A和告警B,如果A触发告警,会等待30s,如果B在等待时间内也出发告警,会合并在一起发送,如果告警A 触发两次,告警A 发送后,30s 之后在发告警A第二次触发
repeat_interval: 12h # 重发间隔
图1