OpenTelemetry Colloctor全体概要編
こんにちは、@sugar235711です。
この記事は「ひとりで気になるOSSのソースコード全部読んで何かする Advent Calendar 2025」16日目の記事です。
OpenTelemetryは各種SDKおよびCollectorを提供しており、全てコードが公開されています。
今回からはその中のCollectorに関して内部実装を見ていこうと思います。
https://github.com/open-telemetry/opentelemetry-collector
SDK同様に基本的にOpenTelemetryにおける基礎的な知識の説明は全部割愛します。ドキュメントを見てください。
OpenTelemetry Collectorはパイプラインベースのアーキテクチャで構成されます。
各パイプラインは「レシーバー→プロセッサー→エクスポーター」の流れになっており、受信したデータは順次加工・フィルタリングされてから外部へ送信されます。
https://opentelemetry.io/docs/collector/architecture/#:~:text=Each%20pipeline%20includes%20the%20following%3A
各実装はモジュールごとに分かれています。
receiver
アプリケーションやサービスからテレメトリデータを受信するコンポーネントで、Collectorのパイプラインの入口となる。複数のパイプライも指定できて、その場合は単一receiverインスタンスからfan-out consumerが作られprocessorに配られる
https://opentelemetry.io/docs/collector/architecture/#receivers
https://github.com/open-telemetry/opentelemetry-collector/tree/main/receiver
processor
受信したテレメトリデータに対して、変換・フィルタリング・バッチ化などの処理を行う中間コンポーネント。 複数のprocessorを組み合わせて使える
https://opentelemetry.io/docs/collector/architecture/#processors
https://github.com/open-telemetry/opentelemetry-collector/tree/main/processor
exporter
処理済みのテレメトリデータを、外部のバックエンドやストレージに送信するコンポーネント。複数の送信先を定義できる
https://opentelemetry.io/docs/collector/architecture/#exporters
https://github.com/open-telemetry/opentelemetry-collector/tree/main/exporter
scraper
外部システムからPull型でテレメトリ(主にMetrics)を定期的に収集するためのコンポーネント。
https://github.com/open-telemetry/opentelemetry-collector/tree/main/scraper
extension
Collectorプロセス自体に対して、ヘルスチェックや認証などの追加機能を提供する補助コンポーネント。
https://github.com/open-telemetry/opentelemetry-collector/tree/main/extension
connector
パイプライン間でテレメトリデータを中継・変換するためのコンポーネントで、ExporterとReceiverの両方として振る舞う
https://github.com/open-telemetry/opentelemetry-collector/tree/main/connector
まとめ
明日から内部実装を見ます。