2. SLO基础概念

在构建可观测性体系与 SRE 实践时,服务水平指标(SLI)、服务水平目标(SLO) 与 错误预算(Error Budget) 是三个最核心的基石。它们共同构成了从“测量”到“目标”再到“容错决策”的闭环。理解三者的定义与关系,是优化 SLO 台账度量基线的第一步。

2.1 服务水平指标(SLI)

SLI 是对服务质量的某个特定维度进行定量测量的指标。它回答的是“服务现在表现如何”的问题。SLI 必须是可测量、可聚合、可比较的数值。

  • 常见维度:可用性、延迟(响应时间)、吞吐量(每秒请求数)、错误率、饱和度(资源使用率)。
  • 测量方式:通常以“好事件 / 总事件”的比例形式表示,例如“请求成功数 / 总请求数”。
  • 聚合窗口:SLI 通常在一个时间窗口(如 1 分钟、5 分钟、30 天)内进行聚合计算。
SLI 设计原则: 选择与用户体验强相关的指标。避免选择难以测量或与用户感知脱节的内部指标。例如,对于 Web 服务,优先选择“页面加载时间”而非“CPU 空闲率”。

2.2 服务水平目标(SLO)

SLO 是为 SLI 设定的目标阈值。它回答的是“我们希望服务表现成什么样”的问题。SLO 是一个具体的、可达成且可衡量的承诺值,通常以百分比形式表示。

  • 示例:“99.9% 的请求在 200ms 内完成”(延迟 SLO)或“99.99% 的请求返回成功”(可用性 SLO)。
  • 时间窗口:SLO 必须绑定一个明确的时间窗口(如“过去 30 天内”或“滚动 28 天”),用于评估合规性。
  • 目标 vs 现实:SLO 应设定为比实际能力略低的值,以预留容错空间。100% 的 SLO 通常不切实际且成本极高。
常见误区: 将 SLO 与 SLA(服务水平协议)混淆。SLA 是面向客户的、带有惩罚条款的合同承诺;SLO 是内部或对等的、用于指导工程决策的目标。SLO 通常比 SLA 更严格。

2.3 错误预算(Error Budget)

Error Budget 是 SLO 的衍生概念,它量化了服务在给定时间窗口内允许失败的总量。它回答的是“我们还有多少容错空间”的问题。

  • 计算公式:Error Budget = (1 - SLO) × 总事件数。
  • 示例:若 SLO 为 99.9%,总请求数为 1,000,000,则 Error Budget = (1 - 0.999) × 1,000,000 = 1,000 个错误请求。
  • 消耗与剩余:每次服务失败(未达到 SLI 阈值)都会消耗 Error Budget。当 Error Budget 耗尽时,意味着服务已超出目标,需要暂停新功能发布,优先进行稳定性投入。
核心价值: Error Budget 将“稳定性”与“创新速度”统一到一个可量化的框架中。只要 Error Budget 充足,团队可以放心地进行快速迭代;一旦 Budget 告急,则必须转向稳定性工作。这消除了“发布 vs 稳定”的零和博弈。

2.4 三者的关系与闭环

SLI、SLO 与 Error Budget 构成了一个持续反馈的闭环系统。下图展示了它们之间的核心关系与数据流向。

SLI、SLO 与 Error Budget 关系图 SLI、SLO 与 Error Budget 闭环关系 用户请求 SLI 测量 SLO 目标 Error Budget 决策与行动 产生数据 对比阈值 计算消耗 定义上限 驱动决策 优化/变更 闭环说明: 1. 用户请求产生原始数据,SLI 进行测量。 2. SLI 与 SLO 目标对比,计算 Error Budget 消耗。 3. Error Budget 状态驱动团队决策(发布/稳定),决策结果影响后续用户请求。

2.5 概念对比与总结

下表从定义、形式、用途和典型示例四个维度,对 SLI、SLO 和 Error Budget 进行对比,帮助快速建立清晰的概念边界。

维度 SLI(服务水平指标) SLO(服务水平目标) Error Budget(错误预算)
定义 服务质量的定量测量 为 SLI 设定的目标阈值 允许失败的总量上限
形式 比率、延迟、吞吐量等 百分比 + 时间窗口 数值(次数或时间)
核心问题 现在表现如何? 我们希望表现如何? 我们还有多少容错空间?
典型示例 请求成功率 = 99.95% 30 天内成功率 ≥ 99.9% 30 天内允许 0.1% 的失败
主要用途 监控与告警 目标管理与承诺 发布决策与稳定性投入

2.6 实践中的关键关系

在实际的 SLO 台账度量基线优化中,需要牢记以下三条核心关系:

  1. SLO 是 SLI 的“护栏”:没有 SLO 的 SLI 只是数据,无法指导决策。SLO 为 SLI 提供了评判标准。
  2. Error Budget 是 SLO 的“量化器”:它将抽象的百分比目标转化为具体的、可操作的容错额度,让团队直观感知风险。
  3. 三者构成“测量-目标-行动”闭环:SLI 测量现状,SLO 定义期望,Error Budget 驱动行动。缺少任何一环,稳定性管理都会变成盲人摸象。
基线优化切入点: 在建立 SLO 台账时,应首先确保 SLI 的采集口径准确、SLO 的窗口定义清晰、Error Budget 的计算逻辑透明。这三个基础要素的混乱,是后续所有度量基线问题的根源。