Skip to content

Collector 与生态采用:数据代理、后端关系与 CNCF 毕业

基于 OpenTelemetry 1.x(2026-05 CNCF 毕业) · 核于 2026-08

速查

  • Collector 是数据代理:OpenTelemetry Collector 是一个独立部署的代理服务,pipeline 是「接收(receivers)→ 处理(processors)→ 导出(exporters)」三段式。解耦应用与后端:应用只发 OTLP 给 Collector,Collector 负责扇出、采样、重标记、转码。
  • Collector 三大组件:①Receivers——接收数据(OTLP 是主要的,也兼容 Jaeger/Prometheus/Zipkin/Statsd 等格式);②Processors——处理数据(batch 批处理、memory_limiter 限内存、attributes 加属性、sampling 采样、filter 过滤);③Exporters——导出到后端(Prometheus/Jaeger/Tempo/Loki/Datadog/OTLP 等)。
  • 部署模式四种:①Agent 模式——Collector 作为 sidecar/daemonset 跟应用同机部署,本地接收;②Gateway 模式——集中部署集群级 Collector,多应用发给它;③Agent + Gateway 两级——本机 Agent 收,转发到集群 Gateway 再扇出;④无 Collector——应用直接发后端(简单但耦合)。
  • OTel 与 Prometheus 的关系OTel 是数据源(生产者),Prometheus 是存储/查询(消费者)。OTel SDK 在应用里生产 metric,通过 Collector 的 prometheus exporter 暴露 /metrics 端点(或 remote_write)给 Prometheus 拉/推。Grafana 2025 调查:71% 组织同时用 Prometheus + OTel——两者互补,不是替代。
  • OTel 与 Jaeger/Tempo 的关系:Jaeger(CNCF 毕业,追踪存储/UI)、Tempo(Grafana Labs,追踪存储)是追踪后端,OTel 是追踪数据生产者。OTel SDK 生产 trace span → OTLP 发给 Collector → Collector 的 jaeger/tempo exporter 导出 → Jaeger/Tempo 存储 + UI 展示。
  • OTel 不做存储/可视化:这是理解 OTel 定位的关键——OTel 只负责生产与传输遥测数据,不存数据、不画图。存储用 Prometheus(metric)、Loki(log)、Tempo(trace);可视化用 Grafana;告警用 Alertmanager。OTel 是流水线的「上游」,后端是「下游」。
  • 2026-05 CNCF 毕业:继 Kubernetes(2018)、Prometheus(2018)、Envoy(2018)之后,OTel 成为 CNCF 第 N 个毕业项目(最高成熟度)。毕业要求:广泛采用、文档完善、治理成熟、发布流程规范、社区活跃。OTel 毕业 = 正式确立「可观测性事实标准」。
  • 采用现状:①过去 12 个月下载量超 26 亿次;②Grafana 2025 调查 79% 组织使用 OTel(采用率约 76%~79%);③71% 同时用 Prometheus + OTel;④从 OpenTracing + OpenCensus 合并而来(2019),结束两套标准分裂。
  • 迁移路径:从厂商 SDK / Prometheus client / Jaeger client 迁移到 OTel SDK 是渐进的——OTel Collector 兼容多种输入格式(Jaeger/Zipkin/Prometheus),可先部署 Collector 收老格式数据,再逐步把应用切到 OTel SDK。

一、Collector:接收-处理-导出三段式

Collector 是 OTel 的数据中转枢纽,核心是 pipeline 模型:

应用 A(OTel SDK)──┐
应用 B(OTel SDK)──┤
应用 C(老 Jaeger)─┤   Receivers(接收)
                    ├─→ [otlp / jaeger / zipkin / prometheus / statsd]

                    │   Processors(处理)
                    ├─→ [batch / memory_limiter / attributes /
                    │    sampling / filter / resource]

                    │   Exporters(导出)
                    └─→ [prometheus / jaeger / tempo / loki /
                         datadog / otlp / elasticsearch]

                    ┌─────────┴─────────┐
                    ▼                   ▼
              Prometheus(metric)  Jaeger(trace)
              Loki(log)           Datadog(全栈)

Receivers(接收)

Receiver接收什么
otlpOTel 标准格式(gRPC 4317 / HTTP 4318)—— 主要的
jaeger兼容老 Jaeger client 格式
zipkin兼容 Zipkin 格式
prometheus拉取 Prometheus exposition 格式
statsd兼容 StatsD 协议

Processors(处理)

Processor作用
batch批处理(攒一批再发,减少请求次数)
memory_limiter限制内存使用(防 OOM)
attributes增删改属性(如加 cluster 标签)
resource加 Resource 属性(如云信息)
filter过滤数据(如丢弃某服务的 trace)
sampling尾端采样(如只保留 10% trace)

Exporters(导出)

Exporter导出到
otlp另一个 Collector(级联)或支持 OTLP 的后端
prometheus暴露 /metrics 给 Prometheus 拉(或 remote_write)
jaeger / tempo追踪后端
loki / elasticsearch日志后端
datadog / newrelic / honeycomb商业 SaaS

二、部署模式:四种取舍

模式 1:无 Collector(应用直连后端)

应用 ──OTLP──→ 后端(如 Datadog / Tempo)
  • 优点:简单,无中间组件。
  • 缺点:应用绑死后端,换后端要改应用配置;无采样/批处理集中管理。
  • 适合:小规模、单一后端、快速验证。

模式 2:Agent 模式(本机 Collector)

