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-8 章):OpenTelemetry 核心概念、Python SDK 接入、手动与自动插桩。
- 机器人篇(第 9-16 章):飞书机器人开发、消息类型、事件订阅与命令路由。
- 融合篇(第 17-24 章):链路数据实时消费、告警规则引擎、卡片模板设计。
- 实战篇(第 25-30 章):完整项目部署、故障演练、性能优化与运维。
前置要求:具备 Python 3.8+ 基础,了解 HTTP/REST 概念,拥有飞书开发者账号(免费)。无需 OpenTelemetry 或机器人开发经验。
1.4 整体架构概览
下图展示了本课程最终实现的系统架构:
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>查询完整链路详情。