1. SLI 与 Metric 基础概念

在构建 Jenkins 流水线可观测体系之前,必须厘清两个最核心的术语:SLI(Service Level Indicator,服务等级指标) 与 Metric(度量指标)。它们是整个课程的数据基石,也是后续所有 SLO、错误预算、仪表盘设计的起点。

1.1 SLI 定义

SLI 是对服务或系统某一维度质量的量化描述。它回答的是:“这个服务现在表现得好不好?”

  • 核心特征:直接反映用户体验或业务价值,通常是一个比率或百分比。
  • 典型例子:请求成功率、流水线构建通过率、部署频率、平均修复时间(MTTR)。
  • 在 Jenkins 中的含义:流水线 SLI 衡量的是交付过程的质量,而非基础设施的健康度。
提示:SLI 必须与用户或业务直接相关。例如,“构建成功率 99.5%”是一个好的 SLI;“CPU 使用率 70%”则不是 SLI,而是基础设施 Metric。

1.2 Metric 定义

Metric 是系统或过程中可被采集、存储、聚合的原始数据点。它回答的是:“系统当前发生了什么?”

  • 核心特征:数值型、带时间戳、可被标签(Label/Tag)分类。
  • 典型例子:构建耗时(秒)、构建队列长度、测试用例总数、失败用例数、制品大小(MB)。
  • 在 Jenkins 中的含义:Metric 是流水线执行过程中产生的原始观测值,通常由 Prometheus、InfluxDB 或 Jenkins 内置统计收集。

1.3 SLI 与 Metric 的关系

SLI 与 Metric 不是并列关系,而是派生与聚合的关系。一张表可以清晰说明两者的区别与联系:

维度 Metric(度量指标) SLI(服务等级指标)
定义层级 原始观测值 派生比率或聚合值
数据粒度 单次事件或瞬时值 时间窗口内的统计量
示例 构建耗时 = 120s 构建耗时 P99 ≤ 300s
是否直接反映质量 否,仅反映状态 是,反映服务水平
在 Jenkins 中的用途 监控、告警、容量规划 SLO 计算、错误预算、业务报告

核心公式:SLI = 好的事件计数 / 总事件计数。其中“好的事件计数”和“总事件计数”都来自底层 Metric。

关键理解:没有 Metric,SLI 就是无源之水;没有 SLI,Metric 就只是一堆数字,无法回答“服务是否达标”。两者必须配合使用。
SLI 与 Metric 的关系架构 Metric 层(原始观测值) 构建耗时(秒) 构建结果(成功/失败) 测试用例总数 / 失败数 部署频率(次/天) SLI 层(派生比率) 构建成功率 = 成功构建数 / 总构建数 测试通过率 = 通过用例 / 总用例 部署频率 SLI = 成功部署 / 总部署 构建耗时 P99 = 排序后第 99% 分位值 聚合与派生关系 SLI = 好的事件计数 / 总事件计数,其中分子分母均来自底层 Metric SLO 层(目标阈值) 构建成功率 ≥ 99.5% | 部署频率 ≥ 10 次/天

1.4 为什么在 Jenkins 流水线中需要 SLI

很多团队在 Jenkins 中只关注“构建是否通过”这一个二元结果,这远远不够。引入 SLI 可以带来以下价值:

  1. 从“可用”到“可靠”:单个构建通过不代表交付质量稳定。SLI 让你看到趋势,例如“过去 7 天构建成功率从 99% 下降到 95%”。
  2. 量化交付瓶颈:通过构建耗时 SLI、队列等待 SLI,可以精准定位流水线中的慢环节。
  3. 驱动改进决策:没有 SLI,改进就是拍脑袋。有了 SLI,可以设定 SLO 目标,用数据驱动优化。
  4. 建立团队共识:SLI 是开发、测试、运维团队之间统一的“质量语言”,减少扯皮。
  5. 错误预算管理:SLI 是计算错误预算的基础,帮助团队在“发布速度”和“稳定性”之间做理性权衡。
常见误区:不要试图监控所有 Metric。SLI 应该聚焦在最关键的 3~5 个指标上,否则仪表盘会变成“数据垃圾场”,反而无法快速定位问题。
Jenkins 流水线引入 SLI 的价值流 无 SLI 状态 只看构建通过/失败 无法量化质量趋势 引入 SLI 定义关键质量指标 采集底层 Metric 量化分析 计算成功率/耗时 P99 发现瓶颈与趋势 驱动改进 设定 SLO 优化流水线 引入 SLI 后的具体收益 ✅ 从“构建通过”到“交付质量可量化” ✅ 精准定位流水线瓶颈(构建耗时、队列等待、测试失败率) ✅ 用数据驱动优化决策,而非凭经验猜测 ✅ 建立团队统一的“质量语言”,减少沟通成本 ✅ 为错误预算管理提供数据基础,平衡速度与稳定性

1.5 小结

本章建立了 SLI 与 Metric 的完整认知框架:

  • Metric 是原始观测值,SLI 是派生比率,两者是“数据”与“信息”的关系。
  • 在 Jenkins 流水线中,SLI 将零散的构建日志、耗时、结果转化为可量化的交付质量指标。
  • 没有 SLI,流水线优化就是盲人摸象;有了 SLI,团队才能用数据驱动持续改进。