3. 核心概念:SLI口径的定义、分类与度量标准

SLI(Service Level Indicator,服务等级指标)是可观测性体系中最基础的度量单元,也是Policy Check规则库直接评估的对象。SLI口径定义了“测量什么”以及“如何测量”,口径的准确性与一致性直接决定告警规则的有效性。

3.1 SLI口径的定义

SLI口径是对服务某一维度行为的量化描述,包含三个核心要素:

  • 测量对象:被观测的服务、接口、资源或业务流程
  • 测量维度:可用性、延迟、吞吐量、错误率等
  • 测量方法:采样方式、统计窗口、聚合函数、边界条件
口径示例:
SLI名称:api_gateway_p99_latency
测量对象:API Gateway 所有HTTP请求
测量维度:延迟(Latency)
测量方法:1分钟窗口内,按请求端到端耗时排序,取第99百分位值

3.2 SLI口径的四维分类体系

业界通用的SLI分类遵循Google SRE实践中的“四个黄金信号”框架,结合可观测性平台的实际落地经验,我们将SLI口径分为以下四大类:

分类 核心关注点 典型口径示例 度量单位
可用性(Availability) 服务是否正常响应 请求成功率、健康检查通过率 百分比(%)
延迟(Latency) 响应速度是否达标 P50/P90/P99延迟、平均延迟 毫秒(ms)
吞吐量(Throughput) 系统处理能力 QPS、RPS、并发连接数 请求/秒
错误率(Error Rate) 请求失败比例 HTTP 5xx占比、业务异常率 百分比(%)
实践建议: 在Policy Check规则库中,每个SLI口径必须明确归属到上述四类之一。分类决定了默认的告警阈值模板、聚合窗口和评估策略。例如,可用性类SLI通常使用滑动窗口计数,而延迟类SLI则使用百分位聚合。

3.3 四类SLI的度量标准详解

3.3.1 可用性(Availability)

可用性衡量服务在给定时间窗口内正常提供功能的比例。度量标准包括:

  • 请求成功率:成功请求数 / 总请求数 × 100%
  • 健康检查通过率:通过的健康检查次数 / 总健康检查次数 × 100%
  • Uptime:服务正常运行时间 / 总时间 × 100%

可用性SLI的典型阈值:核心服务 ≥ 99.99%,非核心服务 ≥ 99.9%。

3.3.2 延迟(Latency)

延迟衡量请求从发出到收到完整响应的时间间隔。度量标准强调百分位分布而非平均值:

百分位 含义 典型阈值(API服务)
P50(中位数) 50%的请求在此值以下 < 200ms
P90 90%的请求在此值以下 < 500ms
P99 99%的请求在此值以下 < 1000ms
常见误区: 不要使用平均延迟作为SLI口径。平均值会掩盖长尾问题,例如1%的慢请求可能将平均值拉高,但P99能更准确地反映真实用户体验。

3.3.3 吞吐量(Throughput)

吞吐量衡量系统在单位时间内处理的请求量。度量标准包括:

  • QPS(Queries Per Second):每秒查询数
  • RPS(Requests Per Second):每秒请求数
  • TPS(Transactions Per Second):每秒事务数
  • 并发连接数:同时活跃的连接数量

吞吐量SLI通常与容量规划结合使用,阈值设定需参考历史峰值和预留余量。

3.3.4 错误率(Error Rate)

错误率衡量请求失败的比例。度量标准需区分错误类型:

错误类型 示例 典型阈值
HTTP 5xx 500 Internal Server Error < 0.1%
HTTP 4xx 404 Not Found < 1%(需排除爬虫)
业务错误码 订单超时、库存不足 < 0.5%
超时错误 请求超时、连接超时 < 0.01%

3.4 SLI口径与度量标准的集成关系

下图展示了SLI口径从定义到度量标准的完整链路,以及各分类在Policy Check规则库中的映射关系:

SLI口径定义 → 分类 → 度量标准 集成链路 SLI口径定义 可用性 延迟 吞吐量 错误率 请求成功率 健康检查通过率 Uptime P50 / P90 / P99 平均延迟 最大延迟 QPS / RPS / TPS 并发连接数 带宽使用率 HTTP 5xx / 4xx 业务错误码 超时错误 Policy Check 规则库(阈值模板 + 评估策略) 告警触发 / 事件生成 / 自动化修复

3.5 SLI口径定义的最佳实践

在Policy Check规则库中定义SLI口径时,应遵循以下原则:

  1. 口径唯一性:每个SLI口径在规则库中拥有全局唯一的名称和ID,避免重复定义
  2. 维度明确:明确指定测量维度(可用性/延迟/吞吐量/错误率),便于规则引擎自动匹配阈值模板
  3. 边界清晰:定义口径时需说明排除条件(如健康检查请求、内部监控流量)
  4. 窗口可配置:度量窗口(1分钟/5分钟/1小时)应作为口径参数,而非硬编码
  5. 版本管理:口径变更需记录版本号,确保历史告警可追溯
Policy Check 规则库中的SLI口径定义示例(YAML格式):
sli_definitions:
  - name: api_gateway_availability
    category: availability
    measurement: request_success_rate
    window: 5m
    threshold: 99.99
    exclude: ["health_check", "internal_monitor"]

  - name: payment_service_p99_latency
    category: latency
    measurement: p99_latency_ms
    window: 1m
    threshold: 500
    exclude: ["batch_job"]

3.6 口径与度量标准的映射矩阵

下表总结了四类SLI口径与常用度量标准之间的映射关系,供规则库设计时参考:

SLI分类 推荐度量标准 聚合函数 典型窗口 阈值类型
可用性 请求成功率 count / sum 5m, 1h 静态阈值(如99.9%)
延迟 P99延迟 percentile 1m, 5m 静态阈值 + 突发检测
吞吐量 QPS rate / sum 1m 动态基线 + 容量告警
错误率 HTTP 5xx占比 count / sum 1m, 5m 静态阈值 + 零容忍

通过上述分类与度量标准的清晰定义,Policy Check规则库能够对每个SLI口径执行精确的评估,避免误告警和漏告警,为SRE团队提供可靠的观测基础。