2. SLI 定义与分类:请求延迟、错误率、吞吐量、饱和度等经典 SLI 指标的定义与选择原则
服务等级指标(Service Level Indicator, SLI)是衡量系统某一维度服务质量的量化度量。它是构建 SLO 和误差预算的原始数据基础。如果 SLI 采集链路存在偏差、延迟或覆盖不全,后续的 SLO 台账精度将无从谈起。本章将系统梳理经典 SLI 的定义、分类体系以及选择原则,为后续采集链路优化奠定概念基础。
2.1 经典四大黄金指标
Google SRE 实践中提炼出的“四大黄金信号”是 SLI 设计的起点。这四类指标覆盖了用户可感知的绝大多数服务质量维度。
| 指标类别 | 核心定义 | 典型测量方式 | 常见单位 |
|---|---|---|---|
| 请求延迟 | 系统处理一个请求所花费的时间 | 服务端/客户端侧时间戳差值,通常按百分位聚合 | 毫秒 (ms)、微秒 (μs) |
| 错误率 | 请求处理失败的比率 | HTTP 5xx / 4xx 计数 / 总请求数;或业务逻辑错误码 | 百分比 (%)、请求数/秒 |
| 吞吐量 | 系统在单位时间内处理的请求量 | 请求计数器在时间窗口内的增量 | 请求数/秒 (RPS)、事务数/秒 (TPS) |
| 饱和度 | 系统资源被利用的程度,接近容量上限的程度 | CPU 使用率、内存占用、队列深度、连接池使用率 | 百分比 (%)、队列长度 (个) |
实践提示: 四大黄金指标并非孤立存在。例如,当饱和度接近 100% 时,请求延迟通常会显著增加,错误率也可能随之上升。在设计 SLI 采集链路时,应优先保证这四类指标的原始数据都能被可靠采集。
2.2 SLI 的扩展分类体系
在实际生产环境中,仅靠四大黄金指标往往不够。现代微服务架构和复杂业务场景要求更精细的 SLI 分类。以下扩展分类体系可以帮助团队更全面地覆盖可观测性盲区。
- 可用性类: 服务是否在运行并能响应请求。典型指标包括:健康检查成功率、服务启动时间、故障转移时间。
- 正确性类: 返回的数据或执行的结果是否符合预期。典型指标包括:数据一致性校验通过率、业务逻辑正确率、幂等操作成功率。
- 新鲜度类: 数据从产生到可被查询的时间差。典型指标包括:数据管道延迟、缓存更新延迟、流处理延迟。
- 容量类: 系统当前负载与最大容量的关系。典型指标包括:数据库连接池使用率、磁盘 IOPS 使用率、网络带宽使用率。
- 用户体验类: 从用户端感知的服务质量。典型指标包括:首字节时间 (TTFB)、页面完全加载时间、移动端 App 启动时间。
关键原则: SLI 的选择应遵循“用户可见”优先原则。如果一个指标无法直接或间接反映用户体验,那么它作为 SLI 的价值就非常有限。例如,CPU 使用率本身不是好的 SLI,但当 CPU 使用率导致请求延迟增加时,它才成为有意义的饱和度指标。
2.3 SLI 选择原则与避坑指南
选择错误的 SLI 或定义不当的 SLI,会导致 SLO 台账失真,甚至误导运维决策。以下是经过验证的选择原则和常见陷阱。
选择原则
- 可测量性: 指标必须能够被稳定、持续地采集,且采集成本可控。
- 可区分性: 指标能够清晰区分“好”与“坏”的状态,阈值定义明确。
- 可归因性: 当指标异常时,能够快速定位到具体的服务、实例或代码模块。
- 稳定性: 指标不应因非业务因素(如采集系统抖动、网络偶发丢包)而剧烈波动。
- 业务相关性: 指标必须与核心业务目标(如订单转化率、视频播放成功率)强关联。
常见避坑
- 陷阱一: 只采集平均值。平均值会掩盖长尾延迟问题。应优先使用百分位值(如 p50、p95、p99)。
- 陷阱二: 忽略客户端视角。服务端延迟低不代表用户端体验好。网络延迟、DNS 解析、客户端渲染时间都应纳入考量。
- 陷阱三: 过度依赖单一指标。例如,仅用错误率作为 SLI,可能掩盖了延迟飙升但未报错的情况。
- 陷阱四: 指标定义不统一。不同团队对“错误”的定义不同(如 HTTP 4xx 是否算错误),会导致 SLO 台账无法对齐。
2.4 SLI 分类与采集链路映射关系
不同的 SLI 类别需要不同的采集技术和链路设计。理解这种映射关系,是优化采集链路的第一步。
注意: 上图中的“采集链路优化关注点”是后续章节的核心内容。例如,对于请求延迟 SLI,分布式追踪的采样率设置不当会导致 p99 延迟失真;对于饱和度 SLI,采集频率过低可能错过瞬时峰值。在定义 SLI 时,就必须同步考虑采集链路的可行性。
2.5 SLI 定义模板与示例
为了确保 SLI 定义清晰、可复现,建议使用标准模板进行记录。以下是一个推荐模板及示例。
SLI 名称:API 网关 p99 请求延迟
所属类别:请求延迟
测量对象:生产环境 API 网关实例
测量方法:服务端记录请求到达时间与响应完成时间之差
聚合方式:按 1 分钟窗口计算 p99 百分位值
好/坏定义:p99 延迟 <= 500ms 为“好”,> 500ms 为“坏”
采集源:分布式追踪系统 (Jaeger) 的 span 持续时间
采集频率:实时采集,每 10 秒上报一次聚合数据
数据保留:原始数据保留 7 天,聚合数据保留 90 天
最佳实践: 每个 SLI 定义都应包含“好/坏定义”这一字段。这是将原始指标转化为 SLO 误差预算的关键桥梁。定义不清晰会导致不同团队成员对同一指标产生歧义,进而影响误差预算台账的准确性。