1.1 什么是 SLO、SLI、SLA?

在云原生运维与站点可靠性工程(SRE)体系中,SLO(Service Level Objective)、SLI(Service Level Indicator) 与 SLA(Service Level Agreement) 是三个最基础、最核心的概念。它们共同构成了服务质量的度量、承诺与契约体系。理解这三者的定义与关系,是进行 SLO 预算复核的前提。

1.1.1 SLI:服务等级指标

SLI 是对服务某个特定维度的量化度量。它回答的是“我们测量了什么”。常见的 SLI 包括请求延迟、错误率、吞吐量、可用性等。

  • 延迟(Latency):如“99% 的请求在 200ms 内完成”。
  • 错误率(Error Rate):如“HTTP 500 响应占比低于 0.1%”。
  • 吞吐量(Throughput):如“每秒处理 1000 个请求”。
  • 可用性(Availability):如“服务正常运行时间占比 99.9%”。
实践要点: SLI 必须可采集、可计算、可监控。通常使用“好事件 / 总事件”的比率形式表达,例如:SLI = 成功请求数 / 总请求数。

1.1.2 SLO:服务等级目标

SLO 是为 SLI 设定的目标阈值。它回答的是“我们希望服务达到什么水平”。SLO 是 SRE 团队内部或与业务方达成的承诺目标,是日常运维和预算复核的核心依据。

  • 示例:在 30 天滚动窗口内,99.9% 的请求延迟 ≤ 200ms。
  • 预算:SLO 定义了“错误预算”(Error Budget),即允许服务不达标的时间或事件数量。
关键区别: SLO 是目标,不是保证。它是团队努力达到的基准,也是触发告警和采取行动的门槛。

1.1.3 SLA:服务等级协议

SLA 是服务提供方与用户/客户之间签订的正式合同。它回答的是“我们向客户承诺了什么”。SLA 通常包含 SLO 作为核心条款,并附加惩罚或补偿机制(如服务抵扣券、退款)。

  • 示例:合同中承诺“月度可用性不低于 99.9%,否则按比例退款”。
  • 性质:SLA 是商业契约,具有法律约束力;SLO 是技术目标,用于内部管理。
常见误区: 不要将内部 SLO 直接作为 SLA 对外发布。SLA 通常比 SLO 更宽松(例如 SLA 为 99.9%,内部 SLO 为 99.95%),以留出安全缓冲。

1.1.4 三者关系与区别

SLI、SLO、SLA 构成了从度量 → 目标 → 契约的递进关系。下表总结了它们的核心差异:

维度 SLI(指标) SLO(目标) SLA(协议)
定义 服务质量的量化度量 为 SLI 设定的目标阈值 与客户签订的正式服务合同
回答的问题 我们测量了什么? 我们希望达到什么水平? 我们向客户承诺了什么?
受众 SRE / 运维 / 开发团队 SRE / 业务 / 管理层 客户 / 法务 / 商务
约束力 无 内部管理目标 法律/商业契约
示例 请求延迟 P99 P99 ≤ 200ms(30天窗口) 月度可用性 ≥ 99.9%
惩罚机制 无 触发告警、复盘、改进 补偿、退款、罚金

1.1.5 三者的层级关系

下图直观展示了 SLI、SLO、SLA 在服务质量管理中的层级与流程关系:

SLI / SLO / SLA 层级关系图 SLA(服务等级协议) 商业契约 · 法律约束 · 补偿机制 SLO(服务等级目标) 内部目标 · 错误预算 · 告警阈值 SLI(服务等级指标) 延迟 · 错误率 · 吞吐量 · 可用性 度量(SLI)→ 目标(SLO)→ 契约(SLA)

1.1.6 实际案例:电商系统

以一个电商平台的“商品详情页”服务为例,展示三者的具体落地:

  • SLI:商品详情页的 P50 延迟、P99 延迟、HTTP 200 响应占比。
  • SLO:过去 28 天内,P99 延迟 ≤ 300ms 的占比 ≥ 99.9%。
  • SLA:与商家签订的合同中承诺“月度可用性 ≥ 99.95%”,否则减免当月服务费。
预算复核视角: 在 SLO 预算复核中,我们关注的是 SLO 的达成情况与剩余错误预算。SLA 是最终红线,但日常运维以 SLO 为锚点。

1.1.7 常见误区与避坑指南

误区 正确理解
将 SLI 直接当作 SLO SLI 是原始数据,SLO 是目标阈值,需要设定窗口和达标率
SLO 设置过于严格 导致频繁告警、错误预算耗尽,团队疲于应对
SLA 与 SLO 完全一致 没有缓冲空间,一旦 SLO 未达标即触发 SLA 赔偿
忽略 SLI 的采集质量 数据不准导致 SLO 计算失真,预算复核失去意义