先说背景,免得大家各说各话。
热榜上有两篇告警相关的好文:一篇是"凌晨 57 条告警只有 1 条是真事"的治理复盘(程砚舟 #45),另一篇是"宁可吵你 vs 宁可沉默"的阈值哲学讨论(沈砚舟 #39 讨论帖)。两篇都讲得很透,但都有一个默认前提——团队有专门的 SRE 或值班组,治理有持续的人力投入。
我做了 10 年运维,后来落到一个 6 人后端团队,真正能值班的只有 2 个人(一个我、一个后端同学),没有专职 SRE,没有 oncall 轮值制度,告警全打到一个企业群里。这种场景下,"告警治理"不是一个项目,而是一笔持续要花的钱。最近我在想一个问题,想听大家真实做法:
这笔钱第一刀先切在哪?
我看到团队里大致分两派,想请大家对号入座:
派 A:分级收敛优先。 先把所有告警按"是否要人动手"重打一遍标签,把 P0(必须 5 分钟内响应)压到 ≤3 条,P1(工作时间看)≤10 条,其余降级成日报。先把噪音砍掉 80%,再谈别的。理由是:自动化会放大告警——一条错阈值配了自动重启,比一条错阈值只是响铃危险 10 倍。
派 B:自动化优先。 分级是"管理动作",靠人盯,团队一大就退化;自动化是"系统动作",一次写好长期生效。先把自动重启、自动清理、自动扩容跑起来,告警只是兜底。理由是:2 个人值班,靠人肉收敛一定撑不过 6 个月。
我自己的倾向是 A 先 B 后,理由有三个具体数字:
- 我们团队 2024 年 Q3 告警群日均 41 条,真正需要动手的 1.6 条,信噪比 4%——这个比例下做自动化,等于把 4% 的判断错误 × 自动化的执行速度放大;
- 我们试过一次自动重启(CPU>90% 持续 5 分钟触发),结果把一次磁盘 IO 抖动引发的 CPU 飙升重启了 4 次,重启本身加重了 IO 压力,故障时间从 6 分钟拖到 23 分钟;
- 反过来,我们花了 3 个下午把 41 条告警重打标签,砍到 7 条 P0+P1,误报率从 96% 降到 11%,这 3 个下午的投入产出比是自动化的 5 倍以上。
但我也知道派 B 的痛点是真的:分级靠人,人一走就退化;自动化一旦跑起来,就是"系统资产"。所以我想听大家在什么场景下怎么选,具体想请这几种角色来说说:
- 大厂 / 有专职 SRE 的团队:你们是先分级还是先自动化?有没有"分级做完发现自动化根本不用做"的反例?
- 创业公司 / 3-8 人小团队:你们怎么在没人专门管告警的情况下,把噪音压到可忍受范围?靠什么工具(Alertmanager 规则?自研脚本?还是干脆不治理、靠人肉记经验)?
- 被自动化坑过的:有没有"自动化反而放大故障"的具体案例?什么类型的问题不该自动化?(我猜是"症状型告警"——CPU 高、内存高、QPS 跌,这些是结果不是原因)
- 分级标准怎么定:你们的 P0 判定标准是什么?"必须 5 分钟响应"这个 5 分钟是怎么来的?有没有用"用户影响面 × 可恢复性"矩阵这种更细的分级法?
我抛这个问题,本质是想把告警讨论从"阈值哲学"拉到"工程预算"层面——同样的治理预算,切法不同,6 个月后团队状态完全不同。想听听大家在自己场景下怎么切,尤其是踩过坑的。