3. 可靠性度量基础:SLI、SLO、SLI与评分模型的关系、常见SLI指标
在SRE实践中,没有度量就没有改进。可靠性评分模型的核心输入,正是来自对系统行为的持续、可量化的观测。本章将深入讲解支撑评分模型的三个基本概念:SLI(服务等级指标)、SLO(服务等级目标),以及它们如何与评分模型建立映射关系,并介绍最常见的几类SLI指标。
3.1 SLI:服务等级指标
SLI(Service Level Indicator)是对服务某个特定维度的量化测量。它回答的是“服务现在表现如何”的问题。SLI必须是一个可采集、可计算的数值,通常表示为一段时间内的比率或分布。
- 定义原则:SLI应直接反映用户体验,而非内部实现细节。
- 采集方式:通常通过服务端日志、客户端埋点、中间件指标或拨测探针获取。
- 聚合方式:常见聚合包括平均值、百分位数(如P99)、滑动窗口内的比率等。
实践要点:选择SLI时,优先关注用户最敏感的维度。例如,对于API网关,延迟的P99比平均值更能反映尾部延迟对用户的影响。
3.2 SLO:服务等级目标
SLO(Service Level Objective)是为SLI设定的目标阈值或范围。它回答的是“服务应该表现得多好”的问题。SLO是团队与业务方达成的可靠性契约,也是值班台判断是否触发告警或降级的依据。
| 概念 | 定义 | 示例 |
|---|---|---|
| SLI | 实际测量的指标值 | 过去1小时内请求延迟P99 = 120ms |
| SLO | SLI应达到的目标边界 | 延迟P99 ≤ 200ms(月度占比99.9%) |
| 错误预算 | SLO允许的不可用时间或错误量 | 月度允许错误率 = 1 - 99.9% = 0.1% |
常见误区:不要将SLO设定得过于严苛(如99.999%),这会导致极高的运维成本和频繁的误告警。SLO应基于业务容忍度与成本权衡后设定。
3.3 SLI与评分模型的关系
可靠性评分模型本质上是一个多维度加权聚合函数。SLI提供原始数据,SLO提供基准线,评分模型则将SLI相对于SLO的偏离程度映射为一个0-100的分数。
映射关系可以概括为以下步骤:
- 采集:从监控系统获取各维度的实时SLI值。
- 比较:将SLI值与对应的SLO阈值进行比较,计算“健康度”或“达标率”。
- 映射:通过预定义的评分函数(如线性、阶梯或对数函数),将健康度转换为分数。
- 聚合:按权重(如延迟权重0.4、错误率权重0.4、吞吐量权重0.2)加权求和,得到综合评分。
3.4 常见SLI指标详解
在值班台场景中,最核心的三类SLI指标是:延迟、错误率和吞吐量。它们从不同角度刻画了服务的健康状态。
3.4.1 延迟(Latency)
延迟衡量请求从发出到收到完整响应所花费的时间。延迟的微小增加往往会导致用户体验的显著下降。
- 常用百分位:P50(中位数)、P95、P99、P999。
- 采集方式:服务端请求处理时间、客户端感知时间。
- SLO示例:过去5分钟内,P99延迟 ≤ 500ms。
3.4.2 错误率(Error Rate)
错误率衡量请求处理失败的比率。通常以HTTP 5xx、超时、业务逻辑异常等作为错误判定标准。
- 计算方式:错误请求数 / 总请求数 × 100%。
- 注意:需区分客户端错误(4xx)与服务端错误(5xx),SLO通常只针对服务端错误。
- SLO示例:月度错误率 ≤ 0.1%。
3.4.3 吞吐量(Throughput)
吞吐量衡量系统在单位时间内处理的请求量或数据量。它反映了系统的容量和承载能力。
- 常用单位:QPS(每秒查询数)、RPS(每秒请求数)、TPS(每秒事务数)。
- 采集方式:服务端请求计数、消息队列消费速率。
- SLO示例:核心API的QPS ≥ 1000(在延迟SLO达标的前提下)。
3.5 指标选择与评分模型设计建议
在设计可靠性评分模型时,并非所有指标都需要纳入。建议遵循以下原则:
- 精简原则:选择3-5个最能反映用户体验的核心SLI,避免指标过多导致评分难以解读。
- 可操作性:每个SLI都应有明确的SLO和对应的改进措施。
- 权重分配:延迟和错误率通常权重较高(各占30%-40%),吞吐量权重相对较低(10%-20%),其余指标(如饱和度、可用性)根据业务特点分配剩余权重。
值班台落地提示:在值班台系统中,每个SLI的实时评分应支持钻取(Drill-down)功能。当综合评分下降时,值班人员应能快速定位到是哪个SLI维度导致的扣分,从而加速故障排查。