1. 课程导论

1.1 为什么CI/CD流水线需要可观测性?

现代软件交付依赖CI/CD自助流水线完成代码构建、测试、部署。然而,当流水线执行失败或性能劣化时,开发团队往往陷入“盲人摸象”的困境:

  • 失败定位慢:日志分散在Jenkins、GitLab CI、Argo Workflows等多个平台,需要手动切换上下文。
  • 缺乏端到端追踪:一次提交从代码提交到生产部署,中间经过数十个步骤,无法快速定位瓶颈环节。
  • 告警噪音高:基于阈值的静态告警无法区分“构建超时”与“基础设施故障”,误报率高。
  • 自助排障成本高:开发人员需要掌握多个监控工具(Prometheus、ELK、Jaeger)的查询语法,学习曲线陡峭。
痛点维度 传统监控方式 理想可观测性
数据关联 日志、指标、链路各自独立 三者关联,一键跳转
上下文传递 无Trace ID,需人工匹配时间戳 自动传递Trace Context
自助能力 依赖运维配置告警规则 开发者可自定义SLO与仪表盘
覆盖范围 仅监控最终结果(成功/失败) 监控每个步骤的耗时、资源、错误
核心矛盾:CI/CD流水线本质是“代码到价值的管道”,但传统监控只关注管道出口,忽略了管道内部的流动状态。

1.2 OpenTelemetry简介

OpenTelemetry(简称OTel)是CNCF孵化的可观测性标准框架,提供统一的API、SDK和协议,用于生成、采集和导出遥测数据(Traces、Metrics、Logs)。

其核心能力包括:

  • 统一数据模型:定义Span、Metric、LogRecord的标准结构,消除厂商锁定。
  • 自动插桩:通过Instrumentation库自动捕获HTTP请求、数据库调用、消息队列等常见操作。
  • 上下文传播:支持W3C Trace Context标准,跨服务传递Trace ID。
  • 可扩展导出:通过OTLP协议将数据发送到任何兼容后端(Jaeger、Zipkin、Prometheus、Grafana等)。
关键概念:Trace(追踪)代表一次请求的完整路径,由多个Span(跨度)组成。每个Span记录一个操作单元(如“构建镜像”),包含开始时间、结束时间、状态和属性。
OpenTelemetry 数据采集架构 OpenTelemetry 数据采集架构 应用/服务 OTel SDK / API OTel Collector 接收器 → 处理器 → 导出器 可观测性后端 Jaeger / Prometheus 数据流:应用通过OTel SDK生成遥测数据 → Collector接收、处理、批处理 → 导出到后端存储与查询 支持多种协议:OTLP、Jaeger Thrift、Prometheus Remote Write CI/CD流水线中的OTel应用 在Jenkins Pipeline、GitLab CI Job、Argo Workflow Step中嵌入OTel SDK,自动生成Trace 每个Pipeline执行对应一个Trace,每个Stage/Step对应一个Span

1.3 课程目标

本课程旨在帮助DevOps工程师、SRE和平台工程师,掌握使用OpenTelemetry构建CI/CD流水线端到端可观测性的完整方法。完成本课程后,你将能够:

  1. 设计:为自助流水线设计Trace、Metric、Log的采集方案。
  2. 实现:在Jenkins、GitLab CI、Argo Workflows中嵌入OTel插桩。
  3. 关联:将流水线执行数据与代码变更、基础设施指标关联分析。
  4. 可视化:使用Grafana构建流水线执行仪表盘,实现SLO监控。
  5. 自助排障:开发团队通过Trace ID快速定位失败步骤与根因。
模块 核心产出 实践环境
基础篇(第1-5章) OTel环境搭建、数据模型理解 Docker Compose + OTel Collector
进阶篇(第6-15章) 流水线插桩、Trace上下文传播 Jenkins + GitLab CI + Argo Workflows
高级篇(第16-25章) SLO定义、告警规则、自助仪表盘 Grafana + Prometheus + Tempo
实战篇(第26-30章) 生产级部署、故障演练、成本优化 Kubernetes + 多云CI/CD

1.4 学习路径与前置知识

本课程采用“理论+动手”双轨制,每章包含概念讲解、代码示例和实验任务。建议按顺序学习,但可根据实际需求跳转:

  • 前置知识:熟悉CI/CD基本概念(Pipeline、Stage、Job)、Docker基础操作、YAML语法。
  • 推荐工具:VS Code + Remote Containers、Postman、kubectl。
  • 学习节奏:每周2-3章,每章实验时间约30-60分钟。
注意:第10-12章涉及Jenkins Pipeline Groovy脚本,如果对Groovy不熟悉,建议先阅读附录A的快速入门。
课程知识体系与学习路径 课程知识体系与学习路径 基础篇 (1-5章) OTel概念 + 环境搭建 进阶篇 (6-15章) 流水线插桩 + Trace传播 高级篇 (16-25章) SLO + 告警 + 仪表盘 实战篇 (26-30章) 生产部署 + 故障演练 关键技能:Trace ID传递 → Span属性注入 → Metric聚合 → Log关联 → 仪表盘设计 每个阶段都包含动手实验,建议在本地K8s集群或CI/CD SaaS平台验证 推荐学习时间分配 基础篇:2小时 | 进阶篇:6小时 | 高级篇:8小时 | 实战篇:4小时 总计约20小时,建议分4周完成,每周5小时

1.5 本章小结

本章明确了CI/CD流水线监控的三大痛点:数据孤岛、缺乏端到端追踪、自助排障困难。OpenTelemetry通过统一的数据模型和上下文传播机制,为解决这些问题提供了标准化方案。课程将按照“基础→进阶→高级→实战”四阶段递进,确保学员既能理解原理,又能动手落地。

下一步行动:请确保本地环境已安装Docker和Docker Compose,第2章将开始搭建OTel Collector + Jaeger的本地实验环境。