error budget消耗分析:SLO台账故障排查思路 - 第1节
1.1 从用户感受到工程指标:SLO 的核心定位
在可观测性与 SRE 实践中,SLO(Service Level Objective,服务等级目标)是连接用户体验与工程运维的“契约线”。它不是一个单纯的百分比数字,而是团队对用户承诺的量化表达。要理解 SLO,必须先厘清它与 SLI、Error Budget 的三角关系。
核心公式: Error Budget = 1 − SLO。当系统实际可用性低于 SLO 时,Error Budget 被消耗殆尽,团队应停止发布新功能,优先恢复稳定性。
1.1.1 三要素定义速览
| 术语 | 英文全称 | 一句话定义 | 示例 |
|---|---|---|---|
| SLI | Service Level Indicator | 服务质量的直接测量指标 | 请求延迟 P99 ≤ 200ms |
| SLO | Service Level Objective | 对 SLI 的目标阈值承诺 | 99.9% 的请求延迟 ≤ 200ms |
| Error Budget | Error Budget | 允许服务“不合格”的容忍窗口 | 每月最多 43 分钟不可用 |
1.1.2 三者的层级关系
SLI 是原始观测数据,SLO 是目标边界,Error Budget 是管理工具。三者形成从“测量”到“承诺”再到“行动”的闭环:
- SLI → SLO: 从原始指标中选取最能反映用户体验的维度,设定目标阈值。
- SLO → Error Budget: 用 1 − SLO 计算出可容忍的故障时间或错误比例。
- Error Budget → 决策: 消耗速度决定发布节奏与故障响应优先级。
1.2 Error Budget:从数学定义到工程行动
1.2.1 数学定义与计算示例
Error Budget 的计算基于 SLO 与时间窗口。以最常见的“月度可用性”为例:
Error Budget(分钟) = 总分钟数 × (1 − SLO)
示例:
SLO = 99.9%(三个9)
月度总分钟 = 30天 × 24小时 × 60分钟 = 43,200 分钟
Error Budget = 43,200 × (1 − 0.999) = 43.2 分钟
含义:该服务每月最多允许 43.2 分钟处于“不符合 SLO”的状态。
常见误区: Error Budget 不是“故障时间配额”,而是“不符合 SLO 的累计时间”。一次 5 分钟的 P0 故障可能消耗 5 分钟预算,但 100 次 3 秒的慢请求(P99 超标)同样会消耗预算。监控时必须同时关注持续故障与毛刺。
1.2.2 不同 SLO 级别的 Error Budget 对比
| SLO 目标 | 月度 Error Budget | 年度 Error Budget | 典型场景 |
|---|---|---|---|
| 99.9%(3个9) | 43.2 分钟 | 8.76 小时 | 内部工具、非关键业务 |
| 99.95%(3.5个9) | 21.6 分钟 | 4.38 小时 | 标准在线服务 |
| 99.99%(4个9) | 4.32 分钟 | 52.56 分钟 | 核心支付、实时通信 |
| 99.999%(5个9) | 25.9 秒 | 5.26 分钟 | 金融交易、基础设施控制面 |
1.3 SLI 的选择:Error Budget 的“测量探头”
Error Budget 的质量完全取决于 SLI 的选择。如果 SLI 不能反映真实用户体验,Error Budget 就只是一个数字游戏。SRE 实践中推荐以下四类黄金信号 SLI:
- 延迟(Latency): 请求响应时间,通常取 P50/P95/P99。
- 流量(Traffic): 每秒请求数(RPS)或并发连接数。
- 错误(Errors): HTTP 5xx、超时、业务错误码。
- 饱和度(Saturation): CPU/内存/连接池使用率。
关键原则: SLI 必须从“用户视角”定义。例如,数据库查询延迟的 SLI 应测量“用户请求到响应”的全链路延迟,而非仅数据库内部耗时。否则 Error Budget 可能显示正常,但用户已经感知到卡顿。
1.4 核心关系总结:Error Budget 是 SRE 的“油门与刹车”
理解 SLO 与 Error Budget 的关系,是后续故障排查与台账分析的基础。以下表格总结了三个核心概念在 SRE 工作流中的角色差异:
| 维度 | SLI | SLO | Error Budget |
|---|---|---|---|
| 角色 | 测量仪表 | 目标线 | 管理预算 |
| 时间粒度 | 秒级/分钟级 | 月度/季度 | 滚动窗口 |
| 典型告警 | SLI 偏离基线 | SLO 濒临违约 | Budget 消耗 > 50% |
| 行动触发 | 排查根因 | 升级响应 | 冻结发布 |
| 业务语言 | “系统响应慢了” | “我们承诺了 99.9%” | “还剩 20 分钟故障额度” |