4. 告警设计原则:告警过多过少问题、告警分级归纳

告警设计,说白了就是门平衡的艺术。

太多,工程师会麻木,真正出问题时反而没人看。太少,等发现故障,用户早就投诉上门了。

我见过很多团队,上来就堆几百条告警规则。结果呢?半夜三点收到的短信,一半是"CPU使用率超过50%"这种毫无意义的噪音。最后,所有人直接把告警机器人拉黑,眼不见为净。

所以这一章,我们专门聊聊怎么把告警数量控制在合理区间,以及如何给告警分个三六九等。

4.1 告警过多:最常见的慢性毒药

告警过多,比没有告警更可怕。

为什么?因为它会摧毁信任。

你想想看,连续两周每天收到100条告警,但全都是虚惊一场。到了真正出事那天,你还会认真地一条条看吗?大概率不会。

我个人习惯用一个词来评估告警质量——信噪比。

有效告警是信号,无效告警是噪音。信噪比太低,整个告警系统就等于废了。

告警过多的典型表现:

  • 同一个指标在短时间内反复触发、恢复、再触发(告警震荡)
  • 阈值设置过紧,稍微波动就报警(比如磁盘使用率设到80%)
  • 没有区分业务高低峰期,低谷期产生大量无效告警
  • 监控项与业务脱节,采集了一些"没人看得懂"的指标

我在项目中遇到过最夸张的例子:某团队对一台测试服务器设置了40条告警规则,包括"系统负载超过0.5"。结果这台机器平时负载就是0.3~0.5之间波动,每周生成800多条告警。最后是谁在关?没人关,全都泡在告警池子里发臭。

避坑指南:我曾经接手过一个项目,第一件事就是拉出所有告警规则的触发次数排行。排在前10的,80%直接删掉或合并。一个月后,团队人均告警处理量下降70%,但真正的问题一次都没漏。

4.2 告警过少:看起来省心,实则埋雷

告警过多不行,那少设几条就安全了吧?

也不对。

告警过少,短期来看运维很"清净"。但代价是——你永远不知道系统什么时候会出问题。

我自己的经验是,告警过少通常出在两个地方:

  1. 指标采集不全——只监控了CPU和内存,忽略了磁盘IO、网络丢包率、连接池使用率
  2. 阈值设得太松——告警阈值比实际业务承受极限低很多,等告警来的时候,服务已经挂了

举个例子。磁盘使用率告警设到98%才触发。等到98%的时候,日志写不进去了,数据库提交卡住了,用户端直接报500。你看,告警确实发了,但发得太晚,等于没发。

告警数量 团队状态 真实风险
过多(>50条/日/人) 麻木、忽略、屏蔽 关键告警被淹没
适中(5~15条/日/人) 有序处理、关注趋势 风险可控
过少(<1条/日/人) 看起来很轻松 故障发现大幅延迟

4.3 告警分级:别让P1和P4混在一起

告警数量控制好了,接下来就是分级。

我个人习惯把告警分成四个等级。分级的核心目的只有一个:让不同的人用不同的方式对待不同的事。

  • P1(致命): 服务不可用、数据丢失、核心功能失效。必须立即响应,不管几点。
  • P2(严重): 部分功能异常、性能严重劣化。需要在30分钟内确认并跟进。
  • P3(一般): 单节点异常、非核心模块报错。可以隔天处理,走工单。
  • P4(提示): 系统日志中的异常记录、资源使用率轻度偏高。无需立即处理,记录即可。

特别注意:P1级告警必须能被独立的人手工确认并升级,不能自动关掉。我见过某大厂因为P1告警自动降级为P3,结果关键业务故障拖了4个小时才发现。教训太深刻了。

还有个细节记得吗?告警标题前面最好加上等级标签。比如:

  • [P1] 用户登录服务不可用
  • [P3] 某个从库复制延迟超过60秒

这样,值班人员扫一眼标题,就知道该不该跳起来。

4.4 知识结构梳理

下面这张图可以帮你快速回顾这一章的逻辑链条:

告警设计原则 · 核心逻辑 告警设计的核心矛盾 告警过多:信噪比下降 告警过少:覆盖不足 结果:工程师麻木、屏蔽告警 结果:故障发现严重延迟 解决方案:告警分级与治理 P1 致命 P2 严重 P3 一般 P4 提示

4.5 实用建议

最后分享几个我自己一直在用的原则,供你参考:

关于告警数量:每个团队每天处理的告警数量,最好控制在每人5~15条。如果远超这个数,先别急着删规则,而是先问问自己:这条告警触发后,我会采取什么动作?如果回答不了,那就删掉它。

关于分级:P1级告警必须能用"一句话说明白"——比如"用户登录失败率超过5%"。说不明白的,说明你对这个告警还不理解,先别设为P1。

最后一条忠告:告警是给人看的。设计告警规则时,别只盯着指标和公式,多想想半夜值班的同事看到这条告警时的表情。嗯,这话听起来有点鸡汤,但真的很管用。