事情本身不复杂,线索都在日志里。一个接口抖动导致同一问题每分钟告警一次,一天发了四百封。值班的同事把发件人加进了过滤规则,真出事那天谁也没看见。

第一反应是「所有级别都发邮件,没有分级」,验证下来不成立。

原因不止一个,得分开看。告警不去重,同一对象反复触发。少数情况下是没设静默期与升级策略。

不容易想到的是,阈值太敏感,正常抖动也会触发。

动手时先按对象聚合告警并设置静默期

alertmanager --config.file=alert.yml

同一对象的连续告警合并成一条

group_by: ['alertname', 'instance']

只有持续五分钟以上的异常才发信

for: 5m

剩下的就是统计一周告警量与真实故障比

grep -c 'ALERT' /var/log/alert.log

改完先别撤,确认这几项。告警量从每天四百降到十条以内,值班重新打开邮件,真实故障的响应时间缩短。

告警的价值在信噪比,宁可少发几条,也别让收件人学会忽略。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189