第 13 章 · 应急指挥与 On-call
本章目标:建立 demo-mall 不靠英雄主义 的应急体系——事件生命周期、ICS 指挥角色、沟通模板、Runbook 索引与无责复盘;结合小紫云计算 告警中心、日志、回滚 实操路径。
学时建议:2~2.5 小时(含 1.5 小时桌面演练)
前置:ops-deploy ch05 值班 SOP;ch06 故障演练;ch07 告警;xiaozi-cloud ch07 告警与日志。
13.1 场景说明
| 项目 | 内容 |
|---|---|
| 背景 | 周五 10:05,运维 → 告警中心 推送:prod demo-api 错误率 >5%,持续 5 分钟;客服群开始问「无法下单」 |
| 痛点 | 三人同时 SSH 改 prod;无人对外通报;40 分钟后才回滚,MTTR 超标 |
| 你的角色 | 本周 On-call,兼任 Incident Commander(IC) |
| 本章任务 | 按流程分诊、缓解、恢复、复盘;编写 demo-api Runbook |
| 约束 | 桌面演练可不真改 prod;真 P0 必须 一人指挥(IC) |
13.2 学完你能
| 能力 | 验收标准 |
|---|---|
| 事件生命周期 | 口述 7 阶段及时限 |
| 指挥分工 | 说清 IC / Ops / Comms / Scribe 职责 |
| 分诊定级 | P0/P1/P2 决策树 |
| 沟通模板 | 10 分钟内发首报 |
| Runbook | 为 HighErrorRate 写 1 页 |
| 复盘 | 5 Why + 行动项 |
| 工具路径 | 告警→监控→日志→回滚菜单链路 |
13.3 事件响应生命周期
检测 → 分诊 → 缓解 → 根因 → 恢复 → 复盘 → 改进跟踪
| 阶段 | 目标 | 时限(P0) |
|---|---|---|
| 检测 | 告警触达 On-call | <5min |
| 分诊 | 定级、拉群 | <10min |
| 缓解 | 止损(回滚/降级) | <15min |
| 恢复 | 服务完全正常 | <60min |
| 复盘 | 5 Why 报告 | 48h 内 |
小紫云计算路径(Ops Lead):
- 运维 → 告警中心 确认规则与影响 Namespace
- 运维 → 集群监控 看错误率、Pod Top、事件流
- 运维 → 日志管理 拉 demo-api 最近 500 行
- 若与发布相关 → ch04 回滚 或 应用部署 → 重启/改镜像
- 仍不明 → AI 助手 只读诊断(xiaozi-cloud ch08)
13.4 指挥角色(ICS 简化版)
| 角色 | 职责 | demo-mall 示例 |
|---|---|---|
| Incident Commander (IC) | 决策、优先级、对外口径 | 决定是否立即回滚 |
| Ops Lead | 执行回滚、扩容、查日志 | 在小紫云计算操作 |
| Comms Lead | 内部通报、客服话术 | 发钉钉/企微模板 |
| Scribe | 记录时间线 | 每分钟更新文档 |
原则:一人指挥,避免多人同时改 prod。非 IC 禁止私自 kubectl 或界面改 prod。
13.5 分诊决策树
告警触发
├─ 仅 staging?→ P2,工作时间处理
├─ prod 错误率>1% 持续 5min?→ P0
├─ prod 核心功能不可用?→ P0
└─ 非核心降级?→ P1
跟练:假设告警名为 DemoApiHighErrorRate,Namespace prod-app → 定 P0,10 分钟内拉群并指定 IC。
13.6 沟通模板
内部通报(首报 10min 内)
【P0】prod 订单 API 错误率升高
- 影响:用户无法下单,约 100% 流量
- 开始时间:10:05
- IC:张三 | Ops:李四
- 当前动作:准备回滚 1.4.3→1.4.2(ch04)
- 下次更新:10:20
恢复通报
【已恢复】10:18 prod 订单 API 恢复正常
- MTTR:13 分钟
- 根因:初步判定 DB 连接池耗尽(待确认)
- 复盘会:8/21 10:00
你应该看到什么:客服/业务群在 10:15 前收到首报;恢复后 MTTR 数字与监控截图一致。