4. Error Budget 消耗率:消耗率定义、消耗率计算公式、实时消耗与累积消耗

Error Budget 消耗率是 SLO 台账容量规划中最核心的动态指标。它回答了“我们正在以多快的速度消耗错误预算”这一关键问题。理解消耗率,才能从静态的 SLO 目标转向动态的容量风险控制。

4.1 消耗率定义

Error Budget 消耗率(简称消耗率)是指在单位时间窗口内,实际消耗的错误预算数量占该时间窗口总错误预算的比例。它反映了服务可靠性“支出”的速度。

  • 实时消耗率:当前时刻的瞬时消耗速率,通常以分钟或小时为粒度计算,用于监控突发异常。
  • 累积消耗率:从窗口起始点到当前时刻的总消耗比例,用于评估整体健康度。
关键认知: 消耗率 > 1 意味着消耗速度超过了预算生成速度,服务正在“透支”未来的可靠性额度。这是容量规划中需要立即响应的预警信号。

4.2 消耗率计算公式

消耗率的计算基于 SLO 窗口内的总错误预算和已消耗的错误预算。以下是标准公式:

消耗率 = (已消耗 Error Budget) / (总 Error Budget) × 100%

其中:
总 Error Budget = (1 - SLO) × 总请求量 × 窗口时长
已消耗 Error Budget = 总请求量 × 窗口时长 - 成功请求量

更直观的简化公式(适用于固定 SLO 和固定窗口):

消耗率 = (实际错误率 - (1 - SLO)) / (1 - SLO) × 100%

当实际错误率 ≤ (1 - SLO) 时,消耗率为 0 或负值(表示预算在积累)。
示例: 某服务 SLO = 99.9%(允许错误率 0.1%),30 天窗口总请求 10,000,000 次。若当前已发生 15,000 次错误,则:
总 Error Budget = 10,000,000 × 0.1% = 10,000 次
消耗率 = 15,000 / 10,000 = 150%
→ 已超额消耗 50%,需要立即介入。

4.3 实时消耗与累积消耗

两种消耗模式服务于不同的运维场景,下表对比了它们的核心差异:

维度 实时消耗率 累积消耗率
计算粒度 分钟 / 小时 天 / 周 / 窗口周期
用途 检测突发故障、流量尖峰 评估长期趋势、容量规划决策
响应方式 触发告警、自动扩缩容 调整 SLO、申请额外资源
典型阈值 瞬时 > 200% 触发 P1 告警 累积 > 80% 触发容量评审
窗口重置影响 不受影响,持续计算 窗口重置时归零

4.4 消耗率与容量规划的关系

消耗率直接驱动容量规划的决策节奏。下图展示了消耗率如何从实时监控到长期规划形成闭环:

消耗率驱动的容量规划闭环 实时消耗率 分钟级 / 小时级 累积消耗率 天级 / 窗口级 告警 & 自动伸缩 阈值触发 容量评估 SLO 台账分析 容量规划决策 扩缩容 / 降级 策略调整 SLO / 预算重分配 闭环说明: 实时消耗率触发告警 → 自动伸缩或人工介入 → 累积消耗率驱动容量评估 → 规划决策反馈到策略调整 → 调整后的策略影响下一周期的实时消耗率,形成持续优化闭环。

4.5 消耗率计算实践:台账示例

以下是一个 7 天窗口的 SLO 台账片段,展示实时消耗与累积消耗的计算过程:

日期 总请求 错误数 实时消耗率 累积消耗率 状态
第 1 天 1,000,000 800 80% 80% 正常
第 2 天 1,200,000 1,500 125% 115% ⚠️ 预警
第 3 天 900,000 600 67% 97% ⚠️ 预警
第 4 天 1,100,000 1,200 109% 103% 🔴 超额
第 5 天 1,000,000 400 40% 90% ⚠️ 预警
第 6 天 1,300,000 1,000 77% 86% 正常
第 7 天 1,000,000 500 50% 80% 正常
注意: 上表中 SLO = 99.9%(允许错误率 0.1%),总 Error Budget = 7,500 次错误(7 天 × 日均 1,071,429 请求 × 0.1%)。第 4 天累积消耗率超过 100%,意味着整个窗口的预算已提前耗尽,后续所有错误都将导致 SLO 违约。

4.6 消耗率阈值与响应策略

根据消耗率的不同区间,SRE 团队应执行差异化的响应策略:

  • 消耗率 < 60%:健康状态,按常规运维流程执行。
  • 消耗率 60% ~ 80%:关注状态,启动容量趋势分析,准备应急预案。
  • 消耗率 80% ~ 100%:预警状态,触发容量评审会议,评估是否需要提前扩容。
  • 消耗率 > 100%:超额状态,立即执行降级或扩容操作,启动故障复盘。

下图展示了消耗率阈值与对应动作的映射关系:

消耗率阈值与响应策略映射 健康区:消耗率 < 60% → 常规运维 关注区:60% ~ 80% → 趋势分析 & 预案准备 预警区:80% ~ 100% → 容量评审 & 提前扩容 超额区:> 100% → 立即降级 / 扩容 & 故障复盘 消耗率越高,响应动作的紧急程度和资源投入越大

4.7 消耗率在容量规划中的核心作用

消耗率不是孤立的监控指标,而是容量规划决策链的起点。通过将消耗率与容量台账结合,SRE 团队可以实现:

  • 提前预警:在累积消耗率达到 80% 时启动容量评审,避免被动响应。
  • 精准扩容:根据实时消耗率的趋势预测未来预算耗尽时间,指导扩容时机和规模。
  • 成本优化:在消耗率长期低于 40% 时,考虑缩减冗余资源,降低运营成本。
  • SLO 调整依据:累积消耗率的长期趋势可作为 SLO 目标调整的数据支撑。
最佳实践: 将消耗率作为容量规划的“仪表盘主指针”。在 SLO 台账中,消耗率应占据最显眼的位置,所有容量决策都应首先回答“当前消耗率是多少?趋势如何?”。