首页/云/可观测性速查/SLI 选型示例:不同服务类型怎么定指标
监控体系与方法40 条

SLI 选型示例:不同服务类型怎么定指标

SLI 要按服务形态挑选:请求型看成功率与延迟,任务型看完成率与时效,存储型看持久性与延迟;选错 SLI 会让 SLO 与用户感知脱节。

可观测性速查云更新于 2026-10-13

SLI 选型是什么

SLI(服务等级指标)要按服务形态挑选,不能一套指标套到底:请求型服务看成功率与延迟,任务型服务看按时完成率与处理时延,存储型看读写可用性与延迟,流式管道看端到端时延与完整性。选错 SLI 的后果是与用户感知脱节——指标一直达标,用户却在抱怨慢,因为被测量到的根本不是用户关心的那件事。

基本信息

请求型成功率、延迟分位数、吞吐
任务型按时完成率、任务排队时长、失败重试次数
存储型读写成功率、读写延迟、持久性保障
流式端到端时延、消息完整性、消费滞后

典型使用场景

  • 对外接口:用成功率与延迟分位数作为核心 SLI
  • 后台批处理:用按时完成率衡量,而不是看接口成功率
  • 数据库与对象存储:用读写成功率与延迟衡量,关注持久性
  • 消息管道:用端到端时延衡量数据是否及时到达
  • SLO 制定:先确定 SLI 类型,再定目标值与统计窗口

任务型服务的时效 SLI

任务型服务的时效 SLI
# 1 小时内完成的任务占比(目标 99%)
sum(rate(jobs_finished_total{latency_bucket="lte_1h"}[30d]))
  / sum(rate(jobs_finished_total[30d]))

# 请求型服务的成功率(按 5 分钟窗口观察,按 30 天窗口结算)
sum(rate(http_requests_total{code!~"5.."}[5m]))
  / sum(rate(http_requests_total[5m]))

# 存储型服务的读写成功率
sum(rate(db_operations_total{result="success"}[5m]))
  / sum(rate(db_operations_total[5m]))

# 统计窗口要写进口径文档,否则达成率无法跨周期比较

服务类型与 SLI

服务类型健康 SLI参考口径
请求型(接口与页面)成功率、P95 延迟成功请求数除以总请求数
任务型(批处理与队列)按时完成率、任务时延准时完成任务数除以应完成任务数
存储型(数据库与对象存储)可用性、读写延迟读写请求成功率
流式(消息管道)端到端时延、完整率写入到消费的时间差
(反例)只看进程存活进程在跑但业务已经失败
同一系统可以有多个 SLI,但要控制数量:每个 SLI 都应能驱动改进决策,指标太多会让谁都记不住、也没人为达成率负责。
SLI 的统计窗口与目标值要一起定义:同样的成功率,按 7 天和按 30 天统计得到的达成率差异明显,口径变更需要记录在案。

易错点

  • 给任务型服务套用请求型 SLI(只看成功率)会漏掉「完成太慢」的问题
  • SLI 定义频繁变更会让历史达成率失去可比性,变更应记录在案并保留旧口径数据
  • 把基础设施指标(如主机存活)当成 SLI,与用户感知无关,达标也没有意义
  • 统计窗口覆盖范围过窄时,短期抖动被放大成严重违约,团队把精力耗在无意义的追责上

数据来源与参考

  • Google SRE Workbook · Implementing SLOs(SLI 分类示例)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