解决告警疲劳关键在于让每条告警都“值得看”,需通过精准降噪(动态基线+时间窗口过滤)、聚合同类、抑制衍生、分级响应四步闭环实现。

解决告警疲劳,关键不是少发告警,而是让每条告警都“值得看”。核心在于过滤噪音、聚合同类、抑制衍生、分级响应——四步闭环缺一不可。
精准降噪:告别静态阈值误报
云原生环境里,用“CPU > 80%”这种固定规则,等于每天定时制造干扰。真实业务有峰谷(如大促流量翻倍)、有抖动(GC导致1秒内存飙升),静态阈值必然失灵。
- 改用动态基线:Prometheus + Prometheus Alertmanager 配合 VictoriaMetrics 或内置的
predict_linear()函数,自动学习过去7天同一时段的正常波动范围,告警只在显著偏离基线时触发 - 加时间窗口过滤:避免瞬时毛刺,例如写成
avg_over_time(node_cpu_seconds_total{mode="idle"}[5m]) ,而非单点采样 - 排除已知低风险场景:比如对突发性能型ECS实例,跳过CPU steal time告警;对只读副本数据库,放宽连接数告警阈值
智能分组:把10条同类告警压成1条
当user-api的3个Pod同时内存超标,你不需要收到3条钉钉消息——你需要一条含实例列表、趋势图和一键跳转链接的通知。
- Alertmanager中配置
group_by: ['alertname', 'service', 'environment'],确保同服务、同环境、同类型告警自动归并 - 设置合理等待时间:
group_wait: 30s(收集新告警)、group_interval: 5m(同组再次通知间隔) - 在Grafana告警面板中嵌入
{{ $value | humanizePercentage }}和{{ $labels.instance }},让每条通知自带上下文,减少二次查证
依赖抑制:阻断告警链式爆炸
网络分区了,所有节点失联告警会瞬间刷屏;但真正该处理的,只有网络问题本身。低级告警必须被高级故障“压制”。
- 在
alertmanager.yml中定义抑制规则:当NetworkPartition告警触发时,自动抑制所有InstanceDown和NodeExporterDown - 示例配置:
inhibit_rules:
- source_match:
alertname: NetworkPartition
severity: critical
target_match_re:
alertname: InstanceDown|NodeExporterDown
- 注意:抑制规则需双向验证,避免误压。建议先在测试环境开启
--log.level=debug观察匹配行为
分级响应:让P0故障秒达,P2预警静默归档
所有告警一个铃声,等于没有铃声。必须按影响定级,并绑定不同通道、不同超时、不同责任人。
- 定义三级标准:
– P0(灾难):全站不可用、支付中断、核心DB宕机 → 电话+短信+钉钉强提醒,1分钟内响应
– P1(严重):单服务降级、磁盘95%、连接池耗尽 → 钉钉+企业微信,15分钟内确认
– P2(预警):CPU持续85%、SWAP启用、inode使用率>80% → 邮件汇总,每日早会同步 - Alertmanager路由支持标签匹配:
match: {severity="critical", team="payment"}直接路由至支付组PagerDuty - 所有通知模板强制携带:
instance_id、availability_zone、近1小时指标折线图(Grafana snapshot link)










