3. Error Budget 基础:定义、来源与计算公式
Error Budget(错误预算)是连接服务可靠性目标与日常运维决策的核心量化工具。它回答了这样一个问题:在保证用户满意的前提下,服务可以“不健康”多长时间?理解 Error Budget 的定义、来源与计算方式,是后续进行容量水位协同优化的前提。
3.1 Error Budget 的定义
Error Budget 是指在给定时间窗口内,服务允许违反 SLO(服务等级目标)的最大累计时间或比例。它本质上是 1 减去 SLO 目标值 所对应的“可容忍错误额度”。
- 核心思想:100% 可靠性既不现实也不经济。Error Budget 将可靠性目标转化为一个可消耗的“预算”,允许团队在预算范围内进行变更、发布或容量调整。
- 消费与告警:当错误消耗超过预算时,触发告警并需要暂停高风险操作(如新版本发布),优先恢复稳定性。
- 协同价值:在容量规划中,Error Budget 直接反映了当前服务是否处于“健康冗余”状态,为扩容或缩容提供决策依据。
关键认知:Error Budget 不是“允许犯错”,而是“量化容错空间”。它让可靠性从模糊的目标变为可度量、可管理的工程指标。
3.2 Error Budget 的来源:SLO 与 SLI
Error Budget 并非凭空产生,它由 SLI(服务等级指标) 和 SLO(服务等级目标) 共同定义。
| 术语 | 定义 | 示例 | 与 Error Budget 的关系 |
|---|---|---|---|
| SLI | 服务性能的量化指标,直接反映用户体验。 | 请求延迟 P99 ≤ 200ms;请求成功率 ≥ 99.9% | Error Budget 的测量对象。只有定义了 SLI,才能计算错误。 |
| SLO | 服务所有者对用户承诺的 SLI 目标值,通常是一个阈值。 | 月度请求成功率 SLO = 99.95% | Error Budget 的基准线。SLO 越高,Error Budget 越小。 |
| Error Budget | SLO 允许的容错空间。 | 月度 Error Budget = 100% - 99.95% = 0.05% | 由 SLO 直接计算得出,是 SLO 的“镜像”。 |
公式化关系:
Error Budget = 1 - SLO
其中 SLO 以小数形式表示(例如 99.95% 对应 0.9995)。
Error Budget = 1 - SLO
其中 SLO 以小数形式表示(例如 99.95% 对应 0.9995)。
3.3 Error Budget 计算公式
Error Budget 的计算取决于 SLO 的定义方式(基于请求计数或基于时间窗口)以及时间窗口长度。以下是两种最常见的计算口径:
3.3.1 基于请求计数的 Error Budget
适用于成功率类 SLO(如请求成功率、可用性)。
Error Budget (请求数) = 总请求数 × (1 - SLO)
示例:
- 月度总请求数 = 10,000,000
- SLO = 99.95% (0.9995)
- Error Budget = 10,000,000 × (1 - 0.9995) = 10,000,000 × 0.0005 = 5,000 次失败请求
3.3.2 基于时间窗口的 Error Budget
适用于时长类 SLO(如可用时间、无故障时间)。
Error Budget (时间) = 总时间窗口 × (1 - SLO)
示例:
- 月度总时间 = 30 天 × 24 小时 × 60 分钟 = 43,200 分钟
- SLO = 99.9% (0.999)
- Error Budget = 43,200 × (1 - 0.999) = 43,200 × 0.001 = 43.2 分钟
重要区分:基于请求计数的 Error Budget 更精确地反映用户实际体验;基于时间窗口的 Error Budget 更适合基础设施或平台类服务。在容量规划中,推荐优先使用基于请求计数的口径,因为它与流量水位直接挂钩。
3.4 Error Budget 消耗与剩余
在实际运维中,我们不仅需要知道总预算,还需要实时跟踪 已消耗预算 和 剩余预算。
| 指标 | 计算公式 | 说明 |
|---|---|---|
| 已消耗 Error Budget | 实际错误数 / 总请求数 | 当前周期内已发生的错误比例。 |
| 剩余 Error Budget | 总 Error Budget - 已消耗 Error Budget | 剩余可用的容错空间。当剩余趋近于 0 时触发告警。 |
| 消耗率 | 已消耗 Error Budget / 总 Error Budget × 100% | 用于判断预算消耗速度是否异常。 |
3.5 多 SLO 场景下的 Error Budget 聚合
一个服务通常包含多个 SLI(如延迟、成功率、吞吐量),每个 SLI 对应一个 SLO。此时需要定义 复合 Error Budget 或 最差 Error Budget。
- 复合 Error Budget:将所有 SLI 的 Error Budget 加权求和,适用于整体健康度评估。
- 最差 Error Budget:取所有 SLI 中剩余预算最小的那个作为决策依据,适用于严格可靠性场景。
- 推荐实践:在容量规划中,建议使用“最差 Error Budget”作为水位判断的保守口径,避免因单一指标掩盖容量风险。
容量规划关联:Error Budget 剩余比例直接反映服务的“可靠性冗余”。当剩余预算充足时,说明当前容量足以吸收额外负载;当剩余预算快速消耗时,提示容量可能接近瓶颈,需要提前扩容。