文章

故障生命周期管理

故障生命周期管理

一句话:故障不是”出了再处理”,而是一条检测→响应→缓解→恢复→复盘→改进的流水线——每个环节有标准动作、有角色分工、有 SLA 约束。

故障生命周期全景

graph LR
    DETECT[1.检测<br/>告警触发] --> ACK[2.响应<br/>On-Call 确认]
    ACK --> TRIAGE[3.分级<br/>确定 SEV 级别]
    TRIAGE --> MITIGATE[4.缓解<br/>止血措施]
    MITIGATE --> RESOLVE[5.恢复<br/>根因修复]
    RESOLVE --> POST[6.复盘<br/>Postmortem]
    POST --> IMPROVE[7.改进<br/>Action Items]
    IMPROVE --> DETECT

各环节详解

1. 检测(Detection)

信号源检测方式延迟覆盖
监控告警SLO 燃烧率 + 黄金信号1-5 min依赖监控覆盖
用户反馈客服 → 运维通道5-30 min兜底手段
主动探活合成监控(Synthetic)1 min核心路径
异常检测AIOps 智能检测1-5 min补充盲区
# 检测 SLA
detection_sla:
  SEV1: "< 2 min"   # 核心服务必须在 2 分钟内检测到
  SEV2: "< 5 min"
  SEV3: "< 15 min"

2. 响应(Acknowledge)

告警触发 → 通知 On-Call → On-Call 确认接收

响应 SLA:
  SEV1: 5 分钟内 Ack(超过升级到 L2)
  SEV2: 15 分钟内 Ack
  SEV3: 30 分钟内 Ack(工作时间)

3. 分级(Triage)

级别定义响应要求通知范围
SEV1核心服务不可用 / 数据丢失5 min 内响应,全员介入技术 VP + SRE + 开发
SEV2核心服务降级 / 非核心不可用15 min 内响应SRE + 开发负责人
SEV3单实例故障 / 性能下降30 min 内响应(工作时间)SRE on-call
SEV4潜在风险 / 非用户可感知工单跟踪工单系统

4. 缓解(Mitigation)

目标:尽快止血,恢复用户可用性——不追求根治

缓解手段(按速度排序):
  1. 回滚(最快,秒级)→ ArgoCD rollback
  2. 扩容(分钟级)→ kubectl scale / HPA 触发
  3. 流量切换(分钟级)→ DNS / LB 切换
  4. 降级(分钟级)→ 关闭非核心功能
  5. 限流(秒级)→ 限制入口流量
  6. 重启(秒级)→ kubectl rollout restart

5. 恢复(Resolve)

目标:根因修复,确认完全恢复

恢复验证:
  ├── SLI 恢复正常(成功率 > SLO)
  ├── 告警自动 resolved
  ├── 用户体验恢复正常(无投诉)
  └── 错误预算消耗停止

6. 复盘(Postmortem)

参考 无指责复盘与故障分析方法论

7. 改进(Improve)

Action Items 闭环:
  ├── 短期修复 → 1 周内完成
  ├── 长期改进 → 2-4 周内完成
  ├── 流程改进 → 1 个月内完成
  └── 定期 Review → 每周跟踪进度

故障指挥体系

graph TD
    IC[Incident Commander<br/>故障指挥官] --> COMMS[Comms Lead<br/>沟通负责人]
    IC --> OPS[Ops Lead<br/>操作负责人]
    IC --> DEV[Dev Lead<br/>开发负责人]
    
    COMMS --> USER[用户沟通<br/>状态页更新]
    COMMS --> INTERNAL[内部沟通<br/>管理层同步]
    
    OPS --> SRE[SRE<br/>执行操作]
    DEV --> DEVS[开发<br/>代码修复]
    
    IC -.->|决策| DECISION[回滚/扩容/降级<br/>决策点]
角色职责谁来当
IC(指挥官)统筹决策、不参与具体操作最了解系统的人
Comms对内对外沟通、状态页更新不参与技术操作的人
Ops执行操作(回滚/扩容/切换)SRE on-call
Dev代码修复、根因排查服务负责人

关键原则:IC 不做操作,只做决策。操作的人不思考全局,思考全局的人不操作。

故障状态页

故障状态页模板:

[SEV1] api-gateway 部分用户 502
状态: 调查中
开始时间: 2026-08-03 14:22
影响: ~15% 请求失败
当前进展: 已定位到新版本内存泄漏,正在回滚

---

[更新 14:25] 回滚操作已触发
[更新 14:30] 回滚完成,502 错误率下降
[更新 14:35] SLI 恢复正常,故障解决
[更新 14:40] 故障复盘已启动,预计 48h 内完成

故障管理工具

工具用途替代方案
incident.io / FireHydrant故障生命周期管理自建工单系统
PagerDuty / 飞书机器人告警通知与值班Alertmanager + 企微
StatusPage.io用户状态页自建静态页
语音桥SEV1 紧急沟通腾讯会议/飞书语音

常见问题 / 坑点

问题原因解决方案
缓解优先级错(先查根因)工程师习惯先查再修缓解优先于根因——先止血
没有指挥官大家都在操作没人统筹指定 IC,IC 不操作
复盘太晚等了一周才复盘SEV1 48h 内,SEV2 一周内
状态页不更新忘了或嫌麻烦每 15 分钟更新一次,SEV1 强制
同类故障反复改进措施没落地Action Items 跟踪 + 月度回顾

关联知识

状态

  • 故障生命周期全景
  • 各环节详解
  • 故障指挥体系
  • 状态页模板
  • 工具选型