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 构成了可观测性体系的“北极星”,其核心作用体现在以下三个层面:

  1. 量化用户体验:将主观的“服务好不好”转化为客观的数值,使团队能准确判断服务质量是否满足用户预期。
  2. 驱动告警与响应:基于 SLO 燃烧速率(Burn Rate)设置告警,避免“告警风暴”,聚焦真正影响用户的事件。
  3. 指导容量规划与优化:通过 SLI 趋势分析,提前发现性能退化或容量瓶颈,指导资源投入优先级。
核心关系:SLI 是“测量什么”,SLO 是“目标是多少”。没有 SLI,SLO 是空谈;没有 SLO,SLI 只是数据。两者共同将可观测性从“数据展示”提升为“工程决策”。

1.4 SLI → SLO → 错误预算 的层级关系

下图展示了从原始指标到工程决策的完整链路:

SLI → SLO → 错误预算 层级关系 原始指标 请求数 / 延迟 / 错误数 SLI(服务等级指标) 请求成功率 99.5% SLO(服务等级目标) 目标 ≥ 99.9% 错误预算 允许的失败时间 = 0.1% 工程决策:告警 / 限流 / 扩容 / 降级 基于错误预算燃烧速率触发 指标聚合粒度 直接影响 SLI 精度

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 精度的关键因素,将在后续章节深入探讨。