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 在服务质量管理中的层级与流程关系:
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 计算失真,预算复核失去意义 |