2. SLI 口径定义:从原始指标到可度量承诺

在可靠性评审中,SLI(Service Level Indicator,服务等级指标) 是衡量服务质量的量化基石。然而,原始监控指标与 SLI 之间并非直接画等号。本节将深入解析 SLI 口径 的概念、组成要素,以及它与原始指标的本质区别。

2.1 什么是 SLI 口径

SLI 口径 是对一个原始指标进行 筛选、聚合、标准化 后,形成的用于计算 SLO(服务等级目标)的 可度量定义。它回答了“我们到底在测量什么、如何测量、在什么范围内测量”这三个核心问题。

简单来说,口径就是 SLI 的 “测量协议”。没有清晰的口径定义,同一个原始指标在不同团队、不同时间点可能计算出完全不同的结果,导致评审失效。

核心观点: SLI 口径 = 原始指标 + 测量规则 + 聚合边界。口径决定了 SLI 的“可信度”与“可比性”。

2.2 口径的组成要素

一个完整的 SLI 口径由三个核心要素构成:指标、测量方式、聚合维度。三者缺一不可。

组成要素 定义 示例(以“请求延迟”为例)
指标 被测量的原始数据项,通常来自监控系统或日志。 HTTP 请求的响应时间(单位:ms)
测量方式 如何采集、计算该指标,包括采样率、统计方法(均值/分位数)、时间窗口等。 服务端侧记录,每 10 秒采样一次,计算 P99 分位数
聚合维度 在哪些维度上进行数据聚合与过滤,如服务、地域、请求类型、状态码等。 仅聚合 HTTP 200/500 状态码,排除健康检查请求,按数据中心维度聚合
实践提示: 在评审中,80% 的口径争议都源于“聚合维度”定义不清。务必明确“哪些请求算、哪些不算”。

2.3 口径与原始指标的区别

原始指标是“原材料”,SLI 口径是“加工后的成品”。下表清晰展示了两者的关键差异:

对比维度 原始指标 SLI 口径
目的 监控系统健康状态,用于告警与排查 量化服务质量,用于 SLO 计算与评审
数据范围 全量数据,包含噪声(如爬虫、健康检查) 经过过滤,仅包含“有效用户请求”
统计方法 常用均值、最大值、最小值 常用分位数(P50/P95/P99)、错误率、吞吐量
时间窗口 实时或短窗口(1分钟/5分钟) 长窗口(30天滚动、28天滑动)
可解释性 对运维人员友好,细节丰富 对业务方友好,抽象且稳定

一个典型的例子:原始指标显示“所有 HTTP 请求的平均延迟为 200ms”,但其中包含了大量内部健康检查请求(延迟极低)和超时重试请求(延迟极高)。经过 SLI 口径定义后,我们可能只关注“外部用户真实请求的 P95 延迟”,结果可能是 500ms。两者差异巨大,口径的作用正在于此。

2.4 口径定义流程:从原始指标到 SLI

下图展示了从原始指标到最终 SLI 口径的标准化转换流程:

从原始指标到 SLI 口径的转换流程 原始指标 全量请求延迟 数据过滤 排除爬虫/健康检查 聚合计算 P99 分位数计算 SLI 口径 有效请求 P99 延迟 说明: 口径定义必须包含“过滤规则”和“聚合方法”,否则无法保证不同评审周期内的计算结果一致。 建议在口径文档中明确记录排除条件(如:排除 4xx 客户端错误、排除超时重试等)。

2.5 口径定义检查清单

在可靠性评审中,使用以下清单快速验证 SLI 口径的完整性:

  1. 指标明确性: 是否指定了具体的监控指标名称和单位?(如:http_request_duration_seconds)
  2. 测量方式清晰: 是否定义了采样频率、统计方法(均值/分位数)、时间窗口长度?
  3. 聚合维度完整: 是否列出了所有过滤条件(排除哪些请求)和分组维度(按服务/地域/版本)?
  4. 边界条件处理: 是否定义了数据缺失、异常值、零值时的处理规则?
  5. 口径版本化: 是否对口径定义进行了版本管理,以便追溯历史变更?
常见陷阱: 很多团队在定义 SLI 时,只写了“延迟 P99 < 500ms”,却忽略了“测量方式”和“聚合维度”。这会导致评审时各方对“P99 到底怎么算的”产生巨大分歧。务必在口径文档中写明“排除健康检查请求,按 5 分钟粒度采样,计算 30 天滚动窗口的 P99”。

2.6 小结

SLI 口径是可靠性评审的“度量宪法”。它通过 指标、测量方式、聚合维度 三个要素,将原始监控数据转化为可比较、可承诺的服务质量度量。理解口径与原始指标的区别,是后续进行阈值校准和 SLO 计算的前提。