3. 核心概念:SLI口径的定义、分类与度量标准
SLI(Service Level Indicator,服务等级指标)是可观测性体系中最基础的度量单元,也是Policy Check规则库直接评估的对象。SLI口径定义了“测量什么”以及“如何测量”,口径的准确性与一致性直接决定告警规则的有效性。
3.1 SLI口径的定义
SLI口径是对服务某一维度行为的量化描述,包含三个核心要素:
- 测量对象:被观测的服务、接口、资源或业务流程
- 测量维度:可用性、延迟、吞吐量、错误率等
- 测量方法:采样方式、统计窗口、聚合函数、边界条件
口径示例:
SLI名称:api_gateway_p99_latency
测量对象:API Gateway 所有HTTP请求
测量维度:延迟(Latency)
测量方法:1分钟窗口内,按请求端到端耗时排序,取第99百分位值
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规则库中的映射关系:
3.5 SLI口径定义的最佳实践
在Policy Check规则库中定义SLI口径时,应遵循以下原则:
- 口径唯一性:每个SLI口径在规则库中拥有全局唯一的名称和ID,避免重复定义
- 维度明确:明确指定测量维度(可用性/延迟/吞吐量/错误率),便于规则引擎自动匹配阈值模板
- 边界清晰:定义口径时需说明排除条件(如健康检查请求、内部监控流量)
- 窗口可配置:度量窗口(1分钟/5分钟/1小时)应作为口径参数,而非硬编码
- 版本管理:口径变更需记录版本号,确保历史告警可追溯
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团队提供可靠的观测基础。