← 中文资源

简体中文版本

告警风暴分诊工作流

把同时爆发的上百条告警关联到共同根因,静音派生噪音,只处理一个根事件而非它的回声。

阅读英文原文

目标

五分钟四百条告警几乎从来不是四百个问题。按共享维度聚簇、找最早出现且修好能让邻居闭嘴的因果告警、再透明地静音其余回声——值班人员的视野从一场风暴恢复成一个可行动的事件。静音必须带事件编号与过期时间,风暴退去后还要审计清零。

步骤要点

  1. 先冻结风暴规模:记录告警速率与总量作为事件开档事实,四百条与四十条是不同性质的问题。
  2. 按共享维度聚簇:相同集群、相同依赖、相同 runbook 的告警归为家族,识别覆盖大部分量的少数家族。
  3. 在最大家族里找因果告警:时间最早、且其 runbook 的解决能让其他告警停止的那一条。
  4. 静音回声:对派生告警建立带范围的静默,理由写事件编号,过期时间超过预期修复时长。
  5. 处理根因并在解决后验证风暴退散:静音的告警应停止触发而非被掩盖,告警量回基线且无残留静默。

排错提示

静音后仍然漏处理新问题是因为按最响的单条静音,改按家族范围静音才能保留风暴结构信息;有人随手静音无理由无过期,把静默权限收给事件指挥官并强制填写事件 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