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%,需要立即介入。
总 Error Budget = 10,000,000 × 0.1% = 10,000 次
消耗率 = 15,000 / 10,000 = 150%
→ 已超额消耗 50%,需要立即介入。
4.3 实时消耗与累积消耗
两种消耗模式服务于不同的运维场景,下表对比了它们的核心差异:
| 维度 | 实时消耗率 | 累积消耗率 |
|---|---|---|
| 计算粒度 | 分钟 / 小时 | 天 / 周 / 窗口周期 |
| 用途 | 检测突发故障、流量尖峰 | 评估长期趋势、容量规划决策 |
| 响应方式 | 触发告警、自动扩缩容 | 调整 SLO、申请额外资源 |
| 典型阈值 | 瞬时 > 200% 触发 P1 告警 | 累积 > 80% 触发容量评审 |
| 窗口重置影响 | 不受影响,持续计算 | 窗口重置时归零 |
4.4 消耗率与容量规划的关系
消耗率直接驱动容量规划的决策节奏。下图展示了消耗率如何从实时监控到长期规划形成闭环:
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%:超额状态,立即执行降级或扩容操作,启动故障复盘。
下图展示了消耗率阈值与对应动作的映射关系:
4.7 消耗率在容量规划中的核心作用
消耗率不是孤立的监控指标,而是容量规划决策链的起点。通过将消耗率与容量台账结合,SRE 团队可以实现:
- 提前预警:在累积消耗率达到 80% 时启动容量评审,避免被动响应。
- 精准扩容:根据实时消耗率的趋势预测未来预算耗尽时间,指导扩容时机和规模。
- 成本优化:在消耗率长期低于 40% 时,考虑缩减冗余资源,降低运营成本。
- SLO 调整依据:累积消耗率的长期趋势可作为 SLO 目标调整的数据支撑。
最佳实践: 将消耗率作为容量规划的“仪表盘主指针”。在 SLO 台账中,消耗率应占据最显眼的位置,所有容量决策都应首先回答“当前消耗率是多少?趋势如何?”。