6.4. SRE 与事件响应:SLO、值班、复盘与混沌

SRE 的核心不是「会修 Kubernetes」,而是用可量化的可靠性目标管理风险:什么必须稳定、什么可以降级、出了事谁指挥、事后如何避免重复。它把 DevOps 的反馈闭环落到可执行的指标与流程上。

层级:

L4 · 实战

难度:

进阶

预计:

50 分钟

前置:

可观测性、Kubernetes、发布流程

6.4.1. SLI、SLO 与错误预算

  • SLI:可测量的指标,如请求成功率、P95 延迟、新鲜度。

  • SLO:SLI 的目标,如「30 天成功率 ≥ 99.9%」。

  • 错误预算:1 - SLO,如 0.1% 的失败额度;用完就冻结高风险发布。

服务

SLI

SLO

错误预算

API

成功率

99.9%/30d

43m 12s

订单

P95 延迟

< 300ms

5% 请求可超

日志

采集延迟

< 60s

1% 数据可丢

SLO 不是越高越好。99.99% 意味着更贵的冗余与更慢的发布;先和业务确认「可接受的失败」。

6.4.2. 告警设计

  • 症状告警:错误率、延迟、饱和度;直接对应用户影响。

  • 原因告警:CPU 高、磁盘满、证书过期;用于提前发现。

  • 避免:每个 Pod 都告警、无 runbook 的告警、长期不处理的告警。

告警要带:影响范围、当前值、阈值、runbook 链接、最近变更。没有 runbook 的告警等于噪音。

6.4.3. 事件响应

架构图

  • Incident Commander(IC):负责决策与协调,不亲自修。

  • Ops Lead:执行技术操作。

  • Comms Lead:对外沟通与状态更新。

  • Scribe:记录时间线、假设、操作。

分级:SEV1 全站不可用、SEV2 核心功能受损、SEV3 局部/有绕行、SEV4 无用户影响。分级决定召集谁、多久更新一次。

6.4.4. 值班与 runbook

  • 值班表提前排,避免疲劳;一线/二线升级路径明确。

  • 每个告警有 runbook:检查项、命令、回滚、升级联系人。

  • 值班交接写清未完成事项与风险。

  • 用「错误预算」决定是否暂停发布,而不是拍脑袋。

6.4.5. 复盘(Postmortem)

复盘对事不对人,输出:

  1. 时间线(检测、响应、恢复)。

  2. 影响(用户、时长、数据)。

  3. 根因(技术 + 流程)。

  4. 做对了什么、做错了什么。

  5. 改进项(负责人 + 截止时间)。

避免「人为失误」作为根因;继续问「为什么这个操作会导致事故」「为什么没有拦住」。

6.4.6. 容量与混沌

  • 容量:按峰值 + 余量规划,定期压测;节点池留 burst。

  • 混沌:主动注入 Pod/节点/网络/依赖故障,验证告警、切换与 runbook。

  • 游戏日:团队一起演练一次真实故障,记录响应时间。

混沌实验要先有稳态指标与回滚开关,不要在生产直接随机杀节点。

6.4.7. 实验:定义 SLO 并演练一次告警

  1. 给一个服务定义成功率 SLI 与 99.9% SLO。

  2. 用 Prometheus 规则计算 30 天错误预算。

  3. 配置 Alertmanager:预算消耗 > 50% 发 warning,> 80% 发 critical。

  4. 注入 5% 错误,观察告警与 runbook。

  5. 写一份 1 页复盘。

6.4.8. 验证清单

  • 每个核心服务有 SLI/SLO 与错误预算。

  • 告警是症状型、可执行、带 runbook。

  • 事件分级与 IC/Comms/Ops 角色明确。

  • 值班表与升级路径可用。

  • 复盘有改进项与截止时间。

  • 至少每季度一次混沌/游戏日演练。

6.4.9. 排错表

现象

原因

处理

告警太多

阈值太敏感/无去重

聚合、抑制、只保留症状告警

告警没人处理

无 owner/runbook

补 owner、值班表、升级路径

SLO 一直达标但用户不满

SLI 选错

用用户路径/业务指标重定义

复盘无改进

没有跟踪

改进项进工单,定期回顾

故障恢复慢

没有演练

游戏日、runbook、自动化切换

6.4.10. 进阶挑战

  1. 给一个 API 定义 SLO,并用 Pyrra/Sloth 生成告警。

  2. 写一份 SEV2 事件响应 runbook。

  3. 做一次 Pod 故障注入,记录检测到恢复的时间线。

  4. 用错误预算决定一次发布是否继续。

6.4.11. 小结

  • SRE 用 SLO/错误预算管理可靠性,不追求 100%。

  • 告警要症状型、可执行、有 runbook。

  • 事件响应要角色清晰、沟通节奏稳定。

  • 复盘要落到改进项,混沌要可回滚。

6.4.12. 延伸阅读