Alertmanager为何按(group_interval+repeat_interval)时长重复发送通知而非repeat_interval?
Alertmanager重复通知间隔异常问题分析与解决
问题原因解释
Alertmanager的通知发送逻辑中,repeat_interval的计时起点是group_interval冷却期结束的时间,而非初始通知发送的时间。也就是说,告警组发送完初始通知后,会先进入group_interval的冷却阶段——这段时间内,即使repeat_interval时长到了,也不会触发重复通知。只有等group_interval结束后,才会开始计算repeat_interval,最终实际的重复间隔就变成了group_interval + repeat_interval。
这个逻辑原本是为了避免同一告警组因新增告警频繁发送通知,但当分组内无新告警、告警持续活跃时,就会导致重复通知间隔超出预期。
解决方案
要实现仅按repeat_interval重复发送持续活跃告警的通知,可通过以下两种方式调整配置:
方案1:将group_interval设为远小于repeat_interval的值
如果你的告警分组不会频繁新增告警,可把group_interval设置为极小值(比如和group_wait一致,或1分钟),让group_interval的冷却期几乎不影响repeat_interval的计时。示例配置:
group_wait: 10s group_interval: 1m repeat_interval: 2h
此时实际重复间隔会接近配置的repeat_interval,因为1分钟的group_interval相对于2小时可忽略不计。
方案2:通过路由拆分单独配置特定告警
如果部分告警需要独立的间隔规则,可利用Alertmanager的路由配置,将这类持续活跃的告警单独路由到子路由,在子路由中设置极小的group_interval,其他告警保持原有配置。示例:
route: group_wait: 10s group_interval: 2h repeat_interval: 2h routes: - match: alertname: "PersistentHighLoad" # 匹配特定持续活跃告警 group_interval: 1m repeat_interval: 2h
注意事项
- group_interval不能设为0,否则会导致Alertmanager异常,最小建议设置为10s或1m。
- 调整配置后需重启Alertmanager生效,可通过Alertmanager的
/alerts端点观察告警状态与通知发送时间,验证配置效果。
内容的提问来源于stack exchange,提问作者Aruna Thuse
相关产品推荐
相关产品推荐

