什么是 OpenTelemetry?云原生可观测性的事实标准

OpenTelemetry(OTel)是 CNCF 的开源可观测性框架,统一了日志、指标、链路的采集标准与 OTLP 协议。本文讲解 OTel 解决的问题、核心组件、信号稳定性现状与常见批评,以及在观测云中的接入方式。

最佳实践
什么是 OpenTelemetry?云原生可观测性的事实标准封面

OpenTelemetry(简称 OTel)是 CNCF 旗下的开源可观测性框架,由 OpenTracing 与 OpenCensus 合并而来,提供统一的 API、SDK、采集器(Collector)与传输协议(OTLP),用于生成、收集和导出日志、指标与链路数据——它的目标是让遥测数据采集像 TCP/IP 一样成为行业通用标准,应用一次埋点、任意后端可用。

核心要点速览

  • OTel 只负责「数据如何产生与传输」,不负责存储与分析(那是观测云这类后端的事);
  • 核心组件:规范与语义约定、各语言 API/SDK、Collector、OTLP 协议;
  • 链路信号最成熟(GA 多年),指标与日志也已稳定,已成为云原生埋点的事实标准;
  • 主要批评:组件多、上手陡、部分语言的日志 SDK 仍在演进。

什么是遥测数据(Telemetry)?

遥测数据是系统自动产出的运行状态记录,用于在外部理解系统内部行为。三大经典信号是日志、指标与链路(见《日志、指标、链路的区别与联系》),加上日益重要的持续剖析(Profiling)。在 OTel 出现之前,每家的采集格式与传输协议都不兼容,换监控平台等于全量重新埋点。

OpenTelemetry 解决了什么问题?

  1. 厂商锁定:埋点与后端解耦,换平台只改导出配置,不改代码;
  2. 多语言不一致:统一的 API 语义,让 Java/Go/Python/Node.js 等服务产出同样结构的数据;
  3. 重复建设:自动埋点覆盖主流框架与中间件,不必手工为每个库写采集逻辑;
  4. 数据孤岛:统一的数据模型与上下文传播,让跨服务、跨语言的端到端链路成为可能。

OpenTelemetry 的核心组件

规范与语义约定

规范定义数据模型与 API 行为;语义约定统一属性命名(如 http.request.methodservice.name),保证不同产出的数据可互相对齐。

API 与 SDK

各语言的 SDK 负责实际的 Span/指标/日志生成、采样、资源附加与导出;API 与 SDK 分离的设计让库作者可以只依赖轻量 API。

Collector

OpenTelemetry Collector 是厂商中立的遥测数据管道:接收(receivers)→ 处理(processors)→ 导出(exporters),在边缘侧完成缓冲、过滤、脱敏与格式转换。

OTLP 协议

OTLP 是 OTel 原生的传输协议(gRPC/HTTP + Protobuf),已成为遥测数据交换的行业标准。

现状与信号稳定性

链路(Traces)信号最早稳定,生态最成熟;指标(Metrics)与日志(Logs)均已达到稳定状态,广泛用于生产;Profiling 信号处于快速发展中。选型时建议以官方发布的各语言信号成熟度表为准。

对 OpenTelemetry 的常见批评

  1. 组件繁多:规范、SDK、Collector、OTLP、语义约定,新手容易迷失——应对方式是从自动埋点 + 默认配置起步,逐步深入;
  2. 稳定性参差:不同语言、不同信号的成熟度不一,接入前查官方成熟度矩阵;
  3. 不是后端:OTel 不解决存储、查询与告警——这正是观测云这类平台的角色。

观测云落地:OTLP 原生接入

观测云对 OpenTelemetry 的支持是「全信号、零改造」:

  1. 接收:DataKit 内置 OTLP 接收端(gRPC 4317 / HTTP 4318),应用或 Collector 直接导出到 DataKit;
  2. 分析:链路进入 APM(服务拓扑、火焰图),指标进入指标模块(DQL 查询、仪表板),日志进入日志查看器;
  3. 生态兼容:除 OTLP 外,Jaeger、Zipkin、SkyWalking、DDTrace 数据同样可接,保护既有投资;
  4. 增强能力:敏感数据扫描、采样策略、存储分级等平台能力对 OTel 数据同样生效。

常见问题(FAQ)

Q:OpenTelemetry 和 Prometheus 是什么关系? 互补多于竞争:Prometheus 专注指标拉取与告警,OTel 统一三大信号的生产与传输;两者可以互相对接,详见《OpenTelemetry vs Prometheus》

Q:上了 OTel 还需要监控平台吗? 需要。OTel 只解决数据生产与传输,存储、查询、可视化、告警、权限都需要后端平台——观测云原生接收 OTLP 数据。

Q:老应用适合上 OTel 吗? 适合。Java 等语言有自动埋点 Agent,零代码改动即可获得链路与指标;其他语言可用自动埋点 + 少量手动 Span 渐进接入。

Q:OTel 的日志能力能替代 ELK 吗? OTel 日志负责采集与传输标准化,存储分析仍需日志平台。观测云日志模块可直接接收 OTLP 日志,与链路、指标天然关联。

系列阅读

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台