Files
test-repo/docs/zh-cn/appendix/7-infrastructure-and-operations/incident-response.md
T
sanbuphy 3af119a598 feat(appendix): 添加多个交互式演示组件,完善 AI/Infra 等章节内容
- 新增 Vibe Coding 全栈相关演示组件 (DeveloperSkillShift, FrontendTriad, BackendCore 等)
- 新增 RAG 相关组件 (RAGPipeline, ChunkingStrategy, Retrieval 等)
- 新增 Embedding & Vector 相关组件 (EmbeddingConcept, VectorSimilarity 等)
- 新增 AI Native App 设计组件 (AINativeArch, PromptDesign 等)
- 新增 Infrastructure as Code 组件 (IaCConcept, TerraformWorkflow 等)
- 新增 DNS & HTTPS 演示组件 (DnsResolution, HttpsHandshake 等)
- 新增 Model Finetuning 组件 (FinetuningPipeline 等)
- 更新多个章节的 markdown 内容,集成交互式演示
2026-02-24 18:22:58 +08:00

159 lines
8.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 故障排查与应急响应
::: tip 前言
**凌晨三点,手机疯狂震动,线上服务全面瘫痪——你该怎么办?** 对于任何互联网团队来说,故障不是"会不会发生"的问题,而是"什么时候发生"的问题。优秀的团队不是不出故障,而是出了故障能快速响应、高效恢复,并从中学习避免重蹈覆辙。
:::
**这篇文章会带你学什么?**
学完这章后,你将获得:
- **分级意识**:掌握 P0~P4 事故严重程度分级标准
- **响应流程**:理解从发现到恢复的完整事故响应时间线
- **组织协作**:了解事故指挥体系中的角色分工和协作机制
- **告警体系**:掌握告警升级策略,确保关键问题不被遗漏
- **复盘方法**:学会用"五个为什么"挖掘根因,写出有价值的复盘报告
| 章节 | 内容 | 核心概念 |
|-----|------|---------|
| **第 1 章** | 严重程度分级 | P0~P4、影响范围评估 |
| **第 2 章** | 响应时间线 | 发现→响应→恢复→复盘 |
| **第 3 章** | 指挥体系 | IC、通信官、技术负责人 |
| **第 4 章** | 告警升级 | 分级告警、逐级升级 |
| **第 5 章** | 事后复盘 | 五个为什么、无责文化 |
---
## 0. 全景图:故障是最好的老师
Netflix 有一个著名的工具叫 Chaos Monkey——它会随机杀掉生产环境的服务器。听起来疯狂,但背后的逻辑很清晰:**与其等故障找上门,不如主动制造故障来锻炼团队的应急能力**。
应急响应不是靠临场发挥,而是靠**流程、角色、工具**三位一体的体系化建设。就像消防队不是火灾发生时才组建的——他们平时就在训练、演练、维护装备。
::: tip 应急响应的四个核心要素
- **快速发现**:完善的监控和告警体系,确保问题在用户感知之前被发现
- **高效协作**:清晰的角色分工和沟通机制,避免混乱中的重复劳动
- **快速恢复**:优先恢复服务,而不是优先找根因。先止血,再治病
- **持续改进**:每次故障都是学习机会,通过复盘不断完善系统和流程
:::
---
## 1. 严重程度分级:不是所有故障都要"全员出动"
一个按钮颜色显示错误和整个支付系统瘫痪,显然不是同一个级别的问题。**事故分级**的目的是让团队用合适的力度响应合适级别的问题——既不过度反应浪费资源,也不轻视问题导致损失扩大。
<SeverityLevelDemo />
| 级别 | 名称 | 影响范围 | 响应要求 | 示例 |
|------|------|---------|---------|------|
| P0 | 致命 | 核心业务完全不可用 | 立即响应,全员待命 | 支付系统瘫痪、数据泄露 |
| P1 | 严重 | 核心功能严重受损 | 15 分钟内响应 | 登录失败率 > 50%、API 大面积超时 |
| P2 | 重要 | 部分功能异常 | 1 小时内响应 | 搜索结果不准确、部分页面 500 |
| P3 | 一般 | 非核心功能异常 | 工作时间处理 | 头像加载失败、非关键通知延迟 |
| P4 | 轻微 | 体验问题 | 排入迭代计划 | UI 错位、文案错误 |
::: tip 分级的关键原则
- **影响用户数**:影响 100% 用户的 P2 可能比影响 1% 用户的 P1 更紧急
- **业务损失**:直接影响收入的问题(支付、下单)优先级更高
- **可降级处理**:如果有临时方案可以缓解影响,可以适当降级处理
- **动态调整**:随着排查深入,级别可能上调或下调
:::
---
## 2. 响应时间线:从发现到复盘的完整流程
一次事故响应就像一场接力赛,每个阶段都有明确的目标和交接点。清晰的时间线能让团队在混乱中保持有序。
<IncidentTimelineDemo />
::: tip 事故响应的五个阶段
1. **检测(Detection**:通过监控告警、用户反馈或内部巡检发现异常。目标:尽早发现,缩短 MTTD(平均检测时间)。
2. **响应(Response**:确认事故、评估严重程度、召集响应团队、建立沟通频道。目标:快速组织起有效的响应力量。
3. **缓解(Mitigation**:采取临时措施恢复服务,如回滚部署、切换备用节点、限流降级。目标:先止血,恢复用户体验。
4. **修复(Resolution**:找到根本原因并彻底修复。目标:消除隐患,防止复发。
5. **复盘(Postmortem**:回顾整个过程,分析根因,制定改进措施。目标:从故障中学习,让系统更健壮。
:::
| 指标 | 含义 | 优化方向 |
|------|------|---------|
| MTTD | 平均检测时间 | 完善监控覆盖、降低告警阈值 |
| MTTR | 平均恢复时间 | 自动化恢复、预案演练 |
| MTBF | 平均故障间隔 | 提升系统可靠性、消除单点故障 |
---
## 3. 指挥体系:谁来指挥这场"战斗"?
大型事故中最怕的不是技术难题,而是**混乱**——十几个人同时在排查,没人知道别人在做什么,关键信息在各个群里碎片化传播。事故指挥体系(Incident Command System)就是为了解决这个问题。
<IncidentCommandDemo />
::: tip 三个核心角色
1. **事故指挥官(Incident Commander, IC**:整个事故响应的总负责人。负责决策、协调资源、把控节奏。IC 不一定是技术最强的人,但必须是最冷静、最有全局观的人。
2. **通信官(Communication Lead**:负责对外沟通——更新状态页、通知客户、同步管理层。让 IC 和技术人员专注于解决问题,不被沟通事务打断。
3. **技术负责人(Tech Lead**:负责技术层面的排查和修复。组织技术人员分工协作,向 IC 汇报进展和方案。
:::
---
## 4. 告警升级:确保关键问题不被遗漏
告警系统是事故响应的"眼睛"。但告警太少会漏报,告警太多会导致"告警疲劳"——当每天收到几百条告警时,真正重要的那条很容易被淹没。**告警升级策略**就是解决这个问题的关键。
<AlertEscalationDemo />
::: tip 告警升级的三层机制
1. **一线响应(L1**:告警触发后,先通知值班工程师。如果 15 分钟内未确认,自动升级。
2. **二线升级(L2**:通知团队负责人和相关领域专家。如果 30 分钟内未缓解,继续升级。
3. **三线升级(L3**:通知技术总监和管理层,启动全面应急响应。
:::
| 告警级别 | 通知方式 | 响应时限 | 升级条件 |
|---------|---------|---------|---------|
| Warning | IM 消息 | 工作时间处理 | 持续 30 分钟未恢复 |
| Critical | 电话 + IM | 15 分钟内确认 | 未确认或未缓解 |
| Fatal | 电话轰炸 + 短信 | 5 分钟内响应 | 自动升级至管理层 |
---
## 5. 事后复盘:从故障中学习
事故恢复后,最重要的一步是**复盘(Postmortem)**。复盘不是为了追责,而是为了找到系统性的改进机会。Google、Meta 等公司都奉行"无责复盘"文化——关注"系统为什么允许这个错误发生",而不是"谁犯了这个错误"。
<PostmortemDemo />
::: tip "五个为什么"分析法
从表面现象出发,连续追问"为什么",直到找到根本原因:
1. **为什么服务挂了?** → 数据库连接池耗尽
2. **为什么连接池耗尽?** → 慢查询占用连接不释放
3. **为什么有慢查询?** → 缺少索引,全表扫描
4. **为什么缺少索引?** → 新表上线时没有 DBA 审核
5. **为什么没有审核?** → 没有强制的 SQL 审核流程
根因不是"某个人忘了加索引",而是"缺少 SQL 审核流程"。修复根因才能防止复发。
:::
---
## 总结
故障排查与应急响应是每个技术团队的必备能力。它不是靠英雄主义的个人发挥,而是靠体系化的流程、清晰的角色分工和持续的复盘改进。
回顾本章的关键要点:
1. **分级响应**:P0~P4 分级确保用合适的力度应对合适级别的问题
2. **时间线清晰**:检测→响应→缓解→修复→复盘,每个阶段目标明确
3. **指挥体系**:IC + 通信官 + 技术负责人,分工协作避免混乱
4. **告警升级**:分级告警 + 自动升级,确保关键问题不被遗漏
5. **无责复盘**:用"五个为什么"挖掘根因,关注系统改进而非个人追责
## 延伸阅读
- [Google SRE Book - Incident Response](https://sre.google/sre-book/managing-incidents/) - Google 的事故管理实践
- [PagerDuty Incident Response Guide](https://response.pagerduty.com/) - PagerDuty 开源的应急响应指南
- [Atlassian Incident Management](https://www.atlassian.com/incident-management) - Atlassian 的事故管理最佳实践
- [Learning from Incidents](https://www.learningfromincidents.io/) - 从事故中学习的社区资源
- [Chaos Engineering (O'Reilly)](https://www.oreilly.com/library/view/chaos-engineering/9781492043850/) - 混沌工程原理与实践