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 数据可信、可审计的关键步骤。以下流程适用于合规审计场景:

  1. 定义审查: 检查 SLI 定义文档是否包含:指标名称、采集源、聚合方式、时间窗口、有效条件。
  2. 采集链路验证: 从原始日志/埋点 → 采集器 → 存储 → 计算引擎,逐环节确认数据无丢失、无重复、无篡改。
  3. 口径一致性测试: 选取 3 个独立时间窗口,由不同工具(如 Prometheus + 自研脚本)分别计算,结果偏差应 < 1%。
  4. 边界条件测试: 构造零流量、满负载、部分降级等场景,验证 SLI 计算逻辑是否健壮。
  5. 审计留痕: 记录每次口径变更的版本号、变更人、审批记录,确保可追溯。
常见审计发现: 约 40% 的 SLI 口径问题源于"采集端与计算端对时间戳的理解不一致"(例如:采集端使用请求到达时间,计算端使用响应完成时间)。此类偏差在 p99 延迟上可导致 200ms 以上的误差。

2.4 SLI 类型与口径对照表

SLI 类型 典型口径 常见采集源 审计关注点
延迟 p99 Latency ≤ 500ms APM、服务框架中间件 百分位计算方式、是否包含排队时间
错误率 Error Rate ≤ 0.1% 网关日志、业务监控 错误分类规则、重试去重逻辑
吞吐量 QPS ≥ 10000 负载均衡器、应用计数器 是否区分成功/失败吞吐量
饱和度 CPU ≤ 80% OS 指标、容器指标 阈值是否基于性能拐点

2.5 SLI 数据流与口径验证关系图

SLI 数据流与口径验证节点 原始日志/埋点 采集器 时序存储 SLI 计算引擎 口径验证 & 审计 SLO 评估 口径不一致时反馈修正 审计验证节点: ① 采集链路完整性检查 ② 口径一致性测试(多工具对比) ③ 边界条件测试 ④ 变更留痕审计

2.6 口径验证常见陷阱与避坑指南

陷阱 表现 合规后果 解决方案
平均值陷阱 使用平均延迟而非百分位 掩盖长尾,SLO 虚高 强制使用 p95/p99 作为 SLI
重试污染 客户端重试请求计入多次 SLI 错误率被稀释,审计不通过 在 SLI 计算层去重(基于请求 ID)
时间窗口漂移 采集端与计算端时钟不同步 延迟 SLI 偏差 > 100ms 统一 NTP 服务,窗口对齐到整点
饱和度阈值随意 直接使用 90% 作为 CPU 阈值 未考虑性能拐点,容量规划失效 通过压测确定拐点,阈值设为拐点 - 10%
合规审计红线: 任何 SLI 口径变更必须经过变更管理流程,并在审计日志中记录:变更前口径、变更后口径、变更原因、审批人、生效时间。缺少上述任意一项,该 SLI 在审计中将被标记为"不可追溯"。