2. SLO 基础概念:SLO、SLI、SLA 定义与三者关系
在构建服务画像与可靠性运营体系之前,必须精确理解三个核心术语:SLI(服务等级指标)、SLO(服务等级目标)和 SLA(服务等级协议)。这三者构成了可靠性度量与承诺的完整链条,也是后续误差预算计算与台账管理的基石。
2.1 SLI:服务等级指标(Service Level Indicator)
SLI 是对服务某个特定维度的直接量化度量,通常表现为一个随时间变化的数值或比率。SLI 是客观的、可采集的原始数据,不包含任何“好坏”判断。
- 定义:SLI = 符合预期行为的样本数 / 总样本数 × 100%
- 常见维度:可用性、延迟、吞吐量、错误率、饱和度。
- 采集方式:服务端日志、客户端埋点、中间件指标、拨测探针。
| SLI 维度 | 典型指标名称 | 度量单位 | 采集示例 |
|---|---|---|---|
| 可用性 | 请求成功率 | 百分比(%) | HTTP 200 / 总请求数 |
| 延迟 | P99 响应时间 | 毫秒(ms) | 99% 请求在 200ms 内完成 |
| 吞吐量 | 每秒请求数(RPS) | 次/秒 | Prometheus rate() 函数 |
| 错误率 | 5xx 占比 | 百分比(%) | 5xx 响应 / 总响应数 |
| 饱和度 | CPU 使用率 | 百分比(%) | node_cpu_seconds_total |
实践要点:SLI 必须可自动化采集,避免人工上报。优先选择对用户体验影响最直接的维度,例如“首页加载 P95 延迟”比“服务器 CPU 空闲率”更能反映真实服务质量。
2.2 SLO:服务等级目标(Service Level Objective)
SLO 是为 SLI 设定的目标阈值或范围,代表服务所有者期望达到的可靠性水平。SLO 是内部承诺,用于指导工程决策和运营节奏。
- 定义:SLO = SLI 的目标值 + 合规窗口(例如:过去 30 天滚动窗口内,99.9% 的请求延迟 ≤ 200ms)。
- 表达形式:通常为“X% 的请求在 Y 时间内完成”或“每月可用性不低于 Z%”。
- 合规窗口:常见窗口包括 7 天、28 天、30 天滚动窗口或日历月。
SLO 示例:
“在过去 28 天的滚动窗口内,99.9% 的 HTTP GET /api/v1/orders 请求的响应时间 ≤ 300ms。”
其中 SLI = P99 延迟,SLO 阈值 = 300ms,目标达成率 = 99.9%。
“在过去 28 天的滚动窗口内,99.9% 的 HTTP GET /api/v1/orders 请求的响应时间 ≤ 300ms。”
其中 SLI = P99 延迟,SLO 阈值 = 300ms,目标达成率 = 99.9%。
2.3 SLA:服务等级协议(Service Level Agreement)
SLA 是服务提供方与客户/用户之间签订的正式合同或协议,明确约定了服务的最低可靠性水平,以及未达标时的惩罚或补偿条款。
- 定义:SLA = 对外承诺的 SLO + 业务后果(赔偿、服务抵扣、违约金)。
- 关键特征:具有法律约束力;通常比内部 SLO 宽松(预留安全缓冲);包含明确的测量方法和争议解决机制。
- 常见条款:月度可用性 ≥ 99.99%,否则按比例退还当月服务费。
重要区分:SLA 是商业合同,SLO 是技术目标。不要将内部 SLO 直接写入 SLA,否则一旦 SLO 违约将触发法律赔偿。通常内部 SLO 比 SLA 严格 1~2 个 9(例如 SLA 99.9%,内部 SLO 设为 99.99%)。
2.4 三者关系:从度量到承诺的完整链路
SLI、SLO、SLA 构成了一条从原始数据 → 内部目标 → 外部承诺的递进关系链。理解这一链条是运营误差预算的前提。
2.5 三者对比速查表
| 维度 | SLI | SLO | SLA |
|---|---|---|---|
| 本质 | 原始度量数据 | 内部目标阈值 | 外部商业合同 |
| 受众 | 工程师、监控系统 | 工程团队、管理层 | 客户、法务、销售 |
| 约束力 | 无 | 内部纪律 | 法律约束 |
| 严格程度 | 如实反映 | 比 SLA 严格 | 比 SLO 宽松 |
| 变更频率 | 随系统变化 | 季度/月度评审 | 合同周期(年) |
| 违约后果 | 无直接后果 | 触发误差预算告警 | 赔偿/罚款 |
2.6 典型运营场景中的三者联动
以一个电商平台的“订单查询接口”为例,展示 SLI → SLO → SLA 在实际运营中的联动关系:
- 定义 SLI:采集过去 5 分钟内所有 /api/orders 请求的响应时间,计算 P99 延迟值。
- 设定 SLO:过去 28 天滚动窗口内,P99 延迟 ≤ 500ms 的占比 ≥ 99.9%。
- 签订 SLA:合同约定月度可用性 ≥ 99.95%,若低于此值则退还当月 10% 服务费。
- 运营动作:当 SLO 接近违约(误差预算剩余不足 20%)时,工程团队冻结新功能发布,优先修复性能问题。
关键公式:
误差预算 = 1 − SLO 目标值
例如:SLO = 99.9%,则误差预算 = 0.1%。
当实际 SLI 消耗的误差预算超过 100% 时,SLO 违约。
误差预算 = 1 − SLO 目标值
例如:SLO = 99.9%,则误差预算 = 0.1%。
当实际 SLI 消耗的误差预算超过 100% 时,SLO 违约。