AWS Distro for OpenTelemetry(ADOT)とは何か?
この記事は「AWS×OpenTelemetryについて調査&検証してみた連載」の第1回目です。
- 第1回目:AWS Distro for OpenTelemetry(ADOT)とは何か?(本記事)
- 第2回目:CloudWatch Application Signalsにトレースを送信する構成パターン
- 第3回目:Apache / PHP-FPM構成のLaravelからCloudWatch Application Signalsにトレースを送信する方法
はじめに:ADOTってなんだ?
AWSにおけるOpenTelemetryの利用について学習しようとしていて、「AWS Distro for OpenTelemetry(ADOT)」というものがあることを知りました。
AWSのサービス一覧を見ると、ADOTには専用のアイコンがありますが、AWSコンソールに「ADOT」というサービスがあるわけではありません。「ADOTってサービスじゃないの?何者?」という疑問が生まれました。
ADOTのアイコン
ADOTの公式サイトでは、以下のように説明されています。
AWS Distro for OpenTelemetry (ADOT) is a secure, production-ready, AWS-supported distribution of the Cloud Native Computing Foundation (CNCF) OpenTelemetry project.
つまり、「OpenTelemetryプロジェクトのAWSがサポートするディストリビューション」だということなのですが、正直これだけでは判然としませんでした。
そこで、「ADOTって結局どういうものなのか?」を自分なりに調べた結果を整理してみます。
OpenTelemetryとは何か
ADOTを理解するために、まずベースとなるOpenTelemetryについて整理します。
OpenTelemetryの公式ドキュメントでは、OpenTelemetryは以下のように説明されています。
OTelの略称でも知られるOpenTelemetryは、トレース、メトリクス、ログのようなテレメトリーデータを計装、生成、収集、エクスポートするためのベンダー非依存なオープンソースのオブザーバビリティフレームワークです。
つまり、OpenTelemetryはアプリケーションやインフラに対して計装コード(instrumentation)を仕込み、その情報を監視ツールへ送るための 標準仕様(プロトコル・SDK・Collectorなど) を定めたプロジェクトです。
一度OpenTelemetryで計装してしまえば、監視ツールの乗り換えも容易になりますし、同時に複数の監視ツールに送信することも可能になります。これがOpenTelemetryの大きなメリットです。
ディストリビューションとは?
ここで初めのADOTの説明で出てきた「ディストリビューション」という概念について整理します。
ディストリビューション=便利セット?
私は最初、「ディストリビューション」という言葉に引っ掛かりました。
ディストリビューションと言えば、まずLinuxディストリビューションが思い浮かぶ人もいると思います。私は、Linuxディストリビューション(Amazon LinuxやUbuntuなど)は、元々のLinuxからフォークされてOS部分からコードが異なっているものだと誤解していました。そのため、OpenTelemetryディストリビューションも、元々のOpenTelemetryライブラリからフォークされたものだと勘違いしていました。しかし実際に調べてみると、そうではありませんでした。
OpenTelemetryディストリビューションとは、OpenTelemetryコアライブラリに、ベンダー独自の機能を追加した便利セットのようなものです。ベースとなるコアライブラリはどのディストリビューションでも共通ですが、各ベンダーがそれぞれのサービスと組み合わせて使いやすくするために、独自の機能を追加しています。つまり、OpenTelemetryを“素の状態”で使うのではなく、“ベンダーに最適化された形”で簡単に使えるようにしたものが、OpenTelemetryディストリビューションです。
ADOTの特徴
ここまでの理解を踏まえると、ADOTが何なのか明確になってきます。
ADOTは、AWSが提供するOpenTelemetryディストリビューションです。OpenTelemetryのコアライブラリに、以下のAWS固有の機能を追加したものです。
-
OpenTelemetry SDK
- AWSリソース固有のメタデータ(ECSのTask ID、Lambdaのバージョン、EKSのPod名など)の自動収集機能が組み込まれています。
-
自動計装エージェント
- OpenTelemetry自動計装エージェントに、AWS SDKおよびAWS X-Rayトレースデータのサポートが追加されています。
-
OpenTelemetry Collector
- X-Ray、CloudWatch、Managed Service for Prometheusへの送信機能(エクスポーター)が含まれています。
これらの関係をまとめたのが、次の概念図です。
ADOTの概念図
ADOTの利点
では、なぜOpenTelemetryのライブラリを直接使うのではなくADOTを使うのでしょうか?ADOTを選択する利点をまとめます。
✅ 1. AWSサポート対象
ADOTはAWSが公式にサポートしており、問題が発生した際も、AWSのサポートチームから直接支援を受けることができます。
✅ 2. AWSサービスと統合済み
AWSリソースからメタデータを自動収集するため、AWSリソースを関連付けて分析しやすくなります。また、X-RayやCloudWatchへの送信機能が事前に組み込まれており、設定が簡単です。
✅ 3. AWS環境での検証・最適化済み
AWSの環境で動作するよう、検証・最適化がされており、特にパフォーマンステストでは、ADOT自体がアプリケーションの動作に悪影響を与えないよう、様々な条件でテストされています。
👉 ADOT Collector Performance Report
✅ 4. AWS環境で導入しやすい
ECSやEKSでは、ADOTコレクターをサイドカーとして簡単にデプロイできます。Lambdaでは、ADOT Lambdaレイヤーが提供されており数クリックで有効化できます。EC2でも、SSM Distributor等を使って簡単にデプロイ可能です。
他のOpenTelemetryディストリビューション
ADOT以外にも、多くのベンダーがOpenTelemetryディストリビューションを提供しています。
- Microsoft:Azure Monitor OpenTelemetry Distro
- Elastic:Elastic OTel Distro
- Grafana:Grafana Distribution of OpenTelemetry
公式の一覧はこちらです。
👉 OpenTelemetry公式・ディストリビューション一覧
まとめ:ADOTはAWSに最適化されたOpenTelemetry便利セット
この記事では、ADOTとは何か?という疑問から、以下を整理しました。
-
ADOTとは?
- OpenTelemetryのAWSディストリビューション
- コアライブラリにAWS向け機能を追加した便利セット
-
ADOTを使う理由
- AWSサポート対象
- AWSサービスと統合済み
- AWS環境での検証・最適化済み
- AWSで導入しやすい
次回は、ADOTを利用して、実際にAWSにトレースを送信する場合の構成パターンと、X-RayやCloudWatchなどの送信先の違いについて整理したいと思います。
参考
この記事が、OpenTelemetryやADOTに興味を持っている方にとって、理解の助けになる第一歩になっていれば嬉しいです。
間違いや補足があれば、コメントで教えてください。
Discussion