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% 月费 |
三者之间的核心逻辑链为:
- SLI 提供事实依据(“我们现在怎么样?”)。
- SLO 设定质量目标(“我们应该做到什么程度?”)。
- SLA 转化为商业契约(“做不到会怎样?”)。
⚠️ 常见误区: 很多团队直接拿 SLA 阈值当 SLO 使用,导致 SLI 口径过于宽松,无法提前发现隐患。正确的做法是 SLO 应比 SLA 更严格(通常预留 10%-20% 的误差缓冲),SLI 则需覆盖 SLO 定义的所有维度。
1.3 SLI 在可观测性中的核心地位
在可观测性三大支柱(Metrics、Logs、Traces)中,SLI 主要归属于 Metrics 层,但它同时驱动着 Logs 和 Traces 的告警与采样策略。SLI 的核心地位体现在以下四个维度:
| 维度 | 作用 | 具体表现 |
|---|---|---|
| 统一度量语言 | 消除开发、运维、业务之间的认知偏差 | 所有人对“服务质量”有相同的数字定义 |
| 告警降噪 | 从海量指标中筛选出真正影响用户的信号 | 仅当 SLI 突破 SLO 边界时才触发告警 |
| 容量规划 | 基于 SLI 趋势预测资源瓶颈 | 延迟 SLI 持续上升 → 提前扩容 |
| 故障定位 | 通过 SLI 下钻快速缩小排查范围 | 错误率 SLI 升高 → 按地域/版本/实例维度拆分 |
📌 实践要点: 在构建可观测性体系时,应优先定义黄金信号 SLI(延迟、流量、错误、饱和度),再围绕它们搭建仪表盘和告警规则。没有 SLI 的可观测性只是“数据堆砌”,而非“决策支持”。
1.4 为什么 SLI 口径精度至关重要
SLI 的口径(口径定义与聚合方式)直接决定了 SLO 的可靠性和告警的准确性。常见的口径陷阱包括:
- 聚合粒度太粗:使用全局平均值掩盖了局部故障(如 99% 请求正常,但某个可用区全部超时)。
- 维度缺失:未区分读/写操作、未区分正常流量与健康检查流量。
- 窗口选择不当:滚动窗口过短导致告警抖动,过长则延迟发现。