目标
五分钟四百条告警几乎从来不是四百个问题。按共享维度聚簇、找最早出现且修好能让邻居闭嘴的因果告警、再透明地静音其余回声——值班人员的视野从一场风暴恢复成一个可行动的事件。静音必须带事件编号与过期时间,风暴退去后还要审计清零。
步骤要点
- 先冻结风暴规模:记录告警速率与总量作为事件开档事实,四百条与四十条是不同性质的问题。
- 按共享维度聚簇:相同集群、相同依赖、相同 runbook 的告警归为家族,识别覆盖大部分量的少数家族。
- 在最大家族里找因果告警:时间最早、且其 runbook 的解决能让其他告警停止的那一条。
- 静音回声:对派生告警建立带范围的静默,理由写事件编号,过期时间超过预期修复时长。
- 处理根因并在解决后验证风暴退散:静音的告警应停止触发而非被掩盖,告警量回基线且无残留静默。
排错提示
静音后仍然漏处理新问题是因为按最响的单条静音,改按家族范围静音才能保留风暴结构信息;有人随手静音无理由无过期,把静默权限收给事件指挥官并强制填写事件 ID;风暴退去告警量不回落说明根因没修而静音在遮掩,事后审计必须逐条清理残留静默。
适用边界
聚簇依赖告警打标的维度质量,标签混乱的体系要先治标签再谈分组;因果判断是启发式,罕见的多根因风暴需要人工确认家族间独立性。
代码示例
storm: 412 alerts / 5 min (14:02-14:07)
families (group by dependency label):
dep:db-primary 291 alerts <- 71%
dep:redis-cache 84 alerts
node:cluster-a 37 alerts
causal: db-primarydown 14:02:11 (earliest)
-> children: conn-pool, latency, timeout x N
silence (incident INC-2903, expiry 4h):
match: dependency="db-primary", severity != sev1
working set after grouping: 1 incident