应用 ──OTLP──→ 本机 Collector(DaemonSet/Sidecar)──→ 后端
  • 优点:本地接收(低延迟)、本机采样、应用只发本地不用管后端。
  • 缺点:每台机器一个 Collector,资源开销分散。
  • 适合:K8s 节点级(DaemonSet)、大规模集群。

模式 3:Gateway 模式(集中 Collector)

多应用 ──OTLP──→ 集群级 Collector(Deployment)──→ 多后端
  • 优点:集中管理配置、集中采样/批处理、易扩容。
  • 缺点:Collector 是单点(要多副本+负载均衡)、跨网络一跳延迟。
  • 适合:中等规模、需要集中管控。

模式 4:Agent + Gateway 两级(生产推荐)

应用 → 本机 Agent → 集群 Gateway → 多后端
  • 优点:本机 Agent 快速接收+初步处理,集群 Gateway 集中扇出+采样,兼顾低延迟与集中管控。
  • 缺点:架构复杂(两级)、运维成本高。
  • 适合:大规模生产集群(推荐)。

三、OTel 与 Prometheus 的关系:生产者 vs 消费者

最常见的误解是「OTel 替代 Prometheus」——。两者是互补的生产者-消费者关系:

维度OpenTelemetryPrometheus
角色数据生产者(在应用里埋点生产 metric)数据存储+查询(TSDB + PromQL)
做的事定义 metric API/SDK/数据模型/传输拉/存 metric,PromQL 查询,告警
不做的事不存数据、不查询不在应用里埋点(要 client 库)
关系OTel SDK 生产 → Collector 导出 → Prometheus 存Prometheus 拉 Collector 暴露的 /metrics
  • 协同方式:应用用 OTel SDK 生产 metric → Collector 的 prometheus exporter 暴露 /metrics 端点 → Prometheus 拉取存储 → Grafana 查询展示。
  • Grafana 2025 数据71% 组织同时用 Prometheus + OTel——印证两者互补共生,不是替代。
  • 唯一重叠:OTel 也提供 metric client(替代 Prometheus client 库),但存储/查询仍是 Prometheus 的活。

四、OTel 与 Jaeger/Tempo 的关系:追踪同理

维度OpenTelemetryJaeger / Tempo
角色追踪数据生产者追踪存储 + UI
做的事在应用里埋点生产 span,OTLP 传输存 trace,提供查询/可视化 UI
关系OTel 生产 → Collector 导出 → Jaeger/Tempo 存+展示消费 OTel 数据
  • Jaeger(CNCF 毕业):最早的分布式追踪系统(Uber 开源),存储 trace + 提供 UI 查询链路。
  • Tempo(Grafana Labs):专注追踪存储,与 Grafana/Loki/Prometheus 深度集成。
  • OTel 替代的是:老 Jaeger client / Zipkin client(各厂商追踪 SDK),不是 Jaeger/Tempo 后端。

五、OTel 不做存储/可视化:定位要清楚

理解 OTel 的关键:它只负责遥测数据的「生产与传输」,不存数据、不画图、不告警

[生产]              [传输]         [存储]          [可视化/告警]
OTel SDK     →    OTLP/Collector  →  后端      →    Grafana/Alertmanager
(埋点)          (协议/代理)      (DB)          (展示/告警)
  • 存储:Prometheus(metric)、Loki(log)、Tempo(trace)、Elasticsearch(log)。
  • 可视化:Grafana(统一面板)、Jaeger UI(trace)、Kibana(log)。
  • 告警:Alertmanager(基于 Prometheus)。
  • OTel 的边界:到 Collector 导出给后端就结束了。选什么后端、怎么查、怎么画图,是后端生态的事。

六、2026-05 CNCF 毕业:可观测性事实标准

OpenTelemetry 于 2026 年 5 月正式从 CNCF 毕业——成为继 Kubernetes、Prometheus、Envoy 之后最高成熟度的项目。

  • 毕业的意义:CNCF 毕业要求项目「广泛采用、文档完善、治理成熟、发布流程规范、社区多元活跃」——毕业 = 确认 OTel 已是「可观测性事实标准」,可放心在生产大规模采用。
  • 采用数据:①过去 12 个月下载量超 26 亿次;②Grafana 2025 调查 79% 组织使用 OTel;③71% 同时用 Prometheus + OTel;④毕业公告在 2026-05-21 Observability Summit(Minneapolis)发布。
  • 历史脉络:2019-05 加入 CNCF(Sandbox)→ 2021-08 进入孵化(Incubating)→ 2026-05 毕业(Graduated)。由 OpenTracing + OpenCensus 合并而来,结束了追踪标准的分裂。
  • 毕业不是终点:OTel 仍在持续完善——Logs 信号在各语言陆续 GA、Profiling 信号(第四支柱,开发中)、eBPF 集成等新方向。

七、迁移路径:从存量到 OTel

存量系统迁移到 OTel 是渐进的,Collector 兼容多格式是关键:

  1. 先部署 Collector:Collector 兼容 Jaeger/Zipkin/Prometheus/StatsD 输入——先把它架起来收老格式数据,统一出口。
  2. 逐步切应用 SDK:把应用从厂商 SDK / Prometheus client / Jaeger client 切到 OTel SDK。每次切一个服务,验证数据一致。
  3. 后端不动:Prometheus/Jaeger 等后端照常工作(Collector 导出给它们)——迁移对后端透明。
  4. 享受统一:全部切完后,三支柱用一套 OTel SDK/OTLP,换后端只改 Collector 配置。

下一步

掌握了 Collector 架构与生态关系后,可回到参考查三支柱速查、Collector 组件清单、API/SDK 对比与易错点。