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 来源:SLI → SLO → Error Budget SLI 服务等级指标 SLO 服务等级目标 Error Budget 错误预算 定义阈值 计算容错 核心推导链 SLI 是测量指标 → SLO 是目标承诺 → Error Budget 是允许的偏差空间

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% 用于判断预算消耗速度是否异常。
Error Budget 消耗与剩余状态 总 Error Budget (100%) 已消耗 30% 剩余 70% 告警阈值 (20% 剩余) Error Budget 状态决策 • 剩余充足(绿色):可进行发布、扩容等变更操作 • 剩余不足(黄色/红色):暂停变更,优先恢复稳定性 • 已耗尽(红色):触发紧急响应,必须立即止血

3.5 多 SLO 场景下的 Error Budget 聚合

一个服务通常包含多个 SLI(如延迟、成功率、吞吐量),每个 SLI 对应一个 SLO。此时需要定义 复合 Error Budget 或 最差 Error Budget。

  • 复合 Error Budget:将所有 SLI 的 Error Budget 加权求和,适用于整体健康度评估。
  • 最差 Error Budget:取所有 SLI 中剩余预算最小的那个作为决策依据,适用于严格可靠性场景。
  • 推荐实践:在容量规划中,建议使用“最差 Error Budget”作为水位判断的保守口径,避免因单一指标掩盖容量风险。
容量规划关联:Error Budget 剩余比例直接反映服务的“可靠性冗余”。当剩余预算充足时,说明当前容量足以吸收额外负载;当剩余预算快速消耗时,提示容量可能接近瓶颈,需要提前扩容。