4. Error Budget 消耗与燃烧速率:定义燃烧速率 (Burn Rate) 与衡量预算消耗速度
在 SRE 实践中,仅仅知道 Error Budget 剩余多少是不够的——我们需要知道它消耗得有多快。燃烧速率 (Burn Rate) 正是衡量这一速度的核心指标,它决定了团队是否需要在故障发生后的几分钟内触发告警,以及是否应该自动阻断灰度发布。
4.1 燃烧速率的定义
燃烧速率表示在给定时间窗口内,Error Budget 消耗的速度相对于总预算的比例。简单来说,它回答了一个问题:“按照当前的错误率,我们多久会耗尽整个季度的 Error Budget?”
核心公式:
Burn Rate = 实际错误率 / 错误预算率 (Error Budget Rate)
其中:
- 错误预算率 = (1 - SLO) × 100%
- 实际错误率 = 1 - 实际可用性
示例: 假设 SLO 为 99.9%(错误预算率 = 0.1%),当前实际可用性为 99.7%(错误率 = 0.3%)。
Burn Rate = 0.3% / 0.1% = 3.0
这意味着当前消耗速度是预算生成速度的 3 倍。如果持续保持此速率,原本支持一个季度的 Error Budget 将在 1/3 的时间内耗尽。
4.2 燃烧速率的分级与告警阈值
Google SRE 经典实践将燃烧速率分为三个关键等级,每个等级对应不同的响应时间和行动策略:
| 等级 | 燃烧速率 | 耗尽时间(季度预算) | 告警响应要求 | 灰度发布影响 |
|---|---|---|---|---|
| 慢速燃烧 | 1.0 ~ 2.0 | ≥ 45 天 | 工作时间告警,24h 内响应 | 允许低风险发布,需人工评估 |
| 中速燃烧 | 2.0 ~ 6.0 | 15 ~ 45 天 | 即时告警,1h 内响应 | 暂停灰度发布,进入降级模式 |
| 快速燃烧 | ≥ 6.0 | < 15 天 | 紧急告警,立即响应 | 阻断所有发布,回滚已发布版本 |
实践建议: 燃烧速率告警应使用 多窗口策略。例如:同时监控 1 小时窗口(快速检测突发故障)和 6 小时窗口(检测持续低强度退化),避免单一窗口导致的误报或漏报。
4.3 燃烧速率与 Error Budget 消耗的关系图
下图展示了不同燃烧速率下 Error Budget 的消耗曲线。横轴为时间(天),纵轴为 Error Budget 剩余百分比。快速燃烧(红色)在短时间内耗尽预算,而慢速燃烧(绿色)则允许更长的响应窗口。
4.4 多窗口燃烧速率检测策略
单一时间窗口的燃烧速率容易产生误判。推荐使用 双窗口策略 来平衡检测速度与准确性:
- 短窗口(1 小时):快速检测突发性故障,燃烧速率 ≥ 12 时立即告警。
- 长窗口(6 小时):检测持续性低强度退化,燃烧速率 ≥ 3 时触发告警。
- 组合逻辑:两个窗口同时超过阈值才触发阻断,避免因单次抖动误阻断发布。
常见陷阱: 仅依赖短窗口可能导致“告警风暴”,而仅依赖长窗口可能错过快速蔓延的故障。务必为不同窗口设置差异化的燃烧速率阈值,并采用 AND 或 OR 逻辑组合。
4.5 燃烧速率在灰度发布准入中的应用
在灰度发布准入环境中,燃烧速率是自动化决策的关键输入:
- 准入检查:灰度发布前,检查当前全局燃烧速率。若处于快速燃烧状态(≥ 6.0),直接阻断发布。
- 发布中监控:灰度发布期间,持续监控燃烧速率变化。若速率从慢速跃升至中速,自动暂停发布并回滚。
- 预算恢复后重试:当燃烧速率降至 1.0 以下并稳定超过 24 小时,允许重新发起灰度发布。
通过将燃烧速率与灰度发布准入系统集成,团队可以实现故障场景下的自动化止损,避免人为决策延迟。