1. SLI 基础概念:服务等级指标的基石

1.1 什么是 SLI(服务等级指标)

SLI(Service Level Indicator,服务等级指标) 是对服务某个特定维度质量水平的直接量化度量。它是可观测性数据中最核心的原始信号,通常以比率、计数或延迟分布的形式呈现。

一个合格的 SLI 必须满足以下条件:

  • 可测量:能从监控系统中稳定采集,避免人工估算。
  • 可对比:在不同时间窗口、不同版本间具有一致的统计口径。
  • 面向用户:优先度量用户可见的请求路径,而非内部组件健康度。
💡 关键认知: SLI 不是简单的“系统健康分”,而是用户视角的体验量化。例如“99.9% 的首页请求在 200ms 内完成”比“CPU 使用率低于 80%”更贴近真实服务质量。

1.2 SLI 与 SLO、SLA 的关系

三者构成服务质量管理的基础三角,但职责和严格度完全不同:

概念 定义 核心特征 典型示例
SLI 实际观测到的服务质量数值 原始数据、可计算、无承诺 过去 30 天请求延迟 P99 = 180ms
SLO SLI 的目标阈值或范围 内部承诺、可协商、驱动改进 P99 延迟 ≤ 200ms,达成率 ≥ 99.9%
SLA 对外部客户的服务合同条款 法律约束、有罚则、不可轻易变更 月度可用性 ≥ 99.99%,否则赔偿 10% 月费

三者之间的核心逻辑链为:

  1. SLI 提供事实依据(“我们现在怎么样?”)。
  2. SLO 设定质量目标(“我们应该做到什么程度?”)。
  3. SLA 转化为商业契约(“做不到会怎样?”)。
⚠️ 常见误区: 很多团队直接拿 SLA 阈值当 SLO 使用,导致 SLI 口径过于宽松,无法提前发现隐患。正确的做法是 SLO 应比 SLA 更严格(通常预留 10%-20% 的误差缓冲),SLI 则需覆盖 SLO 定义的所有维度。
SLI / SLO / SLA 三角关系与数据流 SLI / SLO / SLA 三角关系与数据流 SLI 服务等级指标(原始度量) SLO 服务等级目标(内部承诺) SLA 服务等级协议(商业契约) 提供数据基准 支撑合同条款 SLO 严于 SLA(预留缓冲) SLI 是事实,SLO 是目标,SLA 是合同 —— 三者层层递进,不可混淆

1.3 SLI 在可观测性中的核心地位

在可观测性三大支柱(Metrics、Logs、Traces)中,SLI 主要归属于 Metrics 层,但它同时驱动着 Logs 和 Traces 的告警与采样策略。SLI 的核心地位体现在以下四个维度:

维度 作用 具体表现
统一度量语言 消除开发、运维、业务之间的认知偏差 所有人对“服务质量”有相同的数字定义
告警降噪 从海量指标中筛选出真正影响用户的信号 仅当 SLI 突破 SLO 边界时才触发告警
容量规划 基于 SLI 趋势预测资源瓶颈 延迟 SLI 持续上升 → 提前扩容
故障定位 通过 SLI 下钻快速缩小排查范围 错误率 SLI 升高 → 按地域/版本/实例维度拆分
📌 实践要点: 在构建可观测性体系时,应优先定义黄金信号 SLI(延迟、流量、错误、饱和度),再围绕它们搭建仪表盘和告警规则。没有 SLI 的可观测性只是“数据堆砌”,而非“决策支持”。
SLI 在可观测性体系中的枢纽位置 SLI 在可观测性体系中的枢纽位置 Metrics 指标(SLI 主要载体) Logs 日志(SLI 下钻上下文) Traces 链路(SLI 路径分析) SLI 枢纽 统一服务质量度量 SLI 将三大数据源统一到“用户服务质量”这一核心目标上,避免数据孤岛

1.4 为什么 SLI 口径精度至关重要

SLI 的口径(口径定义与聚合方式)直接决定了 SLO 的可靠性和告警的准确性。常见的口径陷阱包括:

  • 聚合粒度太粗:使用全局平均值掩盖了局部故障(如 99% 请求正常,但某个可用区全部超时)。
  • 维度缺失:未区分读/写操作、未区分正常流量与健康检查流量。
  • 窗口选择不当:滚动窗口过短导致告警抖动,过长则延迟发现。