1. SLI 与 SLO 基础概念
在构建可观测性体系与可靠性工程实践时,SLI、SLO 与 SLA 是三个最核心的术语。它们共同构成了服务质量的度量、目标与承诺体系。理解三者的定义及其关系,是后续进行 Metric Design 与 SLI 口径设计的前提。
1.1 SLI(Service Level Indicator)—— 服务等级指标
SLI 是对服务某个特定维度质量的直接量化度量。它回答的是“服务现在表现如何”的问题。
- 定义:SLI 是一个随时间变化的数值,通常表示为比率、百分比或计数。
- 常见维度:可用性、延迟、吞吐量、错误率、饱和度。
- 典型形式:
请求成功数 / 总请求数、响应时间 < 200ms 的请求数 / 总请求数。 - 数据来源:通常来自监控系统、日志、链路追踪或业务埋点。
关键原则:SLI 必须可测量、可采集、可聚合。一个好的 SLI 定义应明确“分子是什么、分母是什么、统计窗口是多长”。
1.2 SLO(Service Level Objective)—— 服务等级目标
SLO 是为 SLI 设定的目标阈值或目标范围。它回答的是“我们希望服务表现成什么样”的问题。
- 定义:SLO 是 SLI 在一段评估周期内需要达到的目标值,通常以百分比表示。
- 示例:
99.9% 的请求在 200ms 内完成、99.99% 的请求成功。 - 评估周期:通常为 30 天、季度或自定义滚动窗口。
- 用途:作为团队内部可靠性决策边界,触发告警、容量规划或发布门禁。
实践建议:SLO 应设置得比 SLA 更严格(通常高 0.1% ~ 0.5%),为 SLA 留出安全缓冲。例如 SLA 为 99.9%,SLO 可设为 99.95%。
1.3 SLA(Service Level Agreement)—— 服务等级协议
SLA 是服务提供方与用户/客户之间签订的正式合同或承诺。它回答的是“我们向客户承诺了什么,以及违约后果是什么”的问题。
- 定义:SLA 是对外承诺,通常包含 SLO 目标、测量方式、报告周期以及违约惩罚(如服务抵扣、退款)。
- 特点:具有法律或商业约束力;通常比 SLO 宽松;涉及业务影响评估。
- 常见内容:可用性 ≥ 99.9%、月度 uptime 计算方式、故障响应时间、赔偿条款。
注意:SLA 是商业合同,SLO 是技术目标。不要将内部 SLO 直接写入 SLA,否则可能因过于严格导致频繁违约或过度投入。
1.4 三者关系与区别
三者的核心关系可以用一句话概括:SLI 是测量值,SLO 是目标值,SLA 是承诺值。下面通过表格和图示进一步说明。
| 维度 | SLI | SLO | SLA |
|---|---|---|---|
| 本质 | 度量指标 | 目标阈值 | 商业协议 |
| 受众 | 工程师、监控系统 | 工程团队、管理层 | 客户、法务、商务 |
| 约束力 | 无 | 内部约束 | 法律/商业约束 |
| 严格程度 | 如实反映 | 较严格(预留缓冲) | 较宽松(商业可接受) |
| 变更频率 | 随系统变化 | 季度/版本迭代 | 合同周期(年/半年) |
| 典型示例 | 请求延迟 P99 = 150ms | P99 延迟 ≤ 200ms | 月度可用性 ≥ 99.9% |
1.5 三者关系示意图
下图展示了 SLI、SLO、SLA 在服务可靠性管理中的层级关系与数据流向。
1.6 典型场景示例
以一个电商平台的“商品详情页加载”为例,说明三者如何协同工作:
- SLI 定义:
商品详情页在 2 秒内完成加载的请求数 / 总请求数,统计窗口为 1 分钟。 - SLO 设定:在 30 天滚动窗口内,该 SLI 的值 ≥ 99.5%。
- SLA 承诺:与商家签订的合同中写明“月度页面加载成功率 ≥ 99.0%”,否则按比例减免平台服务费。
关键洞察:SLO(99.5%)比 SLA(99.0%)严格 0.5 个百分点,这 0.5% 就是团队的“错误预算”缓冲空间。当 SLI 跌破 SLO 但仍在 SLA 之上时,团队应停止发布新功能,优先修复可靠性问题。
1.7 常见误区与避坑
- 误区一:将 SLI 直接当作 SLO。SLI 是原始数据,SLO 是带阈值的决策目标。
- 误区二:SLA 与 SLO 使用同一数值。这会导致没有缓冲,任何微小波动都可能触发违约。
- 误区三:SLI 定义不清晰。例如“请求成功率”未明确分母是否包含健康检查、爬虫或重试请求,导致口径混乱。
- 误区四:SLO 设置过多。建议每个服务只定义 2~3 个核心 SLO,避免监控疲劳。