1. 课程导论:什么是 OpenTelemetry、什么是值班机器人、课程目标与学习路径

欢迎来到《OpenTelemetry 接入值班机器人实现链路追踪与告警》课程。本章作为课程起点,将帮助您建立对核心概念的统一认知,明确学习目标与路径,为后续实战打下坚实基础。

1.1 什么是 OpenTelemetry

OpenTelemetry(简称 OTel)是一个开源的可观测性框架,由 Cloud Native Computing Foundation(CNCF)孵化,旨在提供一套统一、厂商中立的 API、SDK 和工具,用于生成、采集、导出遥测数据(Traces、Metrics、Logs)。

其核心价值在于:

  • 统一标准:一套 API 覆盖三大信号(链路、指标、日志),避免供应商锁定。
  • 无侵入采集:通过自动插桩(Auto-Instrumentation)快速接入主流语言和框架。
  • 灵活导出:支持 OTLP 协议,可对接 Prometheus、Jaeger、Grafana、Datadog 等后端。
关键认知:OpenTelemetry 不是 APM 产品,而是可观测性数据的生产与传输层。它解决“数据怎么来、怎么走”的问题,不解决“数据怎么存、怎么展示”的问题。

1.2 什么是值班机器人

值班机器人(On-Call Bot)是运行在即时通讯平台(如飞书、钉钉、企业微信、Slack)上的自动化程序,负责:

  • 告警通知:将监控系统的告警事件推送到值班群。
  • 事件协同:支持认领、升级、关闭等操作。
  • 数据查询:通过交互命令查询链路、日志、指标。

在本课程中,我们将构建一个基于飞书机器人的 SRE 值班助手,使其能够:

  • 接收 OpenTelemetry 导出的链路数据。
  • 在出现错误 Span 或高延迟时自动发送告警。
  • 支持通过命令查询特定 Trace 的详细信息。

1.3 课程目标与学习路径

完成本课程后,您将具备以下能力:

能力维度 具体目标
OpenTelemetry 掌握 OTel SDK 配置、自动插桩、Span 创建与属性注入、OTLP 导出
值班机器人 实现飞书机器人消息推送、卡片交互、命令解析
链路追踪与告警 基于 Span 状态与延迟阈值触发告警,将 Trace 上下文带入告警卡片
系统集成 使用 Python 将 OTel Collector、Jaeger、飞书机器人串联为完整流水线

学习路径分为四个阶段:

  1. 基础篇(第 1-8 章):OpenTelemetry 核心概念、Python SDK 接入、手动与自动插桩。
  2. 机器人篇(第 9-16 章):飞书机器人开发、消息类型、事件订阅与命令路由。
  3. 融合篇(第 17-24 章):链路数据实时消费、告警规则引擎、卡片模板设计。
  4. 实战篇(第 25-30 章):完整项目部署、故障演练、性能优化与运维。
前置要求:具备 Python 3.8+ 基础,了解 HTTP/REST 概念,拥有飞书开发者账号(免费)。无需 OpenTelemetry 或机器人开发经验。

1.4 整体架构概览

下图展示了本课程最终实现的系统架构:

OpenTelemetry 接入值班机器人整体架构 课程整体架构:OTel → 告警引擎 → 飞书机器人 应用服务 Python / Java / Go OTel SDK 自动插桩 + Span 创建 OTel Collector OTLP Receiver Processor + Exporter Jaeger 链路存储与查询 告警引擎 规则匹配 + 卡片生成 飞书机器人 消息推送 / 命令响应 数据流说明 1. 应用通过 OTel SDK 生成链路 Span 2. Collector 接收并处理遥测数据 3. 告警引擎分析 Span 状态,触发飞书机器人推送 本课程 覆盖范围 ✅ 应用插桩 ✅ Collector 配置 ✅ 告警引擎 ✅ 飞书机器人 ❌ Jaeger 部署 ❌ 存储调优 (提供参考配置)

1.5 为什么选择这个方案

对比传统 APM 方案,本课程的技术栈具有以下优势:

对比维度 传统 APM(如 SkyWalking) 本课程方案(OTel + 机器人)
数据标准 私有协议,迁移成本高 OTel 开放标准,可任意切换后端
告警通道 邮件 / 短信,交互性弱 即时通讯机器人,支持双向交互
定制灵活性 受限于厂商 UI 完全自定义告警卡片与命令
学习曲线 需掌握整套 APM 体系 聚焦 OTel + 机器人 API,轻量实用
注意:本课程不深入讲解 Jaeger 或 Elasticsearch 的部署运维,但会在附录中提供 Docker Compose 一键启动配置,确保您能快速搭建实验环境。

1.6 课程产出预览

在课程结束时,您将拥有一个可运行的 Python 项目,其核心能力如下:

  • 一个 Flask 应用,通过 OTel SDK 自动采集 HTTP 请求链路。
  • 一个告警引擎,检测到错误 Span(status_code = ERROR)或 P95 延迟 > 2s 时触发告警。
  • 一个飞书机器人,在群聊中发送包含 Trace ID、服务名、错误信息的告警卡片。
  • 支持通过机器人命令 /trace <trace_id> 查询完整链路详情。