主题
事故管理与无指责复盘
本篇定位
系统挂了别慌:把「谁该上、谁说了算、怎么沟通、事后怎么复盘不甩锅」这套流程固定下来。读完你能拿到一份事故分级、On-call 轮值、应急指挥分工、响应流程图和一份可直接复制的无指责 Postmortem 模板。 本篇版本:方法体系基于 Google SRE Book / 业界通用实践,配套工具 Alertmanager 0.34.1、Grafana OnCall(开源)。本文为流程与模板,不绑定特定版本。
一、为什么需要事故管理流程
1.1 小白类比:「火灾来了谁指挥」
饭店着火,若大家各喊各的——有人泼水、有人抢东西、有人乱跑——火只会越烧越大。专业消防队有固定章法:谁报警、谁是现场指挥、谁灭火、谁对外面喊话、谁记录,各司其职,不乱。
线上事故也一样。没有流程时,常见的混乱是:十几个人同时改配置、群里 99+ 条消息没人看、不知道现在谁在操作、对外不知道该说什么。事故管理就是给「救火」定一套流程,让大家在高压下还能有序。
1.2 事故严重性等级
| 等级 | 定义 | 例子 | 响应要求 |
|---|---|---|---|
| SEV-1 致命 | 核心业务全站不可用/数据泄露,影响全部用户 | 支付全挂、数据库主库宕机 | 立刻电话叫醒,全员投入,30 分钟内响应 |
| SEV-2 严重 | 核心功能受损但有降级/部分用户受影响 | 下单慢但能下、部分区域故障 | 5~15 分钟响应,值班立即处理 |
| SEV-3 一般 | 非核心功能问题、有 workaround | 后台报表慢、某个边缘接口报错 | 工作时间处理,不叫醒 |
| SEV-4 轻微 | 体验问题、不影响业务 | 页面文案错、偶发慢一次 | 排期修复即可 |
二、On-call 值班与升级路径
2.1 轮值设计
- 主值班(Primary):第一个接电话的人,负责初步判断和拉起事故。
- 副值班(Secondary):主值班 15 分钟没响应/搞不定时升级到他。
- 后备(Manager/TL):两人都搞不定时升级,负责协调资源和对外决策。
2.2 升级路径要点
- 升级要有明确时间阈值(如主值班 15 分钟不响应自动转副值班),不能靠「觉得差不多了」。
- 告警要分级:SEV-1/2 走电话+短信,SEV-3 只走群消息,SEV-4 开工单。这正是上一篇 SLO 多燃烧率告警 做的分层。
三、应急指挥(IC)与角色分工
事故一旦拉起战情室(语音会议/群),第一件事是指定一个 IC(Incident Commander,事件指挥官)。IC 自己不动手修,他只管调度。
| 角色 | 职责 | 小白类比 |
|---|---|---|
| IC 事件指挥官 | 统一指挥、做决策、宣布升降级/恢复 | 火场总指挥,不自己拿灭火器 |
| OLP 操作负责人 | 真正执行命令、改配置、回滚 | 冲上去灭火的消防员 |
| Comms 通信官 | 对内同步进度、对外发公告 | 对媒体喊话的发言人 |
| Scribe 记录员 | 记录时间线:几点发生了什么 | 现场书记员 |
关键原则:IC 和操作的人必须分开。一个人又当指挥又改命令,忙起来就会忘了同步,别人不知道现在进行到哪一步。
四、事故响应流程
第一原则:先止血,后查因。 用户正在受损时,不要钻进去深挖根因——先回滚、先切流、先降级把影响止住,根因留到恢复后慢慢查。
五、对内对外沟通与时间线
- 对内:在战情群固定频率(如每 30 分钟)发一条进展:现在现象、已尝试的动作、下一步、预计时间。别让大家追着问。
- 对外:面向用户/客户的公告要谨慎——说事实、说影响范围、说正在处理,不要甩锅、不要猜根因。
- 时间线:记录员按「时间戳 + 事件」记录,例如
14:02 告警触发 / 14:08 IC 张三拉起会议 / 14:20 回滚 v1.4.2 / 14:35 流量恢复。这份时间线是复盘的原料。
5.1 沟通话术模板(直接套用)
拉起事故时的对内通知(发到战情群):
text
【SEV-2 事故通报】
现象:下单接口 P99 飙升,错误率约 30%,影响华东区用户。
IC:张三(电话 xxx)
OLP:李四
Comms:王五
Scribe:赵六
下一步:正在回滚 v1.4.2,预计 15 分钟内反馈。进展同步(每 30 分钟一条,别让人追着问):
text
【14:30 进展】
已回滚 v1.4.2 → v1.4.1,错误率从 30% 降到 2%,正在观察。
下一步:继续观察 30 分钟,若稳定则宣布解除。对外公告(只说事实,不猜根因):
text
尊敬的用户:我们监测到部分用户在 14:02~14:35 期间下单遇到超时,
目前服务已恢复正常,正在进一步排查原因,给您带来不便深表歉意。5.2 值班工具选型
| 工具 | 用途 | 说明 |
|---|---|---|
| Alertmanager | 告警分发 | 按 severity 路由到电话/群/工单,见 SLO 告警 |
| Grafana OnCall | 值班轮班、升级 | 开源,支持轮班表、自动升级、电话通知 |
| 战情语音会议 | 事故时实时沟通 | 拉起后所有人进同一个语音频道 |
| 共享文档 | 记录时间线 | 多人同时编辑,Scribe 主笔 |
六、无指责复盘(Blameless Postmortem)
6.1 文化核心
无指责不是「不找人负责」,而是「在当时的信息和条件下,做决策的人是合理的」。
出事故后最忌讳的是骂「谁谁谁怎么会犯这种低级错误」。因为人在高压、信息不全下的判断,事后看是错的,当时往往是合理的。复盘要对着系统找漏洞,而不是对着个人发脾气——否则下次出事没人敢上报,问题被藏起来,更危险。
6.2 可直接复制的复盘模板
markdown
# 事故复盘:<一句话标题,如「9.28 下单接口大面积超时」>
## 摘要
- 等级:SEV-2
- 时间:2026-09-28 14:02 ~ 14:55(约 53 分钟)
- 影响:约 12% 用户下单失败,订单损失估算 X 笔
- 一句话结论:发布 v1.4.2 引入连接池配置错误,导致数据库连接耗尽
## 影响面
- 受影响服务:order-service
- 受影响用户:华东区约 12% 请求
- 数据影响:无数据丢失,无资损
## 时间线(UTC+8)
| 时间 | 事件 | 操作人 |
|---|---|---|
| 14:02 | 告警触发:订单 P99 飙升、错误率 30% | 监控 |
| 14:08 | 主值班李四拉起战情室,指定 IC | 李四 |
| 14:20 | 决定回滚 v1.4.2 → v1.4.1 | IC/OLP |
| 14:35 | 流量恢复正常 | OLP |
| 14:55 | 观察期结束,宣布解除 | IC |
## 根因分析
- 直接原因:v1.4.2 把数据库连接池 maxOpenConns 从 200 改成了 10,高峰连接被打满。
- 促成因素:该配置变更没有走评审;压测没覆盖高峰并发;告警到发现有 6 分钟延迟。
## 做得好的
- 值班 6 分钟内响应,回滚果断。
- 时间线记录完整,沟通及时。
## 做得不好的
- 配置变更未评审就上线。
- 缺少连接池饱和度告警。
## 行动项(必须有 owner + 截止时间)
| 行动项 | Owner | 截止时间 | 状态 |
|---|---|---|---|
| 连接池配置纳入变更评审清单 | 王五 | 2026-10-10 | 待办 |
| 增加 DB 连接池使用率告警 | 赵六 | 2026-10-08 | 待办 |
| 压测补充高峰并发用例 | 孙七 | 2026-10-15 | 待办 |6.3 行动项闭环
- 每个行动项必须有 owner 和截止时间,否则等于没写。
- 行动项要进跟踪系统(Jira/飞书任务),定期 review 完成情况。
- 复盘结论要分享给全团队,让别人也从你的事故里学到东西。
七、常见反模式
| 反模式 | 为什么不好 | 正确做法 |
|---|---|---|
| 复盘会变成批斗会 | 下次没人敢报事故 | 无指责,对着系统 |
| 没有 IC,一群人同时操作 | 互相覆盖、越改越乱 | 先指定指挥,操作统一由 OLP |
| 只顾深挖根因不先止血 | 用户一直在受损 | 先回滚/降级,根因事后查 |
| 行动项没人跟 | 同样事故再犯一次 | owner+截止时间+闭环跟踪 |
| 对外公告瞎猜原因 | 说错了更被动 | 只说事实和进展,根因复盘后再补 |
| 事故一解除就散会 | 没观察期,问题反复 | 恢复后至少观察 30 分钟再解除 |
| 复盘报告写完就归档 | 行动项没人跟 | 进任务系统定期 review 闭环 |
经验:SEV-1 事故的复盘要在恢复后 48 小时内开掉,趁大家记忆还新鲜;行动项跟踪到全部关闭才算结束。
复盘会控制在 60~90 分钟,主持要引导大家「对事不对人」,把精力放在「系统怎么改下次不再犯」而不是「谁的锅」。
生产红线
- SEV-1/2 事故必须先指定 IC 再动手,禁止多人同时改生产配置。
- 所有生产变更保留一键回滚能力(见 CI/CD 进阶与渐进式交付)。
- 复盘模板里不许出现「某某某不小心」这类人身归因,只写系统与流程缺陷。
- 对外公告走 Comms 统一出口,别让工程师在群里随口评论。
相关速查
- 告警分级来源:SLO/SLI、错误预算与 Burn Rate
- 主动发现系统弱点:混沌工程
- 容灾与恢复:容量规划、高可用与灾备
- 发布与回滚:CI/CD 进阶与渐进式交付
- 自动化巡检:Python 运维自动化
- 真实排障案例:排障案例集
官方文档
- Google SRE Book《Managing Incidents》:https://sre.google/sre-book/managing-incidents/(需科学上网);国内平替:https://www.cnblogs.com/lhxBlogs/p/17936005.html
- Google Postmortem 文化(Blameless):https://sre.google/sre-book/postmortem-culture/(需科学上网);国内平替:https://www.cnblogs.com/lhxBlogs/p/17936005.html
- Grafana OnCall:https://grafana.com/oss/oncall/
- Alertmanager 告警路由:https://prometheus.io/docs/alerting/latest/notification_examples/