
指标告警降噪报警多了真正的问题反而没人看一、告警不是越多越安全后端系统上了监控后常见问题是告警太多。CPU 高了报接口慢了报错误率抖一下也报。短期看很负责长期会把团队训练成忽略告警。报警多了真正的问题反而没人看。告警降噪不是降低标准而是提高信号质量。一个好告警应该告诉你影响是什么、范围多大、要不要现在处理、第一步查哪里。只喊指标异常价值很低。我待过一个团队监控系统里配置了 200 条告警规则日均告警 300 条。值班同事的处理方式是每天早上花半小时批量确认真正需要处理的反而是从其他渠道业务反馈、用户投诉发现的。警报系统变成了确认就行的烦人通知而不是值得信赖的故障信号。后来我们花了两个月把告警从 200 条砍到 40 条去掉了所有单实例抖动、单接口短暂异常、非用户影响的阈值告警。剩下的 40 条里每一条触发都意味着有用户正在受影响值班处理率从 5% 提升到 90%。告警降噪的本质不是少发而是让每条告警都值得被处理。二、告警要按用户影响和持续时间分级瞬时抖动不一定要叫人。持续异常、影响用户、错误预算消耗才更值得高等级告警。flowchart TD A[指标异常] -- B{是否影响用户} B --|否| C[记录观察] B --|是| D{是否持续} D --|否| E[低优先级通知] D --|是| F{是否消耗错误预算} F --|是| G[高优先级告警] F --|否| H[普通告警]分级的目标是让高优先级告警真的值得立刻看。P0/P1 告警应该能叫醒人P2/P3 告警可以工作日处理。如果 P0 和 P3 都被同样对待那所有告警都是噪音。三、告警规则要写清楚窗口和阈值下面是一个规则结构示例。重点是表达窗口、阈值和处理建议。name: api_error_rate_high expr: sum(rate(http_5xx_total[5m])) / sum(rate(http_requests_total[5m])) 0.02 severity: P1 for: 10m runbook: runbooks/api-error-rate.md summary: 5xx 错误率持续超过 2%for很重要。没有持续时间短抖动会不断打扰人。Runbook 也要能打开不要只写一个摆设链接。告警规则还要做标签区分。同一错误率指标按接口、按租户、按机房分别设置阈值。核心支付接口错误率 0.5% 就该报警管理后台 5% 才需要关注。不加标签一刀切的规则要么对核心太宽松要么对边缘太严厉。四、降噪要合并同根因告警数据库挂了可能引发接口错误、队列积压、任务失败、延迟升高。如果每个指标都单独报警会炸出一屏。告警系统应按服务依赖和时间窗口合并提示可能根因。还要设置静默规则。发布、扩容、压测期间一些告警可能预期出现。静默必须有时间范围和负责人不能永久关闭。见过静默开到年底也没人关的告警等于那条告警已经失效但规则还在——迟早有人会忘记它为什么不报。最后告警要复盘。每次被忽略的告警都要问是阈值不合理文案不清楚还是责任人不对告警系统不复盘噪声只会越来越多。告警还要区分症状和根因。接口 5xx 是症状数据库连接耗尽可能是根因。症状告警可以触发响应根因告警可以辅助定位。两者都需要但通知方式要不同。否则同一次事故会产生十几条看似不同的报警。还要控制恢复通知。告警恢复后要通知但不要刷屏。可以把触发和恢复合并成一个事件时间线记录持续时间、影响服务和处理人。持续时间比单次触发更能说明问题严重度。告警文案里要放下一步动作。比如查看 runbook 第 2 步先确认最近发布和数据库连接数。没有动作建议的告警很容易变成群里的噪声背景音。低优先级异常可以进日报或周报。不是所有问题都要实时打扰人但也不能完全丢掉。降噪不是静音而是把信息放到合适的通道里。告警负责人要明确到服务而不是只写一个大群。大群没人负责最后就是大家都看见没人处理。每条 P0/P1 告警都应该有 owner、升级路径和超时升级规则——值班 5 分钟没响应升级到二线30 分钟没处理升级到 Leader。告警阈值也要定期校准。业务量变化、架构升级、缓存策略调整后旧阈值可能不再合适。告警配置如果几年不动大概率已经偏离真实风险。建议每季度跑一次告警审计检查被忽略率最高、触发频率最高但从未真实故障的规则。最后告警系统自身也要监控。通知通道失败、规则计算延迟、指标采集断流都会让事故静悄悄发生。监控系统不是天然可靠也需要被监控。五、总结指标告警降噪的目标是提高信号质量。按用户影响、持续时间和错误预算分级规则写清窗口、阈值和 Runbook同根因告警要合并。告警少一点不可怕可怕的是真正出事时没人相信告警。好的告警系统不是什么都能报而是报了就要有人处理。