# alertmanager.yml
group_by: ['alertname', 'instance']
group_wait: 30s
group_interval: 5m
repeat_interval: 4h

半夜磁盘抖动了一次,企业微信收到两千多条 firing,同一条 InstanceDown 来回刷,值班手机一晚上没停过。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,规则没写 for 持续时间,group_by 只按告警名分组,repeat_interval 又设成 1 分钟,同一批实例各推各的,抖动一秒就放大成一场风暴。

「Prometheus 告警风暴」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。改完隔一天再看一次,当场正常不代表能稳住。

测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。

日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。

处理上按这个顺序:给每条规则加 for 让瞬时抖动自己消掉;group_by 换成告警名加实例的组合;repeat_interval 拉到四小时 维护窗口另设静默。

改完只确认一件事:人为制造一次抖动只收到一条汇总通知,恢复后也不再补发一堆。

作者 9823189