OpenTelemetry 概述:项目背景、核心组件与生态关系
OpenTelemetry(简称 OTel)是 CNCF(Cloud Native Computing Foundation)旗下的可观测性标准框架,旨在统一分布式系统中 Traces(链路)、Metrics(指标)、Logs(日志) 三大信号的数据采集、处理与导出规范。本章将深入剖析 OTel 的项目起源、核心组件架构,以及它与 Prometheus、Jaeger 等经典工具的协作关系。
2.1 项目背景:从 OpenTracing 与 OpenCensus 到统一标准
在 OTel 出现之前,可观测性领域存在两大主流开源项目:
- OpenTracing:提供厂商中立的链路追踪 API,但仅覆盖 Tracing,缺乏 Metrics 和 Logs 的统一抽象。
- OpenCensus:由 Google 发起,同时支持 Tracing 和 Metrics,但 API 与特定后端耦合较紧。
两个社区在 2019 年合并,共同孵化出 OpenTelemetry,目标是成为可观测性数据的“通用语言”。OTel 不绑定任何特定后端,允许用户自由选择 Prometheus、Jaeger、Grafana、Datadog 等分析平台。
关键里程碑: 2021 年 OTel 成为 CNCF 毕业项目,目前是 Kubernetes 生态中可观测性数据采集的事实标准。
2.2 核心组件:三大信号与采集管道
OTel 围绕 Traces、Metrics、Logs 三大信号构建,每个信号都有独立的 API 和 SDK,但共享统一的采集与导出管道。
| 信号类型 | 核心概念 | 典型用例 | OTel 组件 |
|---|---|---|---|
| Traces | Span(跨度)、Trace(完整调用链) | 分布式请求延迟分析、错误定位 | TracerProvider、SpanProcessor |
| Metrics | Counter、Histogram、Gauge | 服务吞吐量、错误率、资源使用率 | MeterProvider、MetricReader |
| Logs | LogRecord、Severity | 应用日志结构化、关联 Trace ID | LoggerProvider、LogRecordProcessor |
三大信号通过 OTel Collector 统一接收、处理并导出到后端。Collector 是 OTel 生态中最关键的中间件,支持多种接收器(Receiver)、处理器(Processor)和导出器(Exporter)。
2.3 与 Prometheus / Jaeger 的关系
OTel 并非要取代 Prometheus 或 Jaeger,而是作为数据采集层与它们互补。下表清晰展示了三者的定位差异:
| 维度 | OpenTelemetry | Prometheus | Jaeger |
|---|---|---|---|
| 核心职责 | 数据采集、处理、导出(统一管道) | 指标存储、告警、查询(TSDB) | 链路存储、分析、UI 展示 |
| 信号类型 | Traces + Metrics + Logs | Metrics(Counter/Gauge/Histogram) | Traces(Span/Trace) |
| 数据模型 | OTel 语义约定(Semantic Conventions) | Prometheus 指标命名 + Label | Jaeger Span 模型 |
| 采集方式 | SDK 埋点 + Collector 拉/推 | Pull(/metrics 端点) | Push(UDP/gRPC) |
| 集成方式 | — | OTel Collector 可通过 Prometheus Exporter 写入 | OTel Collector 可通过 Jaeger Exporter 写入 |
最佳实践: 使用 OTel SDK 采集应用数据,通过 Collector 同时导出到 Prometheus(指标)和 Jaeger(链路),实现“一次埋点,多后端消费”。这是目前云原生可观测性最推荐的架构模式。
2.4 典型集成架构
下图展示了 OTel 与 Prometheus、Jaeger 协同工作的典型部署拓扑:
2.5 本章小结
- OpenTelemetry 是 CNCF 毕业项目,统一了 Traces、Metrics、Logs 三大信号的采集标准。
- 核心组件包括 SDK(埋点)、Collector(处理/导出)以及丰富的 Exporter 生态。
- OTel 与 Prometheus、Jaeger 是互补关系:OTel 负责采集,Prometheus 负责指标存储与告警,Jaeger 负责链路存储与可视化。
- 推荐架构:应用通过 OTel SDK 上报数据 → Collector 统一处理 → 同时导出到 Prometheus 和 Jaeger,实现可观测性数据的完整闭环。