4. SLO 预算定义:错误预算、燃烧率与 SLO 窗口期

在 SLO 复核流程中,错误预算(Error Budget)、燃烧率(Burn Rate) 和 SLO 窗口期(Compliance Window) 是三个最核心的量化工具。它们将抽象的“可靠性目标”转化为可实时监控、可预警、可决策的工程指标。Envoy 网关作为流量入口,其 SLO 预算管理直接决定了上游服务的可用性风险暴露程度。

4.1 错误预算(Error Budget)

错误预算 = 1 − SLO 目标值。它表示在 SLO 窗口期内,系统允许发生故障的“额度”。例如,若 Envoy 网关的 SLO 为 99.9%(三个九),则错误预算为 0.1%。

SLO 目标 错误预算(每 30 天) 允许的故障时间 典型场景
99.9%(三个九) 0.1% 约 43.2 分钟 生产核心 API 网关
99.99%(四个九) 0.01% 约 4.32 分钟 金融交易网关
99.5% 0.5% 约 3.6 小时 内部测试/预发环境
实践要点:错误预算不是“可浪费的额度”,而是“风险容器的容量”。Envoy 网关的请求量级通常很大(百万级 QPS),即使 0.01% 的错误预算也对应大量实际请求失败。建议将错误预算按天或按小时粒度进行可视化,避免在窗口期末尾才发现预算耗尽。

4.2 燃烧率(Burn Rate)

燃烧率 = 实际错误率 ÷ 错误预算率。它衡量错误预算消耗的速度。燃烧率 > 1 表示预算正在加速消耗;燃烧率 < 1 表示预算消耗速度低于预期。

Envoy 网关场景下,燃烧率通常按以下区间分级预警:

  • 绿色区(Burn Rate ≤ 1): 正常消耗,无需干预。
  • 黄色区(1 < Burn Rate ≤ 2): 轻度超速,需排查近期变更或流量异常。
  • 橙色区(2 < Burn Rate ≤ 5): 中度超速,触发自动扩容或降级策略。
  • 红色区(Burn Rate > 5): 严重超速,立即回滚或熔断。
燃烧率分级预警模型 绿色区 Burn Rate ≤ 1 正常消耗 黄色区 1 < Burn Rate ≤ 2 排查变更 橙色区 2 < Burn Rate ≤ 5 自动降级 红色区 Burn Rate > 5 立即熔断 燃烧率计算公式 Burn Rate = (实际错误请求数 / 总请求数) / (1 − SLO) 示例:SLO=99.9%,实际错误率=0.5% → Burn Rate = 0.5% / 0.1% = 5(橙色区) 注意:燃烧率需结合窗口期长度一起评估,短时间高燃烧率可能触发多窗口复合告警。

4.3 SLO 窗口期(Compliance Window)

SLO 窗口期是评估 SLO 合规性的时间范围。Envoy 网关通常使用 滚动窗口(Sliding Window) 而非固定日历窗口,以避免“月末冲刺”效应。常见窗口期配置:

窗口类型 典型长度 适用场景 Envoy 配置示例
短窗口 1 分钟 / 5 分钟 实时告警、快速检测 window: 5m
中窗口 1 小时 / 6 小时 变更影响评估、容量规划 window: 1h
长窗口 30 天 SLO 合规报告、季度复盘 window: 30d
常见误区:仅使用 30 天长窗口会导致“灾难性遗忘”——即使某天错误预算耗尽,只要后续几天恢复正常,30 天窗口仍可能显示合规。正确做法是同时监控多个窗口期(如 1h、6h、30d),并设置多级燃烧率告警。

4.4 三者关系与 Envoy 实践

错误预算、燃烧率、窗口期三者构成一个完整的 SLO 监控闭环:

  1. 定义基线: 根据业务重要性设定 SLO 目标,计算错误预算总量。
  2. 实时监控: 在多个窗口期内计算燃烧率,判断预算消耗速度。
  3. 分级响应: 根据燃烧率所在区间触发不同级别的自动化动作(告警、扩容、降级、熔断)。
  4. 复核调整: 定期(如每月)复核 SLO 预算消耗模式,调整窗口期长度或燃烧率阈值。
Envoy 网关 SLO 预算监控闭环 1. 定义基线 SLO 目标 → 错误预算 2. 实时监控 多窗口燃烧率计算 3. 分级响应 告警 / 扩容 / 熔断 复核调整 Envoy 实战:通过 rate_limits 和 outlier_detection 实现燃烧率驱动的自动降级
Envoy 网关配置参考:在 Envoy 的 envoy.filters.http.rate_limit 和 envoy.clusters.outlier_detection 中,可以结合燃烧率指标动态调整限流阈值和逐出策略。例如,当 5 分钟窗口燃烧率超过 3 时,自动将限流阈值降低 50%。