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 口径的标准化转换流程:
2.5 口径定义检查清单
在可靠性评审中,使用以下清单快速验证 SLI 口径的完整性:
- 指标明确性: 是否指定了具体的监控指标名称和单位?(如:http_request_duration_seconds)
- 测量方式清晰: 是否定义了采样频率、统计方法(均值/分位数)、时间窗口长度?
- 聚合维度完整: 是否列出了所有过滤条件(排除哪些请求)和分组维度(按服务/地域/版本)?
- 边界条件处理: 是否定义了数据缺失、异常值、零值时的处理规则?
- 口径版本化: 是否对口径定义进行了版本管理,以便追溯历史变更?
常见陷阱: 很多团队在定义 SLI 时,只写了“延迟 P99 < 500ms”,却忽略了“测量方式”和“聚合维度”。这会导致评审时各方对“P99 到底怎么算的”产生巨大分歧。务必在口径文档中写明“排除健康检查请求,按 5 分钟粒度采样,计算 30 天滚动窗口的 P99”。
2.6 小结
SLI 口径是可靠性评审的“度量宪法”。它通过 指标、测量方式、聚合维度 三个要素,将原始监控数据转化为可比较、可承诺的服务质量度量。理解口径与原始指标的区别,是后续进行阈值校准和 SLO 计算的前提。