2. SLI 基础概念:服务等级指标的定义与常见类型
服务等级指标(Service Level Indicator, SLI)是衡量服务某个特定维度质量水平的量化度量值。它是整个可靠性工程体系的“测量仪表盘”,所有后续的 SLO 制定、错误预算计算、告警阈值设计都建立在 SLI 的准确采集与口径定义之上。
一个合格的 SLI 必须满足三个条件:可测量(能从监控系统或日志中获取原始数据)、可对比(在不同时间窗口内保持口径一致)、可行动(指标恶化时能触发明确的运维动作)。
2.1 SLI 的核心定义与构成要素
SLI 通常由 测量对象、测量维度、聚合方式 和 时间窗口 四个要素组成。以“API 网关 99 分位延迟”为例:
| 构成要素 | 示例值 | 说明 |
|---|---|---|
| 测量对象 | API 网关请求 | 明确被测量的服务或资源 |
| 测量维度 | 延迟(Latency) | 从请求到达网关到响应完成的时间 |
| 聚合方式 | P99(99 分位值) | 排序后第 99% 位置的延迟值 |
| 时间窗口 | 5 分钟滚动窗口 | 每 5 分钟计算一次该窗口内的 P99 值 |
口径注入关键点: 在自动化校验场景中,SLI 的“聚合方式”和“时间窗口”是最常通过参数注入动态调整的两个要素。同一个原始数据,使用 P50 还是 P99、窗口是 1 分钟还是 10 分钟,会得到完全不同的指标曲线。
2.2 常见 SLI 类型详解
业界最通用的 SLI 分类遵循 Google SRE 经典模型,主要包含以下三大类:延迟、错误率、吞吐量。此外,饱和度 和 可用性 也常作为补充指标。
2.3 延迟(Latency)
延迟衡量服务响应请求所花费的时间,是最敏感的用户体验指标之一。延迟 SLI 通常使用 百分位值 而非平均值,因为平均值容易掩盖尾部延迟问题。
- P50(中位数):反映大多数用户的体验,适合作为基准监控。
- P95 / P99:反映长尾延迟,直接影响用户流失率,是 SLO 的常用目标。
- P99.9:用于高敏感服务(如支付、实时通信),但统计稳定性较差。
最佳实践: 在自动化校验中,建议将延迟 SLI 的百分位和窗口大小设计为可注入参数。例如,日常巡检使用 P95 + 5 分钟窗口,深度分析时切换为 P99 + 1 分钟窗口,无需修改代码即可切换口径。
2.4 错误率(Error Rate)
错误率衡量请求失败的占比,通常以百分比或小数形式表示。错误率的定义口径需要特别注意“什么是错误”的边界划分。
| 错误类型 | 典型示例 | 口径注入场景 |
|---|---|---|
| HTTP 协议层错误 | 5xx 服务端错误、4xx 客户端错误 | 可配置是否将 4xx 计入错误率 |
| 业务逻辑错误 | 订单创建失败、库存不足 | 通过业务码白名单/黑名单动态定义 |
| 超时错误 | 客户端/服务端超时 | 超时阈值作为参数注入 |
| 熔断/降级错误 | 限流返回 429、熔断返回 503 | 区分主动保护与真实故障 |
常见陷阱: 不同团队对“错误”的定义可能不一致。例如,某些系统将 4xx 视为客户端问题不计入错误率,而另一些系统将 4xx 中的 401/403 也视为服务可用性问题。在参数注入设计中,必须将“错误判定规则”作为一级注入参数暴露。
2.5 吞吐量(Throughput)
吞吐量衡量服务在单位时间内处理的请求数量,常用单位包括 RPS(每秒请求数)、QPS(每秒查询数)、TPS(每秒事务数)。吞吐量 SLI 通常与系统容量规划和限流策略直接相关。
- 峰值吞吐量:服务在正常延迟范围内能承受的最大请求数。
- 当前吞吐量:实时监控的请求量,用于判断流量是否异常。
- 基线吞吐量:历史同期或正常时段的平均吞吐量,作为异常检测的参考。
2.6 SLI 口径参数注入的映射关系
在《质量门禁自动化校验》体系中,上述三类 SLI 的每个构成要素都需要映射为可注入的参数。下表总结了常见 SLI 类型与注入参数的对应关系:
| SLI 类型 | 可注入参数 | 参数示例 | 影响范围 |
|---|---|---|---|
| 延迟 | 百分位、窗口大小、单位 | percentile=99, window=5m, unit=ms | 目标值、告警阈值 |
| 错误率 | 错误码范围、分母选择、计算方式 | error_codes=5xx, denominator=total_requests | 错误预算、门禁判定 |
| 吞吐量 | 统计窗口、聚合函数、对比基线 | window=1m, agg=avg, baseline=7d_avg | 容量评估、限流触发 |
核心设计原则: SLI 口径的参数注入不是简单的“改个数字”,而是将可靠性度量体系从静态配置升级为动态可编程。通过参数注入,同一套校验流水线可以在开发环境使用宽松口径(如 P95 + 10 分钟窗口),在生产环境使用严格口径(如 P99.9 + 1 分钟窗口),实现环境差异的自动化适配。