SLO服务等级指标与容量压测水位联合建模 - 第1节
1.1 服务等级指标(SLI)—— 衡量什么
服务等级指标(Service Level Indicator, SLI)是对服务质量某个维度的直接量化测量。没有 SLI,SLO 和 SLA 就失去了数据基础。
- 定义:一个可采集、可计算的数值,反映服务在特定时间窗口内的行为。
- 常见维度:可用性、延迟、吞吐量、错误率、持久性。
- 采集方式:服务端埋点、客户端上报、拨测探针、日志聚合。
关键原则:SLI 必须可测量、可对比、可归因。避免“用户体验好”这类主观描述,应转化为“99% 的请求在 200ms 内完成”。
1.2 服务等级目标(SLO)—— 目标是多少
服务等级目标(Service Level Objective, SLO)是为 SLI 设定的目标阈值或范围,代表服务所有者承诺的内部质量水位。
- 定义:SLI 的期望值,通常以“时间窗口内的达标百分比”表示。
- 示例:“月度可用性 ≥ 99.9%”、“P99 延迟 ≤ 500ms”。
- 用途:驱动容量规划、变更风控、错误预算管理。
实践建议:SLO 应比实际能力留出 10%~20% 的缓冲,避免因微小波动频繁触发告警。例如内部目标设为 99.95%,对外承诺 99.9%。
1.3 服务等级协议(SLA)—— 对外承诺什么
服务等级协议(Service Level Agreement, SLA)是服务提供方与用户/客户之间的正式合同条款,明确服务质量承诺及未达标时的补偿机制。
- 定义:具有法律或商业约束力的协议,通常包含 SLO、测量方式、报告周期、补偿条款。
- 与 SLO 的关系:SLA 中引用的 SLO 通常比内部 SLO 更宽松,以留出安全边际。
- 常见补偿:服务 credits、退款、延长服务期。
风险提示:SLA 一旦签署,未达标将产生直接财务成本。务必确保内部 SLO 严格优于 SLA 承诺值,并建立独立的 SLA 监控与报告管道。
1.4 三者的核心区别
| 维度 | SLI | SLO | SLA |
|---|---|---|---|
| 本质 | 测量指标 | 目标阈值 | 合同条款 |
| 受众 | 工程师、监控系统 | 工程团队、管理层 | 客户、法务、商务 |
| 约束力 | 无 | 内部管理约束 | 法律/商业约束 |
| 示例 | 请求延迟 P99 = 120ms | P99 延迟 ≤ 200ms(月度 99.9%) | P99 延迟 ≤ 300ms,否则赔偿 5% 月费 |
| 调整频率 | 随系统变更 | 季度/版本迭代 | 合同周期(通常 ≥ 1 年) |
1.5 三者的协作关系
下图展示了从原始测量到商业承诺的完整链路:
1.6 典型错误预算模型
错误预算(Error Budget)是 SLO 的衍生概念:错误预算 = 1 − SLO。例如 SLO 为 99.9%,则每月错误预算为 0.1% × 30 天 × 24 小时 × 60 分钟 = 43.2 分钟。团队可在预算内安排变更、发布,超出则冻结上线。
容量压测关联:压测水位通常以 SLO 为基准线。当压测达到 SLO 边界(如 P99 延迟接近 200ms)时,即视为容量瓶颈点,需触发扩容或限流策略。
1.7 常见误区与避坑
- 误区一:SLI 越多越好。 → 应聚焦 3~5 个核心维度,避免监控噪音。
- 误区二:SLO 等于 SLA。 → 内部目标应比对外承诺更严格,留出安全边际。
- 误区三:SLA 只写 SLO 不写补偿。 → 缺少补偿条款的 SLA 不具备约束力。
- 误区四:忽略 SLI 的统计口径。 → 不同统计窗口(滚动窗口 vs 日历窗口)会导致结果差异,需提前定义。
1.8 本章小结
| 概念 | 一句话记忆 |
|---|---|
| SLI | 你测量了什么 |
| SLO | 你承诺达到什么水平 |
| SLA | 你合同上写了什么 |