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)。

OpenTelemetry 核心组件架构 Traces (Tracing) Metrics Logs OTel SDK TracerProvider MeterProvider LoggerProvider SpanProcessor MetricReader LogRecordProcessor OTel Collector Receiver (gRPC/HTTP) Processor (Batch/Filter) Exporter (OTLP/Prometheus) Tail Sampling Attribute Enrichment Load Balancing 后端存储/分析 说明: • 三大信号通过统一的 OTel SDK 采集,经 Collector 处理后导出到后端。 • Collector 支持 OTLP 协议,也支持 Prometheus Remote Write、Jaeger gRPC 等专有协议。 • 用户可自定义 Processor 实现数据过滤、采样、属性增强等逻辑。

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 协同工作的典型部署拓扑:

OTel + Prometheus + Jaeger 集成架构 应用服务 A OTel SDK 埋点 应用服务 B OTel SDK 埋点 OTel Collector OTLP Receiver Batch / Filter Processor Prometheus Exporter Prometheus 指标存储 + 告警 Jaeger Exporter Jaeger 链路存储 + UI 关键集成点: • OTel Collector 通过 PrometheusExporter 将指标写入 Prometheus,支持 Remote Write。 • OTel Collector 通过 JaegerExporter 将链路数据写入 Jaeger,支持 gRPC 和 Thrift 协议。

2.5 本章小结

  • OpenTelemetry 是 CNCF 毕业项目,统一了 Traces、Metrics、Logs 三大信号的采集标准。
  • 核心组件包括 SDK(埋点)、Collector(处理/导出)以及丰富的 Exporter 生态。
  • OTel 与 Prometheus、Jaeger 是互补关系:OTel 负责采集,Prometheus 负责指标存储与告警,Jaeger 负责链路存储与可视化。
  • 推荐架构:应用通过 OTel SDK 上报数据 → Collector 统一处理 → 同时导出到 Prometheus 和 Jaeger,实现可观测性数据的完整闭环。