2. SLI 基础概念:定义、常见类型与口径验证
SLI(Service Level Indicator,服务等级指标)是衡量系统某一维度服务质量的可量化原始度量。它是 SRE 观测体系的最底层数据,直接决定 SLO(服务等级目标)能否被准确评估,也是合规审计中判断服务是否达标的第一证据链。
2.1 SLI 的定义与核心特征
SLI 是对系统行为的直接测量,而非对目标的承诺。其核心特征包括:
| 特征 | 说明 | 反例(非 SLI) |
|---|---|---|
| 可观测性 | 必须能从监控系统直接采集或计算 | "用户体验良好"(主观描述) |
| 可量化 | 输出为数值,而非布尔或枚举 | "服务正常/异常"(需转为比率) |
| 时间窗口 | 在固定时间粒度(如 1 分钟、5 分钟)内聚合 | "总请求数"(无时间范围) |
| 口径一致性 | 采集、计算、上报逻辑在团队内统一 | 不同模块对"延迟"定义不同 |
合规审计要点: 审计 SLI 时,首先检查其是否满足上述四个特征。缺少任意一项,该指标即不具备审计溯源性,不能作为 SLO 达标的判定依据。
2.2 四大常见 SLI 类型
业界通常将 SLI 归纳为以下四类,覆盖系统性能、可靠性、容量与资源效率四个维度。
2.2.1 延迟(Latency)
衡量请求从发出到收到完整响应所消耗的时间。通常关注分布百分位而非平均值。
- 常用口径: p50(中位数)、p95、p99(尾部延迟)
- 采集方式: 服务端记录请求处理耗时,客户端记录端到端耗时
- 合规验证: 确认百分位计算是否使用直方图分桶,避免平均值掩盖长尾
2.2.2 错误率(Error Rate)
衡量请求处理失败的占比。错误定义必须明确,区分业务错误与系统错误。
- 常用口径: HTTP 5xx 占比、超时占比、业务返回码非 0 占比
- 采集方式: 响应状态码匹配、业务异常日志计数
- 合规验证: 检查是否将 4xx(客户端错误)排除在 SLI 之外;确认重试请求是否被去重
2.2.3 吞吐量(Throughput)
衡量系统在单位时间内处理的请求量或数据量。反映系统的处理能力。
- 常用口径: QPS(每秒查询数)、RPS(每秒请求数)、TPS(每秒事务数)、带宽(MB/s)
- 采集方式: 负载均衡器、网关、应用层计数器
- 合规验证: 确认吞吐量是否与并发数混淆;检查是否区分"成功吞吐量"与"总吞吐量"
2.2.4 饱和度(Saturation)
衡量系统资源被利用的程度,通常反映瓶颈资源的负载水平。
- 常用口径: CPU 使用率、内存使用率、磁盘 I/O 队列深度、连接池使用率
- 采集方式: 操作系统指标、中间件内置指标
- 合规验证: 确认饱和度指标是否与利用率区分(饱和度强调排队/等待现象);检查阈值是否基于性能拐点而非随意设定
实践建议: 一个微服务至少应定义 2 个 SLI(延迟 + 错误率),核心服务建议定义 3-4 个(增加吞吐量 + 饱和度)。缺少饱和度 SLI 的服务,在容量规划审计中通常会被标记为"不达标"。
2.3 SLI 口径验证流程
口径验证是确保 SLI 数据可信、可审计的关键步骤。以下流程适用于合规审计场景:
- 定义审查: 检查 SLI 定义文档是否包含:指标名称、采集源、聚合方式、时间窗口、有效条件。
- 采集链路验证: 从原始日志/埋点 → 采集器 → 存储 → 计算引擎,逐环节确认数据无丢失、无重复、无篡改。
- 口径一致性测试: 选取 3 个独立时间窗口,由不同工具(如 Prometheus + 自研脚本)分别计算,结果偏差应 < 1%。
- 边界条件测试: 构造零流量、满负载、部分降级等场景,验证 SLI 计算逻辑是否健壮。
- 审计留痕: 记录每次口径变更的版本号、变更人、审批记录,确保可追溯。
常见审计发现: 约 40% 的 SLI 口径问题源于"采集端与计算端对时间戳的理解不一致"(例如:采集端使用请求到达时间,计算端使用响应完成时间)。此类偏差在 p99 延迟上可导致 200ms 以上的误差。
2.4 SLI 类型与口径对照表
| SLI 类型 | 典型口径 | 常见采集源 | 审计关注点 |
|---|---|---|---|
| 延迟 | p99 Latency ≤ 500ms | APM、服务框架中间件 | 百分位计算方式、是否包含排队时间 |
| 错误率 | Error Rate ≤ 0.1% | 网关日志、业务监控 | 错误分类规则、重试去重逻辑 |
| 吞吐量 | QPS ≥ 10000 | 负载均衡器、应用计数器 | 是否区分成功/失败吞吐量 |
| 饱和度 | CPU ≤ 80% | OS 指标、容器指标 | 阈值是否基于性能拐点 |
2.5 SLI 数据流与口径验证关系图
2.6 口径验证常见陷阱与避坑指南
| 陷阱 | 表现 | 合规后果 | 解决方案 |
|---|---|---|---|
| 平均值陷阱 | 使用平均延迟而非百分位 | 掩盖长尾,SLO 虚高 | 强制使用 p95/p99 作为 SLI |
| 重试污染 | 客户端重试请求计入多次 SLI | 错误率被稀释,审计不通过 | 在 SLI 计算层去重(基于请求 ID) |
| 时间窗口漂移 | 采集端与计算端时钟不同步 | 延迟 SLI 偏差 > 100ms | 统一 NTP 服务,窗口对齐到整点 |
| 饱和度阈值随意 | 直接使用 90% 作为 CPU 阈值 | 未考虑性能拐点,容量规划失效 | 通过压测确定拐点,阈值设为拐点 - 10% |
合规审计红线: 任何 SLI 口径变更必须经过变更管理流程,并在审计日志中记录:变更前口径、变更后口径、变更原因、审批人、生效时间。缺少上述任意一项,该 SLI 在审计中将被标记为"不可追溯"。