Skip to content
返回运维与 SRE

事后审查

经无指责复盘和跟踪行动项把每事件转系统改进。

为什么

每事件是系统如何失败的免费课,但仅当捕获。无事后审查同宕机每季复发因系统原因(无部署门、无金丝雀、无 runbook)存活事件 — 只推坏变更的人被指责并继续。无指责复盘(见 blameless-postmortem)提系统原因并产修系统的行动项使同人类错误不能再造同宕机。复利效应戏剧:做严复盘的团队年事件数降 30-50% 因每修防一类未来事件,跳过的团队见同事件重复。

何时使用

每 SEV1/SEV2 解决后 5 工作日内。冲刺规划跟踪行动项到完成。

如何做

1. 24h 内排,5 工作日内开
   - 60-90m;IC + 响应者 + 通讯负责人 + 引导者
   - 记忆新鲜时;拉数据(告警、部署、聊天)建时间线

2. 建数据驱动时间线(见 blameless-postmortem)
   - 从日志/告警/聊天逐分钟,非记忆
   - "时间 T 我们知什么?"揭信息缺口非人类错误

3. 用 5 个为什么找系统根因
   - 停在可用系统变更修的原因(加测试、加门)
   - 非人类变更("更小心")— 那些不复利

4. 写 SMART 行动项
   - 具体、可测、指派、现实、有时限
   - "加 null-折扣边界情况集成测试(负责人:A,到期:2w)"
   - 每防一类未来事件非仅此一

5. 跟踪到完成并测
   - 行动项是冲刺工作;所有项发布才关事件
   - 跟踪"行动项完成率"和"关闭时间"— 目标 1 季 >90%
   - 复事件率:若同根因复发,行动项错了

示例

# postmortem-2026-03-15-checkout-down.md
## 摘要
结账 100% 错误 12m;340 订单丢(约 $4.2k 收入)。SEV1。

## 时间线(数据驱动)
14:03  部署 v2.4.1(金丝雀跳过 — "小变更"覆盖)
14:05  错误率 0% → 100%(null-折扣 bug)
14:07  告警触发 → 值班确认
14:12  回滚启动 → 14:15 解决

## 根因(5 个为什么)
1. 结账坏 → v2.4.1 null-折扣 bug
2. 发布 → 金丝雀跳过
3. 金丝雀跳过 → 部署工具存在"小变更"覆盖
4. 覆盖存在 → 无策略防生产关键路径用它
5. → 修:移除 /checkout 覆盖;要求 SRE 批准

## 行动项(SMART、冲刺跟踪)
- [ ] 移除生产关键路径金丝雀跳过覆盖(负责人:deploy-platform,到期:1w)[JIRA-123]
- [ ] 加集成测试:null-折扣边界情况(负责人:payments,到期:2w)[JIRA-124]
- [ ] 加部署门:金丝雀错误率 >1% 阻塞(负责人:deploy-platform,到期:1w)[JIRA-125]

## 指标
- MTTD:2m  |  MTTA:4m  |  MTTR:10m  |  收入影响:$4.2k
- 行动项:3 开、0 完 → 全发布才关事件
## 无指责:工程师遵循现有流程。修流程非人。

常见问题

  • ⚠复盘写了但行动项从不跟踪 — 文档是仪式,系统原因存活,事件下季复发。
  • ⚠行动项模糊("改进测试")无负责人或到期 — 永不发布,复盘无系统变更。
  • ⚠指责复盘 — 工程师藏真实时间线,系统原因漏,只人(暂时)变。
  • ⚠无行动项完成或复事件率测 — 无指标复盘退成文书且改进环断。

最佳实践

  • ✓把复盘行动项作一等冲刺工作带负责人和到期;所有项发布才关事件。
  • ✓使行动项 SMART 且系统(加测试、加门)非人类("更小心")— 系统修复复利,人类修复不。
  • ✓测行动项完成率(1 季 >90%)和复事件率;若同根因复发,行动项错了。
  • ✓5 工作日内无指责开复盘;从数据建时间线,假设每工程师用其信息尽力。