このページではOpenTelemetryの概要について記載しています。
OpenTelemetryについて
OpenTelemetryはメトリクスやログ、トレースの情報を収集・送信するツール郡の総称です。
その中にはSDKやプロトコルも含まれています。
例えば、Mackerelトレーシング機能を使うためには以下を使用します。
- SDK (各言語、フレームワーク用にデータを作成する)
- Collector (データを外部に送信する。例えばMackerelへの送信)
SDKについて
OpenTelemetryはアプリケーション内部の情報を収集することができます。
そのため、各言語・フレームワークに合わせたSDKが作成されています。
SDKを使用することで、下図のようにリクエストにどのような操作があったかを把握することができるようになります。
メジャーな言語に向けては公式のものが用意されているほか、有志が作成しているものもあります。 また、フレームワークやCIツールなど個別のニーズにも対応したものもあります。
例えば、以下のフレームワークに対応しています
- Ruby On Rails (ruby)
- Django (Python)
- Gin (Go)
- Express (Node.js)
OpenTelemetryに対応しているツールはとても多いため、フレームワークにとどまらず、次のような操作も記録することができます。
- 発行されたSQL
- AWS との通信
- キューで処理されたジョブ
下のページから対応しているツールを検索することができます。その数に驚くはずです。
SDKでの計装方法
SDKの計装方法は以下のページを参照してください。
Collectorについて
Collector (OpenTelemetry Collector) はSDKから送られてきたデータをまとめ、外部に送信するツールです。エージェントやゲートウェイとして利用できます。
Collectorのデータの送信先をMackerelトレーシング機能のエンドポイントに設定することで、データをMackerelに送信することができます。
Collectorに関する細かい動作は、以下のページが参考になります。
Collectorのインストール方法
Collectorのインストール方法については以下のページを参考にしてください
Collectorを使うかどうかの判断について
Mackerelトレーシング機能を使用する場合、Collectorを使わずに、SDKから直接Mackerelにデータを送信することができます。
どちらが適しているかは負荷状況や言語によりますが、一般的に以下のトレードオフがあります。
- Collectorを経由する:「SDKからCollectorへの非同期通信」&「CollectorからMackerelへの非同期通信」と送信が二重になるので、安定する
- SDKから直接送信する:SDKを使うだけで動くので実装が簡単
Collectorを使用する場合は、以下のページも参照してください。