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