3. SLI口径定义原则:可测量性、可重复性、业务相关性、可解释性
定义基础设施SLI(Service Level Indicator)的口径时,不能仅凭直觉或临时需求随意选取指标。一个高质量的SLI口径必须同时满足四项核心原则:可测量性、可重复性、业务相关性和可解释性。这四项原则共同构成了SLI口径设计的“黄金四角”,缺一不可。
核心观点: 一个无法被测量、无法被复现、与用户无关、且难以解释的SLI,无论其数学定义多么精确,在SRE实践中都毫无价值。
3.1 四项原则概述
下表从定义、核心关注点、常见反例三个维度,快速对比四项原则的差异:
| 原则 | 定义 | 核心关注点 | 常见反例 |
|---|---|---|---|
| 可测量性 | 指标必须能够通过工具或系统被客观、准确地采集到数值 | 数据源是否存在、采集成本、精度是否满足需求 | “用户体验流畅度”无法直接采集数值 |
| 可重复性 | 在相同条件下,不同观察者或不同时间点测量,应得到一致的结果 | 口径定义是否明确、是否存在歧义、测量方法是否稳定 | “请求延迟”未定义百分位,不同团队统计结果不同 |
| 业务相关性 | 指标必须直接反映用户或业务的实际体验,而非纯技术参数 | 指标变化是否影响用户行为、是否与收入/留存挂钩 | CPU使用率100%但用户无感知 |
| 可解释性 | 指标的数值、趋势和异常能够被团队成员(包括非技术角色)理解 | 指标含义是否直观、告警阈值是否有业务含义 | “P99延迟抖动标准差”难以向产品经理解释 |
3.2 可测量性(Measurability)
可测量性是SLI存在的物理基础。如果一个指标无法被稳定、准确地采集,那么后续的所有分析都是空中楼阁。
- 数据源确认: 确认指标数据是否可以从现有监控系统(Prometheus、Datadog、CloudWatch)、日志系统(ELK、Loki)或APM工具中获取。
- 采集精度: 明确采样频率(如15秒、1分钟)、聚合方式(如平均值、分位数)以及数据保留周期。
- 覆盖度: 确保测量覆盖所有关键实例或节点,避免因采样偏差导致SLI失真。
实践建议: 在定义SLI时,优先选择已经存在于现有监控系统中的指标。如果必须引入新的测量点,需要评估埋点成本和数据管道稳定性。
3.3 可重复性(Repeatability)
可重复性确保SLI口径在不同时间、不同团队、不同工具之间具有一致的解读。这是SRE协作的基础。
实现可重复性的关键要素:
- 明确统计口径: 例如“请求延迟”必须明确是P50、P95还是P99,以及计算窗口(如5分钟、1小时)。
- 定义成功/失败标准: 明确什么算作“成功请求”(如HTTP 2xx/3xx),什么算作“失败请求”(如HTTP 5xx、超时、连接拒绝)。
- 固定测量方法: 使用相同的查询语句(PromQL、SQL)和相同的聚合逻辑,避免因工具差异导致结果偏差。
# 可重复性差的PromQL示例(未定义百分位)
histogram_quantile(0.99, rate(http_request_duration_seconds_bucket[5m]))
# 可重复性好的PromQL示例(明确百分位和窗口)
histogram_quantile(0.99, sum(rate(http_request_duration_seconds_bucket{job="api-server"}[5m])) by (le))
3.4 业务相关性(Business Relevance)
业务相关性是SLI区别于普通技术指标的标志。一个SLI必须能够回答“这个指标变差,用户是否受到影响?”
判断业务相关性的三个层次:
| 层次 | 描述 | 示例 |
|---|---|---|
| 直接相关 | 指标直接反映用户交互结果 | 登录成功率、下单接口P99延迟 |
| 间接相关 | 指标影响用户体验,但非直接交互 | 数据库连接池使用率(过高会导致请求排队) |
| 弱相关 | 指标与用户无直接关联,仅反映系统内部状态 | 磁盘IO等待时间(除非达到瓶颈,否则用户无感) |
避坑指南: 避免将“服务器正常运行时间(Uptime)”作为核心SLI。一台服务器正常运行但应用进程挂死,用户依然无法访问服务。应优先选择“可用请求比例”等业务相关指标。
3.5 可解释性(Explainability)
可解释性要求SLI的数值、趋势和异常能够被团队成员(包括产品、运营、管理层)快速理解,并据此做出决策。
- 直观命名: 使用业务语言命名SLI,例如“首页加载成功率”优于“fe_home_page_http_200_ratio”。
- 阈值有业务含义: 告警阈值不应是随意设定的数字,而应关联到用户容忍度。例如“P99延迟 > 2秒”对应“用户感知卡顿”。
- 趋势可视化: 使用折线图、热力图等直观方式展示SLI变化,并标注关键事件(如发布、故障)。
下图展示了四项原则之间的依赖关系与协作逻辑:
3.6 四项原则的权衡与优先级
在实际工作中,四项原则之间可能存在冲突。例如,一个高度业务相关但难以精确测量的指标(如“用户满意度评分”),与一个极易测量但与业务弱相关的指标(如“内存使用率”)之间需要权衡。
推荐的优先级排序:
- 业务相关性 > 可测量性: 优先选择能反映用户体验的指标,即使测量成本稍高。
- 可重复性 > 可解释性: 确保口径定义无歧义,再考虑如何向非技术人员解释。
- 可测量性 > 可解释性: 一个无法测量的指标,即使解释得再清楚也没有意义。
决策框架: 当面临指标选择困难时,可以依次问自己三个问题:
1. 这个指标变差,用户会受影响吗?(业务相关性)
2. 我能稳定地采集到这个指标吗?(可测量性)
3. 不同团队用同样的方法能得出同样的结论吗?(可重复性)
1. 这个指标变差,用户会受影响吗?(业务相关性)
2. 我能稳定地采集到这个指标吗?(可测量性)
3. 不同团队用同样的方法能得出同样的结论吗?(可重复性)
通过严格遵循这四项原则,SRE团队能够构建出既反映真实服务质量、又具备可操作性的SLI体系,为后续的SLO制定和错误预算管理奠定坚实基础。