4. SLO 目标设定:基于历史数据的 SLO 阈值设定、燃烧速率与错误预算概念

SLO 目标设定是 SRE 可观测性体系的核心决策环节。合理的 SLO 阈值既要反映用户真实体验,又要为运维团队留出可操作的错误预算。本章聚焦三个关键动作:基于历史数据确定 SLO 阈值、理解燃烧速率(Burn Rate)的预警机制、掌握错误预算(Error Budget)的消耗与恢复逻辑。

4.1 基于历史数据的 SLO 阈值设定

直接拍一个“三个九”或“四个九”的 SLO 目标往往脱离实际。正确的做法是:以过去 4–8 周的真实 SLI 数据为基准,结合业务容忍度,反推出可达成且可测量的 SLO 阈值。

4.1.1 数据驱动的阈值计算步骤

  1. 采集 SLI 时间序列:从 APM、监控系统导出过去 30–60 天的 SLI 数据(如请求延迟、错误率、吞吐量),粒度建议 1 分钟。
  2. 计算累积分布(CDF):对延迟等指标,绘制 P50 / P90 / P95 / P99 的累积分布曲线。
  3. 确定基准线:选取 P95 或 P99 作为“典型最差体验”的锚点。
  4. 引入业务容忍系数:根据用户反馈、SLA 合同、收入影响,在基准线上增加 0.1%–0.5% 的容差。
  5. 验证可达成性:回测过去数据,确保新阈值下错误预算不会在 24 小时内耗尽。
实践建议:不要直接使用 P99 作为 SLO 阈值。P99 往往受极端长尾影响,建议使用 P99.5 或 P99.9 并配合最小样本量过滤(如每分钟少于 100 次请求的窗口不参与计算)。

4.1.2 阈值设定对比表

方法 优点 缺点 适用场景
固定百分比(如 99.9%) 简单、易沟通 脱离实际、容易触发告警疲劳 初期无历史数据时
历史 CDF 锚定法 贴合真实负载、可量化 需要 4 周以上高质量数据 成熟服务、有监控积累
用户感知校准法 直接反映体验 需要客户端埋点、主观性强 面向用户的关键路径
复合窗口法(多时间窗口加权) 兼顾短期波动与长期趋势 计算复杂、需要调整权重 高可用核心服务

4.2 燃烧速率概念与预警机制

燃烧速率(Burn Rate)衡量的是错误预算消耗的速度。它不是一个值,而是一个相对于 SLO 窗口的比率。例如:如果 SLO 窗口是 30 天,错误预算总量为 0.1%,而过去 1 小时消耗了 0.01%,则燃烧速率为 0.01% / (0.1% / (30×24)) ≈ 72 倍。

4.2.1 燃烧速率的分级告警策略

  • 低燃烧速率(< 1x):正常状态,无需干预。
  • 中等燃烧速率(1x – 10x):触发告警,需要人工排查。
  • 高燃烧速率(10x – 100x):触发紧急响应,可能影响 SLO 达成。
  • 极高燃烧速率(> 100x):立即触发 P0 事件,错误预算可能在数小时内耗尽。
常见误区:不要只设置一个燃烧速率阈值。单一阈值会导致“狼来了”效应。推荐使用多窗口燃烧速率(如 1 小时 / 6 小时 / 24 小时)组合判断,避免短时突发误报。

4.2.2 燃烧速率与错误预算消耗关系图

燃烧速率与错误预算消耗关系 时间窗口(30 天) 错误预算剩余 100% 消耗方向 低燃烧速率 < 1x 中燃烧速率 1x–10x 高燃烧速率 > 10x 30 天消耗 < 0.1% 1 天消耗 0.1%–1% 1 小时消耗 > 1%

4.3 错误预算概念与动态调整

错误预算(Error Budget)是 SLO 的“安全余量”。其核心公式为:

错误预算 = 1 - SLO 目标值
例如:SLO = 99.9%,则错误预算 = 0.1%(即 30 天内允许 43.2 分钟不可用)

4.3.1 错误预算的消耗与恢复机制

  • 消耗:每次 SLI 未达标事件都会消耗错误预算。消耗量 = 未达标请求数 / 总请求数。
  • 恢复:错误预算按时间窗口滚动恢复。例如 30 天窗口,每天恢复 1/30 的预算。
  • 透支:当错误预算耗尽时,触发“错误预算耗尽”状态,此时应停止所有非关键发布,优先恢复稳定性。
关键洞察:错误预算不是“惩罚”,而是“决策工具”。当预算充足时,团队可以放心进行功能发布、A/B 测试、甚至故障演练;当预算紧张时,应主动降低变更频率,增加防御性投入。

4.3.2 错误预算动态调整流程

错误预算动态调整流程 SLI 实时数据采集 计算当前错误预算消耗 判断预算是否充足 预算充足 → 正常发布 预算不足 → 冻结变更 反馈调整 SLO 阈值

4.4 多窗口燃烧速率与 SLO 阈值联动

单一窗口的燃烧速率容易产生误报。推荐使用多窗口燃烧速率组合来驱动 SLO 阈值自动调整:

窗口长度 燃烧速率阈值 告警级别 自动调整动作
1 小时 > 14.4x P1 触发紧急响应,暂停非关键发布
6 小时 > 6x P2 创建故障单,启动根因分析
24 小时 > 2x P3 记录事件,纳入周报复盘
7 天 > 1x P4 趋势告警,评估是否需要调整 SLO 阈值
自动调整规则示例:当 7 天燃烧速率持续 > 1x 且错误预算剩余 < 20% 时,系统自动将 SLO 阈值下调 0.05%(例如从 99.9% 调整为 99.85%),并通知 SRE 团队确认。这种“软降级”机制可以避免突发性 SLO 违约导致的业务恐慌。

4.5 本章小结

  • SLO 阈值设定:必须基于历史 CDF 数据,结合业务容忍系数,避免拍脑袋。
  • 燃烧速率:是错误预算消耗的“速度计”,多窗口组合判断可有效降低误报。
  • 错误预算:是 SRE 的决策杠杆,预算充足时鼓励创新,预算紧张时强制稳定。
  • 自动调整:通过多窗口燃烧速率联动,实现 SLO 阈值的动态自适应,减少人工干预。