4. OpenTelemetry 简介

OpenTelemetry(简称 OTel)是当前可观测性领域最核心的开源标准与工具集。它提供了一套与厂商无关的 API、SDK、Collector 和导出器,用于生成、采集、处理和导出遥测数据(Trace、Metrics、Logs)。在平台工程场景中,OTel 是实现“自助目录集成”的关键技术底座——它让平台团队能够以统一的方式接入任意后端,并为应用开发者提供标准化的埋点接口。

4.1 项目背景与 CNCF 毕业项目

OpenTelemetry 由 OpenTracing 和 OpenCensus 两个项目合并而来,于 2019 年正式启动。2021 年成为 CNCF 的毕业项目,标志着其成熟度、社区活跃度和生产可用性得到了广泛认可。

时间节点 里程碑
2019 年 5 月 OpenTracing 与 OpenCensus 合并,宣布 OpenTelemetry 项目
2020 年 8 月 发布第一个稳定版本(Trace API/SDK)
2021 年 6 月 正式成为 CNCF 毕业项目
2023 年 Logs API/SDK 稳定,三大信号(Traces、Metrics、Logs)全部 GA
平台工程视角: OTel 的 CNCF 毕业身份意味着平台团队可以放心将其作为基础设施层标准,无需担心厂商锁定或项目夭折风险。它已被 AWS、Azure、Google Cloud、Datadog、Honeycomb 等主流厂商原生支持。

4.2 核心组件架构

OpenTelemetry 的架构分为四个核心层次,从应用内埋点到数据导出形成完整链路:

OpenTelemetry 核心组件架构图 OpenTelemetry 核心组件架构 API Traces / Metrics / Logs SDK 采样 / 处理 / 上下文传播 Collector 接收 / 处理 / 转发 Exporter OTLP / Prometheus / Jaeger 说明: API 定义接口,SDK 实现接口并提供采样/上下文传播;Collector 作为独立服务接收并处理数据; Exporter 将数据发送到后端(如 Jaeger、Prometheus、Datadog)。平台工程中 Collector 是核心集成点。

4.2.1 API

API 层定义了遥测数据的抽象接口,不依赖具体实现。开发者只需引入 API 包即可编写埋点代码,无需关心底层 SDK 或后端。支持的三大信号:

  • Traces(链路):记录请求在分布式系统中的完整路径,包含 Span 和 SpanContext。
  • Metrics(指标):聚合型数值数据,如请求延迟、错误率、CPU 使用率。
  • Logs(日志):带时间戳的结构化或非结构化事件记录。

4.2.2 SDK

SDK 是 API 的具体实现,提供以下关键能力:

  • 采样(Sampling):控制数据采集比例,降低存储成本。
  • 上下文传播(Context Propagation):跨进程传递 Trace 上下文(W3C TraceContext 标准)。
  • 处理管道(Pipeline):支持自定义 Processor 对 Span/Metric 进行过滤、修改、聚合。

4.2.3 Collector

Collector 是 OTel 架构中的“数据中枢”,以独立服务运行。它接收来自 SDK 或其他来源的遥测数据,经过处理后再转发到后端。Collector 分为两种模式:

模式 说明 平台工程用途
Agent 与应用程序同主机部署,轻量级 边缘采集,减少应用负载
Gateway 独立集群部署,集中处理 多租户路由、数据脱敏、后端切换

4.2.4 Exporter

Exporter 负责将处理后的数据发送到指定的后端系统。OTel 原生支持多种导出协议:

  • OTLP(OpenTelemetry Protocol):官方标准协议,性能最优。
  • Prometheus:导出 Metrics 到 Prometheus 或兼容系统。
  • Jaeger / Zipkin:导出 Traces 到分布式追踪后端。
  • Datadog / New Relic / AWS X-Ray:商业后端适配器。

4.3 与 OpenTracing / OpenCensus 的关系

OpenTelemetry 并非从零开始,而是融合了前两个项目的优势。理解这段历史有助于避免混淆:

项目 状态 特点 与 OTel 的关系
OpenTracing 已归档(2022) 仅定义 Trace API,无 Metrics/Logs OTel 继承了其 API 设计理念和上下文传播模型
OpenCensus 已归档(2022) 支持 Trace + Metrics,但绑定 Google 后端 OTel 继承了其 SDK 实现和 Collector 架构
OpenTelemetry 活跃(CNCF 毕业) 统一 Trace + Metrics + Logs,厂商中立 —
迁移建议: 如果现有系统使用了 OpenTracing 或 OpenCensus 的 SDK,OTel 提供了兼容性桥接库(Bridge),可以在不修改业务代码的情况下逐步迁移。平台团队应优先推动新服务直接使用 OTel API,旧服务通过桥接过渡。

4.4 平台工程中的集成价值

在平台工程自助目录中,OpenTelemetry 扮演了“通用数据平面”的角色:

  • 标准化埋点:平台提供 OTel API 模板,开发者无需学习多种后端 SDK。
  • 动态路由:Collector 根据租户、环境、服务等级动态切换后端,无需修改应用代码。
  • 自助接入:开发者通过配置即可将遥测数据接入平台目录,实现“声明式可观测性”。
平台工程中 OTel 集成示意图 平台工程自助目录中的 OTel 集成 微服务 A 微服务 B OTel SDK 统一 API 自动/手动埋点 Collector 路由 / 脱敏 多租户管理 Datadog Jaeger 平台工程价值: 应用只需集成 OTel SDK,平台通过 Collector 统一路由到不同后端,实现“一次埋点,任意切换”。
注意: 在平台工程中,不要将 OTel SDK 与特定后端绑定。始终通过 Collector 做中间层,这样后端切换时只需修改 Collector 配置,无需重新部署应用。这是实现“自助目录”灵活性的关键原则。