什么是 OpenTelemetry?云原生可观测性的事实标准
OpenTelemetry(OTel)是 CNCF 的开源可观测性框架,统一了日志、指标、链路的采集标准与 OTLP 协议。本文讲解 OTel 解决的问题、核心组件、信号稳定性现状与常见批评,以及在观测云中的接入方式。
OpenTelemetry(简称 OTel)是 CNCF 旗下的开源可观测性框架,由 OpenTracing 与 OpenCensus 合并而来,提供统一的 API、SDK、采集器(Collector)与传输协议(OTLP),用于生成、收集和导出日志、指标与链路数据——它的目标是让遥测数据采集像 TCP/IP 一样成为行业通用标准,应用一次埋点、任意后端可用。
核心要点速览
- OTel 只负责「数据如何产生与传输」,不负责存储与分析(那是观测云这类后端的事);
- 核心组件:规范与语义约定、各语言 API/SDK、Collector、OTLP 协议;
- 链路信号最成熟(GA 多年),指标与日志也已稳定,已成为云原生埋点的事实标准;
- 主要批评:组件多、上手陡、部分语言的日志 SDK 仍在演进。
什么是遥测数据(Telemetry)?
遥测数据是系统自动产出的运行状态记录,用于在外部理解系统内部行为。三大经典信号是日志、指标与链路(见《日志、指标、链路的区别与联系》),加上日益重要的持续剖析(Profiling)。在 OTel 出现之前,每家的采集格式与传输协议都不兼容,换监控平台等于全量重新埋点。
OpenTelemetry 解决了什么问题?
- 厂商锁定:埋点与后端解耦,换平台只改导出配置,不改代码;
- 多语言不一致:统一的 API 语义,让 Java/Go/Python/Node.js 等服务产出同样结构的数据;
- 重复建设:自动埋点覆盖主流框架与中间件,不必手工为每个库写采集逻辑;
- 数据孤岛:统一的数据模型与上下文传播,让跨服务、跨语言的端到端链路成为可能。
OpenTelemetry 的核心组件
规范与语义约定
规范定义数据模型与 API 行为;语义约定统一属性命名(如 http.request.method、service.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 的常见批评
- 组件繁多:规范、SDK、Collector、OTLP、语义约定,新手容易迷失——应对方式是从自动埋点 + 默认配置起步,逐步深入;
- 稳定性参差:不同语言、不同信号的成熟度不一,接入前查官方成熟度矩阵;
- 不是后端:OTel 不解决存储、查询与告警——这正是观测云这类平台的角色。
把遥测数据送到分析后端
以观测云为例,应用或 Collector 可把 OTLP 数据送到 DataKit 的 OpenTelemetry 采集器。先启用接收端,确认协议与监听地址,再分别验证链路、指标和日志是否到达。DataKit 的 HTTP 接收路径带 /otel/v1/ 前缀,不能直接套用 Collector 的默认地址。
接入后,用一次已知请求核对服务名称和 Span 关系;用一个已知增量核对指标;日志则检查事件时间、级别和关联标识。完成这些检查后,再配置相应图表与检测规则。
常见问题(FAQ)
Q:OpenTelemetry 和 Prometheus 是什么关系? 互补多于竞争:Prometheus 专注指标拉取与告警,OTel 统一三大信号的生产与传输;两者可以互相对接,详见《OpenTelemetry vs Prometheus》。
Q:上了 OTel 还需要监控平台吗? 需要。OTel 只解决数据生产与传输,存储、查询、可视化、告警、权限都需要后端平台——观测云原生接收 OTLP 数据。
Q:老应用适合上 OTel 吗? 适合。Java 等语言有自动埋点 Agent,零代码改动即可获得链路与指标;其他语言可用自动埋点 + 少量手动 Span 渐进接入。
Q:OTel 的日志能力能替代 ELK 吗? OTel 日志负责采集与传输标准化,存储分析仍需日志平台。若使用观测云,可通过已启用的 DataKit OpenTelemetry 采集器接收 OTLP 日志;与链路关联仍需正确的 Trace ID 等字段。