4. SLI指标选取与埋点:关键业务SLI选取、埋点规范、数据采集管道搭建、数据质量校验

SLI(Service Level Indicator)是SLO工程的“测量仪表”。选错SLI,后续所有误差预算计算、门禁调优都会偏离真实业务。本节从关键业务SLI选取原则出发,依次覆盖埋点规范、数据采集管道和数据质量校验,形成完整的SLI工程化链路。

4.1 关键业务SLI选取原则与分类

SLI选取必须遵循“业务语义对齐”原则:指标要能直接反映用户可感知的可靠性。常见的SLI分类如下:

SLI类别 典型指标 适用场景 埋点位置
可用性 请求成功率、健康检查通过率 API网关、微服务、数据库 入口负载均衡 / 服务端
延迟 P50/P95/P99响应时间 用户交互、搜索、支付 客户端SDK / 服务端中间件
吞吐量 QPS、TPS、并发连接数 高并发场景、流媒体 网关 / 服务端计数器
数据完整性 数据丢失率、写入一致性 订单、支付、日志系统 数据库 / 消息队列
饱和度 CPU/内存/磁盘使用率 容量规划、弹性伸缩 基础设施监控
选取避坑:不要直接使用基础设施指标(如CPU使用率)作为核心SLI。用户不关心CPU,只关心请求是否成功、响应是否够快。基础设施指标应作为辅助信号,用于根因分析,而非SLO计算。

4.2 埋点规范:标准化与可观测性

埋点不规范会导致SLI数据“脏乱差”,误差预算计算失真。推荐采用统一埋点协议,覆盖以下维度:

  • 命名规范:采用 service_name.sli_type.metric_name 格式,例如 payment.availability.success_rate。
  • 标签(Label)规范:必须包含 service、endpoint、method、status_code、env。可选标签如 version、region。
  • 采样策略:高QPS服务(>1000 QPS)采用自适应采样,低QPS服务(<100 QPS)全量采集。
  • 时间戳精度:统一使用毫秒级Unix时间戳,时区对齐UTC。
# 示例:Prometheus 埋点规范
# HELP payment_availability_success_rate 支付服务请求成功率
# TYPE payment_availability_success_rate gauge
payment_availability_success_rate{service="payment", endpoint="/charge", method="POST", status_code="200", env="prod"} 0.9987
常见埋点错误:标签基数爆炸(如将user_id作为标签)、时间戳未对齐、采样率不一致导致聚合偏差。建议在埋点SDK层做标签白名单校验,拒绝非法标签注入。

4.3 数据采集管道搭建

从埋点到SLI计算,需要一条低延迟、高可靠的数据管道。典型架构包含三层:

  1. 采集层:使用Agent(如Prometheus Exporter、Telegraf、OpenTelemetry Collector)从服务端拉取或推送指标。
  2. 传输层:通过消息队列(Kafka / Pulsar)缓冲削峰,保证数据不丢失。
  3. 存储与计算层:时序数据库(VictoriaMetrics / Thanos)存储原始指标,流计算引擎(Flink / Spark Streaming)做窗口聚合,生成SLI时间序列。
SLI数据采集管道架构 采集层 Agent / Exporter 传输层 Kafka / Pulsar 存储与计算层 VictoriaMetrics / Flink 数据质量校验层(实时校验 + 离线校验) SLI时间序列 → 误差预算计算
管道关键配置:
  • 采集间隔:标准服务15s,高敏感服务5s。
  • Kafka分区数:按服务维度划分,保证同一SLI的时序数据有序。
  • 窗口聚合:使用滑动窗口(如5分钟窗口,1分钟滑动),兼顾实时性与稳定性。

4.4 数据质量校验

数据质量是SLI可信度的基石。必须建立实时+离线双重校验机制:

校验类型 校验项 触发阈值 处理动作
实时校验 数据延迟 > 30s 连续3个窗口 告警 + 自动降级到上一窗口数据
实时校验 数据缺失率 > 5% 单窗口 标记该窗口为“不可信”,不参与SLO计算
离线校验 标签基数异常(超过基线2倍) 每日一次 触发埋点审计,回滚异常标签
离线校验 SLI值与历史同期偏差 > 3σ 每日一次 人工复核,确认是否业务变更
数据质量校验流程 原始SLI数据 实时校验 离线校验 校验通过 → 写入SLI时间序列 校验失败 → 告警 / 降级 / 人工复核
最佳实践:在数据管道中增加“数据质量仪表盘”,实时展示各服务的延迟、缺失率、标签基数。一旦发现异常,立即触发自动暂停该服务的SLO计算,避免误差预算被污染数据“带偏”。

4.5 小结:SLI工程化清单

完成SLI选取与埋点后,建议对照以下清单进行验收:

  • ✅ 每个SLO至少对应1个核心SLI,且SLI与用户感知强相关。
  • ✅ 埋点命名统一、标签白名单已生效、采样策略合理。
  • ✅ 数据管道具备缓冲、削峰、重试机制,端到端延迟<30s。
  • ✅ 实时校验与离线校验均已部署,异常数据自动降级。
  • ✅ 数据质量仪表盘已上线,值班团队可第一时间感知数据异常。