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计算,需要一条低延迟、高可靠的数据管道。典型架构包含三层:
- 采集层:使用Agent(如Prometheus Exporter、Telegraf、OpenTelemetry Collector)从服务端拉取或推送指标。
- 传输层:通过消息队列(Kafka / Pulsar)缓冲削峰,保证数据不丢失。
- 存储与计算层:时序数据库(VictoriaMetrics / Thanos)存储原始指标,流计算引擎(Flink / Spark Streaming)做窗口聚合,生成SLI时间序列。
管道关键配置:
- 采集间隔:标准服务15s,高敏感服务5s。
- Kafka分区数:按服务维度划分,保证同一SLI的时序数据有序。
- 窗口聚合:使用滑动窗口(如5分钟窗口,1分钟滑动),兼顾实时性与稳定性。
4.4 数据质量校验
数据质量是SLI可信度的基石。必须建立实时+离线双重校验机制:
| 校验类型 | 校验项 | 触发阈值 | 处理动作 |
|---|---|---|---|
| 实时校验 | 数据延迟 > 30s | 连续3个窗口 | 告警 + 自动降级到上一窗口数据 |
| 实时校验 | 数据缺失率 > 5% | 单窗口 | 标记该窗口为“不可信”,不参与SLO计算 |
| 离线校验 | 标签基数异常(超过基线2倍) | 每日一次 | 触发埋点审计,回滚异常标签 |
| 离线校验 | SLI值与历史同期偏差 > 3σ | 每日一次 | 人工复核,确认是否业务变更 |
最佳实践:在数据管道中增加“数据质量仪表盘”,实时展示各服务的延迟、缺失率、标签基数。一旦发现异常,立即触发自动暂停该服务的SLO计算,避免误差预算被污染数据“带偏”。
4.5 小结:SLI工程化清单
完成SLI选取与埋点后,建议对照以下清单进行验收:
- ✅ 每个SLO至少对应1个核心SLI,且SLI与用户感知强相关。
- ✅ 埋点命名统一、标签白名单已生效、采样策略合理。
- ✅ 数据管道具备缓冲、削峰、重试机制,端到端延迟<30s。
- ✅ 实时校验与离线校验均已部署,异常数据自动降级。
- ✅ 数据质量仪表盘已上线,值班团队可第一时间感知数据异常。