OpenTelemetry 项目中建议通过 OpenTelemetry Collector 来进行遥测数据的收集,OpenTelemetry Collector 提供了一套与后端服务商无关的通用的遥测数据的接收、处理和导出的能力。它解决了需要部署多个 Agent 进行不同格式的数据采集的问题,仅仅通过一个 Collector 进行统一的数据收集并支持发送给依赖不同数据格式的后端服务,例如 Jaeger、Prometheus 等。Collector 是完全用户可控的,用于可以决定它们的遥测数据最终存储到什么服务。Collector 是 OpenTelemetry 默认的遥测数据导出服务。
部署
OpenTelemetry Collector 提供了一个单一的二进制文件,它支持两种部署模式:
- Agent:与应用程序一起运行或者与应用程序在同一主机上运行(Sidecar或者DaemonSet模式)。
- Gateway:一个或者多个 Collector 实例可以组成一个独立的服务,用于收集某个集群、数据中心或某个地域的遥测数据。
组件
Collector 服务由以下几个组件组成:
- receivers:如何将数据收集到 Collector 中,支持推拉等方式;
- processors:如何处理接收到的数据;
- exporters:如何发送数据给后端服务,支持推拉等方式;
这些组件是通过 Pipeline 的模式启用的,可以通过在 YAML 中定义多个组件组合从而形成一个遥测数据处理的 Pipeline。
代码库
OpenTelemetry 中提供了 Collector 相关的两个代码库: