1. SLI 与 SLO 基础概念
在可观测性体系中,SLI(Service Level Indicator,服务等级指标)与SLO(Service Level Objective,服务等级目标)是定义系统健康度与可靠性的核心度量标准。它们将抽象的“服务质量”转化为可量化、可追踪、可告警的工程语言,是所有 SRE 实践与可观测性策略的起点。
1.1 什么是 SLI?
SLI 是对服务某个特定维度的量化测量值,通常表示为一段时间内的比率、百分比或速率。常见的 SLI 维度包括:
| 维度 | 典型 SLI 示例 | 测量方式 |
|---|---|---|
| 可用性 | 请求成功率 ≥ 99.9% | 成功请求数 / 总请求数 |
| 延迟 | P99 延迟 ≤ 200ms | 请求响应时间的百分位分布 |
| 吞吐量 | 每秒处理请求数 ≥ 1000 | 单位时间内的请求计数 |
| 错误率 | 5xx 错误率 ≤ 0.1% | 错误请求数 / 总请求数 |
| 饱和度 | CPU 使用率 ≤ 80% | 资源使用量 / 资源总量 |
关键原则:SLI 必须满足 R.E.A.L. 标准——Relevant(与用户体验相关)、Easily measurable(易于测量)、Actionable(可驱动决策)、Limited in number(数量有限,通常 3~5 个)。
1.2 什么是 SLO?
SLO 是为 SLI 设定的目标阈值或范围,代表服务所有者承诺在一段时间内达到的服务质量水平。SLO 通常以“窗口期内的达标百分比”形式定义:
# SLO 定义示例(30 天滚动窗口)
slo:
name: "API 请求成功率"
sli: "请求成功率"
target: 99.9% # 30 天内,99.9% 的请求必须成功
window: "30d" # 评估窗口
compliance: "rolling" # 滚动计算
SLO 的常见表达方式:
- 阈值型:“P99 延迟 ≤ 500ms”(硬边界)
- 比率型:“99.9% 的请求在 200ms 内完成”(概率边界)
- 复合型:“可用性 ≥ 99.95% 且 P99 延迟 ≤ 300ms”(多条件组合)
1.3 SLI 与 SLO 在可观测性中的核心地位
SLI 与 SLO 构成了可观测性体系的“北极星”,其核心作用体现在以下三个层面:
- 量化用户体验:将主观的“服务好不好”转化为客观的数值,使团队能准确判断服务质量是否满足用户预期。
- 驱动告警与响应:基于 SLO 燃烧速率(Burn Rate)设置告警,避免“告警风暴”,聚焦真正影响用户的事件。
- 指导容量规划与优化:通过 SLI 趋势分析,提前发现性能退化或容量瓶颈,指导资源投入优先级。
核心关系:SLI 是“测量什么”,SLO 是“目标是多少”。没有 SLI,SLO 是空谈;没有 SLO,SLI 只是数据。两者共同将可观测性从“数据展示”提升为“工程决策”。
1.4 SLI → SLO → 错误预算 的层级关系
下图展示了从原始指标到工程决策的完整链路:
1.5 SLI 精度与聚合粒度的关系
SLI 的精度高度依赖于指标聚合粒度——即原始数据在时间、空间(维度)上的聚合方式。粒度选择不当会导致 SLI 失真:
| 聚合粒度 | 对 SLI 精度的影响 | 典型场景 |
|---|---|---|
| 过粗(如 1 小时聚合) | 掩盖短时故障,SLI 虚高,无法反映真实用户体验 | 批量作业、长周期报表 |
| 过细(如 1 秒聚合) | 数据量大、噪声多,SLO 达标率波动剧烈,难以设定稳定目标 | 高频交易、实时控制 |
| 适中(如 1 分钟聚合) | 平衡精度与成本,能捕捉大部分故障事件,SLO 稳定可追踪 | Web API、微服务调用 |
常见误区:很多团队直接使用基础设施监控的默认聚合粒度(如 5 分钟)来计算 SLI,导致 30 秒的故障被平均掉,SLO 长期“达标”但用户频繁投诉。SLI 的聚合粒度必须与用户体验的感知粒度对齐。
1.6 本章小结
- SLI 是服务质量的量化指标,必须可测量、与用户体验相关。
- SLO 是为 SLI 设定的目标阈值,定义了“好服务”的标准。
- SLI 与 SLO 共同构成可观测性的决策核心,驱动错误预算与工程响应。
- 指标聚合粒度是影响 SLI 精度的关键因素,将在后续章节深入探讨。