OTLP 协议详解:OpenTelemetry 的数据传输标准

OTLP(OpenTelemetry Protocol)是遥测数据传输的行业标准协议,基于 Protobuf 定义,支持 gRPC 与 HTTP 两种传输。本文讲解 OTLP 的数据模型、传输机制与落地要点,以及如何配置导出到观测云。

最佳实践
OTLP 协议详解:OpenTelemetry 的数据传输标准封面

OTLP(OpenTelemetry Protocol)是 OpenTelemetry 原生的遥测数据传输协议,用 Protobuf 定义链路、指标、日志三种信号的统一数据结构,支持 gRPC(默认 4317 端口)与 HTTP(默认 4318 端口)两种传输方式——它让「任何语言产出的遥测数据都能被任何兼容后端接收」,是打破厂商锁定的关键一环。

核心要点速览

  • OTLP 是传输协议不是存储格式:定义数据「怎么传」,不管数据「怎么存」;
  • gRPC 性能更优,HTTP 更易穿透代理与防火墙,两种传输载荷同为 Protobuf;
  • 数据模型三层结构:Resource(谁产生的)→ Scope(哪个库产生的)→ 具体信号记录;
  • 观测云 DataKit 原生提供 4317/4318 接收端,兼容 OTLP 全信号。

OTLP 的工作机制

一次 OTLP 传输包含三个阶段:

  1. 数据收集:SDK/采集端把遥测数据按 OTLP 数据模型组织成请求;
  2. 传输:通过 gRPC 长连接或 HTTP POST 发送,支持压缩(gzip)、TLS 与鉴权头;
  3. 确认:服务端返回成功或部分失败响应,客户端据此重试或丢弃。

OTLP 数据模型

三种信号共享同一套外层结构:

ExportXxxServiceRequest
└── resource_xxx[]
    ├── resource(属性:service.name、host.name 等)
    └── scope_xxx[]
        ├── scope(埋点库名与版本)
        └── spans[] / metrics[] / log_records[]

Traces:Span 包含 trace_id、span_id、父子关系、状态与属性;Metrics:包含 Sum/Gauge/Histogram/ExponentialHistogram 等数据点类型;Logs:日志记录含时间戳、severity、body 与属性,可与 trace 上下文关联。

gRPC 还是 HTTP?

维度 OTLP/gRPC OTLP/HTTP
端口约定 4317 4318
性能 长连接复用,开销低 每请求建连(可 keep-alive)
穿透性 部分代理/网关不支持 几乎任何环境都可用
调试 需专用工具 curl 即可验证

生产建议优先 gRPC;网络环境受限(如经过严格的企业代理)时用 HTTP。

服务接入 OTLP 的路径

  1. 应用埋点:用各语言 OTel SDK 自动/手动埋点,exporter 配置 OTEL_EXPORTER_OTLP_ENDPOINT
  2. 或直接经 Collector:应用先发到本地 Collector,由 Collector 统一缓冲、加工、导出;
  3. 存量格式转换:Jaeger/Zipkin 格式的数据可由 Collector 或 DataKit 转换接入,无需重埋点。

观测云落地:OTLP 直达 DataKit

# 应用侧环境变量示例
export OTEL_EXPORTER_OTLP_ENDPOINT=http://datakit-host:4318
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Token <你的观测云Token>"
  1. 开启接收:DataKit 开启 opentelemetry 采集器,暴露 4317(gRPC)/4318(HTTP);
  2. 应用直发或经 Collector 转发:两种拓扑观测云都支持;
  3. 平台侧能力:链路进 APM、指标进指标模块、日志进日志查看器,统一打标与关联;
  4. 鉴权与多工作空间:通过 Header 中的 Token 路由到不同工作空间。

常见问题(FAQ)

Q:OTLP 有安全性保障吗? 协议本身支持 TLS 加密与自定义鉴权 Header;生产环境务必开启 TLS 并使用 Token 鉴权,避免遥测数据明文传输。

Q:OTLP 会不会成为性能瓶颈? Protobuf 编码 + 批发送的效率很高;瓶颈通常在网络带宽。开启 gzip 压缩、合理设置批量大小即可。

Q:老版本 OTLP 和新版本兼容吗? OTLP 遵循 Protobuf 的向前兼容设计,新旧字段可平滑演进;保持 SDK 与接收端版本不太旧即可。

Q:可以把观测云作为唯一的 OTLP 后端吗? 可以。观测云对 OTLP 全信号(链路/指标/日志)都有完整的存储、分析与告警能力。

系列阅读

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

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

立即开始

选择观测云版本

代码托管平台