翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
X-Ray 計測から OpenTelemetry 計測への移行
X-Ray は、アプリケーショントレースとオブザーバビリティの主要な計測標準として OpenTelemetry (OTel) に移行しています。この戦略的シフトは、業界のベストプラクティス AWS に沿ったものであり、オブザーバビリティのニーズに応じて、より包括的で柔軟、かつ将来を見据えたソリューションを提供します。OpenTelemetry は業界で広く採用 AWS されているため、X-Ray と直接統合されない可能性のある外部のシステムなど、さまざまなシステム間でリクエストをトレースできます。
この章では、スムーズな移行に関する推奨事項を提供し、OpenTelemetry ベースのソリューションへの移行の重要性を強調して、アプリケーションの計測とオブザーバビリティにおける最新の機能を継続的にサポートし、アクセスできるようにします。
アプリケーションを計測するためのオブザーバビリティソリューションとして OpenTelemetry を採用することをお勧めします。
トピック
OpenTelemetry について
OpenTelemetry は、テレメトリデータを収集するための標準化されたプロトコルとツールを提供する業界標準のオブザーバビリティフレームワークです。メトリクス、ログ、トレースなどのテレメトリデータを計測、生成、収集、エクスポートするための統一されたアプローチを提供します。
X-Ray SDKs から OpenTelemetry に移行すると、次の利点があります。
フレームワークとライブラリの計測サポートの強化
追加のプログラミング言語のサポート
自動計測機能
柔軟なサンプリング設定オプション
メトリクス、ログ、トレースの統合コレクション
OpenTelemetry コレクターには、X-Ray デーモンよりも多くのデータ収集形式とエクスポート先オプションが用意されています。
での OpenTelemetry サポート AWS
AWS には、OpenTelemetry を操作するための複数のソリューションが用意されています。
-
AWS Distro for OpenTelemetry
OpenTelemetry トレースをセグメントとして X-Ray にエクスポートします。
詳細については、AWS 「 Distro for OpenTelemetry
」を参照してください。 -
CloudWatch Application Signals
カスタマイズされた OpenTelemetry トレースとメトリクスをエクスポートして、アプリケーションのヘルスをモニタリングします。
詳細については、「Application Signals の使用」を参照してください。
-
CloudWatch OTel エンドポイント
HTTP OTel エンドポイントとネイティブ OpenTelemetry 計測を使用して、OpenTelemetry トレースを X-Ray にエクスポートします。
詳細については、OTel エンドポイントの使用」を参照してください。
AWS CloudWatch での OpenTelemetry の使用
AWS CloudWatch は、クライアント側のアプリケーション計測と、Application Signals、Trace、Map、Metrics、Logs などのネイティブ AWS CloudWatch サービスを通じて OpenTelemetry トレースをサポートします。詳細については、「OpenTelemetry」を参照してください。
移行のための OpenTelemetry の概念を理解する
次の表は、X-Ray の概念を OpenTelemetry の同等の概念にマッピングしたものです。これらのマッピングを理解することで、既存の X-Ray 計測を OpenTelemetry に変換できます。
X-Ray の概念 | OpenTelemetry の概念 |
---|---|
X-Ray レコーダー | トレーサープロバイダーとトレーサー |
サービスプラグイン | Resource Detector |
Segment | (サーバー) スパン |
サブセグメント | (サーバー以外) スパン |
X-Ray サンプリングルール | OpenTelemetry サンプリング (カスタマイズ可能) |
X-Ray エミッタ | Span Exporter (カスタマイズ可能) |
注釈/メタデータ | 属性 |
ライブラリの計測 | ライブラリの計測 |
X-Ray トレースコンテキスト | スパンコンテキスト |
X-Ray トレースコンテキストの伝播 | W3C トレースコンテキストの伝播 |
X-Ray トレースサンプリング | OpenTelemetry トレースサンプリング |
該当なし | スパン処理 |
該当なし | パーティクル |
X-Ray デーモン | OpenTelemetry Collector |
注記
OpenTelemetry の概念の詳細については、OpenTelemetry ドキュメント
機能の比較
次の表は、両方のサービスでサポートされている機能を示しています。この情報を使用して、移行中に対処する必要があるギャップを特定します。
機能 | X-Ray 計測 | OpenTelemetry 計測 |
---|---|---|
ライブラリの計測 | サポート | サポート |
X-Ray サンプリング | サポート |
OTel Java/ でサポートされています。NET/Go ADOT Java/ でサポートされています。NET/Python/Node.js |
X-Ray トレースコンテキストの伝播 | サポート | サポート |
リソース検出 | サポート | サポート |
セグメント注釈 | サポート | サポート |
セグメントメタデータ | サポート | サポート |
ゼロコード自動計測 | Java でサポート |
OTel Java/ でサポートされています。NET/Python/Node.js ADOT Java/ でサポートされています。NET/Python/Node.js |
作成を手動でトレースする | サポート | サポート |
トレースのセットアップと設定
OpenTelemetry でトレースを作成するには、トレーサーが必要です。アプリケーションで Tracer プロバイダーを初期化することで、トレーサーを取得します。これは、X-Ray レコーダーを使用して X-Ray を設定し、X-Ray トレースでセグメントとサブセグメントを作成する方法と似ています。
注記
OpenTelemetry トレーサープロバイダーは、X-Ray レコーダーよりも多くの設定オプションを提供します。
トレースデータ構造について
基本的な概念と機能マッピングを理解したら、トレースデータ構造やサンプリングなどの特定の実装の詳細について学習できます。
OpenTelemetry は、セグメントやサブセグメントの代わりにスパンを使用してトレースデータを構造化します。各スパンには、次のコンポーネントが含まれます。
名前
一意の ID
開始タイムスタンプと終了タイムスタンプ
スパンの種類
スパンコンテキスト
属性 (キーと値のメタデータ)
イベント (タイムスタンプ付きログ)
他のスパンへのリンク
ステータス情報
親スパンリファレンス
OpenTelemetry に移行すると、スパンは自動的に X-Ray セグメントまたはサブセグメントに変換されます。これにより、既存の CloudWatch コンソールエクスペリエンスは変更されません。
スパン属性の使用
X-Ray SDK には、セグメントとサブセグメントにデータを追加する 2 つの方法があります。
- 注釈
-
フィルタリングと検索のためにインデックス付けされるキーと値のペア
- メタデータ
-
検索用にインデックス化されていない複雑なデータを含むキーと値のペア
デフォルトでは、OpenTelemetry スパン属性は X-Ray raw データ内のメタデータに変換されます。代わりに特定の属性を注釈に変換するには、それらのキーをaws.xray.annotations
属性リストに追加します。
-
OpenTelemetry の概念の詳細については、OpenTelemetry トレース
」を参照してください。 -
OpenTelemetry データが X-Ray データにどのようにマッピングされるかの詳細については、OpenTelemetry to X-Ray data model translation
」を参照してください。
環境内のリソースの検出
OpenTelemetry は Resource Detectors を使用して、テレメトリデータを生成するリソースに関するメタデータを収集します。このメタデータはリソース属性として保存されます。たとえば、テレメトリを生成するエンティティは Amazon ECS クラスターまたは Amazon EC2 インスタンスであり、これらのエンティティから記録できるリソース属性には Amazon ECS クラスター ARN または Amazon EC2 インスタンス ID を含めることができます。
-
サポートされているリソースタイプの詳細については、OpenTelemetry Resource Semantic Conventions
」を参照してください。 -
X-Ray サービスプラグインの詳細については、「X-Ray SDK の設定」を参照してください。
サンプリング戦略の管理
トレースサンプリングは、すべてのリクエストではなく、リクエストの代表的なサブセットからデータを収集することで、コストを管理するのに役立ちます。OpenTelemetry と X-Ray はどちらもサンプリングをサポートしていますが、実装は異なります。
注記
トレースを 100% 未満サンプリングすると、アプリケーションのパフォーマンスに関する有意義なインサイトを維持しながら、オブザーバビリティのコストを削減できます。
OpenTelemetry にはいくつかの組み込みサンプリング戦略があり、カスタム戦略を作成できます。OpenTelemetry で X-Ray サンプリングルールを使用するように、一部の SDK 言語の X-Ray リモートサンプラーを設定することもできます。
OpenTelemetry からの追加のサンプリング戦略は次のとおりです。
親ベースのサンプリング – 追加のサンプリング戦略を適用する前に、親スパンのサンプリング決定を尊重します
トレース ID 比率ベースのサンプリング – >指定されたスパンの割合をランダムにサンプリングする
テールサンプリング – サンプリングルールを適用して OpenTelemetry Collector のトレースを完了します
カスタムサンプラー – サンプリングインターフェイスを使用して独自のサンプリングロジックを実装する
X-Ray サンプリングルールの詳細については、「X-Ray コンソールのサンプリングルール」を参照してください。
OpenTelemetry テールサンプリングの詳細については、「テールサンプリングプロセッサ
トレースコンテキストの管理
X-Ray SDKs はセグメントコンテキストを管理し、トレース内のセグメントとサブセグメント間の親子関係を正しく処理します。OpenTelemetry は同様のメカニズムを使用して、スパンが正しい親スパンを持つようにします。リクエストコンテキスト全体でトレースデータを保存して伝播します。たとえば、アプリケーションがリクエストを処理し、そのリクエストを表すサーバースパンを作成すると、OpenTelemetry はサーバースパンを OpenTelemetry コンテキストに保存し、子スパンが作成されると、その子スパンはコンテキスト内のスパンを親として参照できるようにします。
トレースコンテキストの伝播
X-Ray と OpenTelemetry はどちらも HTTP ヘッダーを使用して、サービス間でトレースコンテキストを伝達します。これにより、さまざまなサービスによって生成されたトレースデータをリンクし、サンプリングの決定を維持できます。
X-Ray SDK は、X-Ray トレースヘッダーを使用してトレースコンテキストを自動的に伝播します。あるサービスが別のサービスを呼び出すと、トレースヘッダーには、トレース間の親子関係を維持するために必要なコンテキストが含まれます。
OpenTelemetry は、コンテキストの伝播用に次のような複数のトレースヘッダー形式をサポートしています。
-
W3C トレースコンテキスト (デフォルト)
-
X-Ray トレースヘッダー
-
その他のカスタム形式
注記
1 つ以上のヘッダー形式を使用するように OpenTelemetry を設定できます。たとえば、X-Ray Propagator を使用して、X-Ray トレースをサポートする AWS サービスにトレースコンテキストを送信します。
X-Ray Propagator を設定して使用し、 AWS サービス間のトレースを有効にします。これにより、トレースコンテキストを API Gateway エンドポイントおよび X-Ray をサポートする他の サービスに伝達できます。
-
X-Ray トレースヘッダーの詳細については、「X-Ray デベロッパーガイド」の「トレースヘッダー」を参照してください。
-
OpenTelemetry コンテキストの伝播の詳細については、OpenTelemetry ドキュメントの「コンテキストとコンテキストの伝播
」を参照してください。
ライブラリ計測の使用
X-Ray と OpenTelemetry はどちらも、アプリケーションにトレースを追加するために最小限のコード変更を必要とするライブラリ計測を提供します。
X-Ray はライブラリ計測機能を提供します。これにより、アプリケーションコードの変更を最小限に抑えながら、構築済みの X-Ray 計測を追加できます。これらの計測は、 AWS SDK や HTTP クライアントなどの特定のライブラリと、Spring Boot や Express.js などのウェブフレームワークをサポートしています。
OpenTelemetry の計測ライブラリは、ライブラリフックまたは自動コード変更を通じてライブラリの詳細なスパンを生成し、コードの変更を最小限に抑えます。
OpenTelemetry のライブラリ計測がライブラリをサポートしているかどうかを確認するには、OpenTelemetry Registry の OpenTelemetry Registry
トレースのエクスポート
X-Ray と OpenTelemetry は、トレースデータをエクスポートするためにさまざまな方法を使用します。
X-Ray トレースのエクスポート
X-Ray SDKs はエミッタを使用してトレースデータを送信します。
セグメントとサブセグメントを X-Ray デーモンに送信します
ノンブロッキング I/O に UDP を使用する
SDK でデフォルトで設定
OpenTelemetry トレースのエクスポート
OpenTelemetry は、設定可能なスパンエクスポーターを使用してトレースデータを送信します。
http/protobuf または grpc プロトコルを使用する
OpenTelemetry Collector または CloudWatch エージェントによってモニタリングされるエンドポイントにスパンをエクスポートする
カスタムエクスポーター設定の許可
トレースの処理と転送
X-Ray と OpenTelemetry はどちらも、トレースデータを受信、処理、転送するためのコンポーネントを提供します。
X-Ray トレース処理
X-Ray デーモンはトレース処理を処理します。
X-Ray SDKs
セグメントとサブセグメントをバッチ処理する
X-Ray サービスにバッチをアップロードします
OpenTelemetry トレース処理
OpenTelemetry Collector はトレース処理を処理します。
計測されたサービスからトレースを受信します
トレースデータを処理してオプションで変更する
X-Ray を含むさまざまなバックエンドに処理されたトレースを送信します
注記
AWS CloudWatch エージェントはOpenTelemetry トレースを受信して X-Ray に送信することもできます。詳細については、OpenTelemetry を使用してメトリクスとトレースを収集する」を参照してください。
スパン処理 (OpenTelemetry 固有の概念)
OpenTelemetry はスパンプロセッサを使用して、スパンの作成時にスパンを変更します。
作成時または完了時にスパンの読み取りと変更を許可する
スパン処理のカスタムロジックを有効にする
孤立 (OpenTelemetry-soecific 概念)
OpenTelemetry のパーティショニング機能を使用すると、キーと値のデータを伝達できます。
トレースコンテキストとともに任意のデータを渡すことを可能にします
サービス境界を越えてアプリケーション固有の情報を伝達するのに役立ちます
OpenTelemetry Collector の詳細については、OpenTelemetry Collector
X-Ray の概念の詳細については、「X-Ray デベロッパーガイド」の「X-Ray の概念」を参照してください。
移行の概要
このセクションでは、移行に必要なコード変更の概要を説明します。以下のリストは、言語固有のガイダンスと X-Ray デーモンの移行手順です。
重要
X-Ray 計測から OpenTelemetry 計測に完全に移行するには、以下が必要です。
X-Ray SDK の使用を OpenTelemetry ソリューションに置き換える
X-Ray デーモンを CloudWatch エージェントまたは OpenTelemetry Collector (X-Ray Exporter) に置き換えます。
新規および既存のアプリケーションの推奨事項
新規および既存のアプリケーションでは、次のソリューションを使用してアプリケーションでトレースを有効にすることをお勧めします。
- インストルメンテーション
-
OpenTelemetry SDKs
AWS Distro for OpenTelemetry Instrumentation
- データ収集
-
OpenTelemetry Collector
CloudWatch エージェント
OpenTelemetry ベースのソリューションに移行した後も、CloudWatch エクスペリエンスは変わりません。CloudWatch コンソールのトレースページとトレースマップページでトレースを同じ形式で表示したり、X-Ray APIs を使用してトレースデータを取得したりできます。
セットアップ変更のトレース
X-Ray セットアップを OpenTelemetry セットアップに置き換える必要があります。
機能 | X-Ray SDK | OpenTelemetry |
---|---|---|
デフォルト設定 |
|
|
手動設定 |
|
|
ライブラリ計測の変更
AWS SDK、HTTP クライアント、ウェブフレームワーク、およびその他のライブラリの X-Ray ライブラリ計測の代わりに OpenTelemetry Library 計測を使用するようにコードを更新します。これにより、X-Ray トレースの代わりに OpenTelemetry トレースが生成されます。
注記
コードの変更は言語とライブラリによって異なります。詳細な手順については、言語固有の移行ガイドを参照してください。
Lambda 環境計測の変更
Lambda 関数で OpenTelemetry を使用するには、次のいずれかの設定オプションを選択します。
-
自動計測 Lambda レイヤーを使用します。
-
(推奨) CloudWatch Application Signals Lambda レイヤー
注記
トレースのみを使用するには、Lambda 環境変数 を設定します
OTEL_AWS_APPLICATION_SIGNALS_ENABLED=false
。
-
-
Lambda 関数の OpenTelemetry を手動でセットアップします。
X-Ray UDP Span Exporter を使用してシンプルなスパンプロセッサを設定する
X-Ray Lambda プロパゲーターをセットアップする
トレースデータを手動で作成する
X-Ray セグメントとサブセグメントを OpenTelemetry スパンに置き換えます。
OpenTelemetry トレーサーを使用してスパンを作成する
スパンに属性を追加する (X-Ray メタデータと注釈に相当)
重要
X-Ray に送信した場合:
サーバースパンを X-Ray セグメントに変換する
その他のスパンは X-Ray サブセグメントに変換されます
属性はデフォルトでメタデータに変換されます
属性を注釈に変換するには、そのキーをaws.xray.annotations
属性リストに追加します。詳細については、「カスタマイズされた X-Ray 注釈を有効にする
X-Ray デーモンから AWS CloudWatch エージェントまたは OpenTelemetry コレクターへの移行
CloudWatch エージェントまたは OpenTelemetry コレクターを使用して、計測されたアプリケーションからトレースを受信し、X-Ray に送信できます。
注記
CloudWatch エージェントバージョン 1.300025.0 以降では、OpenTelemetry トレースを収集できます。X-Ray デーモンの代わりに CloudWatch エージェントを使用すると、管理する必要があるエージェントの数が減ります。詳細については、CloudWatch エージェントを使用したメトリクス、ログ、トレースの収集」を参照してください。
Amazon EC2 またはオンプレミスサーバーでの移行
重要
CloudWatch エージェントまたは OpenTelemetry コレクターを使用してポートの競合を防ぐ前に、X-Ray デーモンプロセスを停止します。
既存の X-Ray デーモンのセットアップ
デーモンのインストール
既存の X-Ray デーモンの使用法は、次のいずれかの方法を使用してインストールされました。
- 手動インストール
-
X-Ray デーモン Amazon S3 バケットから実行可能ファイルをダウンロードして実行します。
- 自動インストール
-
このスクリプトを使用して、インスタンスの起動時に デーモンをインストールします。
#!/bin/bash curl https://s3.us-east-2.amazonaws.com/aws-xray-assets.us-east-2/xray-daemon/aws-xray-daemon-3.x.rpm \ -o /home/ec2-user/xray.rpm yum install -y /home/ec2-user/xray.rpm
デーモンを設定する
既存の X-Ray デーモンの使用法は、次のいずれかを使用して設定されました。
-
コマンドライン引数
-
設定ファイル (
xray-daemon.yaml
)
例 設定ファイルを使用する
./xray -c ~/xray-daemon.yaml
デーモンを実行する
既存の X-Ray デーモンの使用が次のコマンドで開始されました。
~/xray-daemon$ ./xray -o -n us-east-1
デーモンの削除
Amazon EC2 インスタンスから X-Ray デーモンを削除するには:
-
デーモンサービスを停止します。
systemctl stop xray
-
設定ファイルを削除します。
rm ~/
path
/to
/xray-daemon.yaml -
設定されている場合は、ログファイルを削除します。
注記
ログファイルの場所は、設定によって異なります。
-
コマンドライン設定:
/var/log/xray-daemon.log
-
設定ファイル:
LogPath
設定を確認する
-
CloudWatch エージェントのセットアップ
エージェントのインストール
インストール手順については、「オンプレミスサーバーへの CloudWatch エージェントのインストール」を参照してください。
エージェントの設定
-
トレース収集を有効にする設定ファイルを作成します。詳細については、CloudWatch エージェント設定ファイルの作成」を参照してください。
-
IAM アクセス許可を設定します。
-
IAM ロールをアタッチするか、エージェントの認証情報を指定します。詳細については、「IAM ロールのセットアップ」を参照してください。
-
ロールまたは認証情報に アクセス
xray:PutTraceSegments
許可が含まれていることを確認します。
-
エージェントを開始する
エージェントを起動する手順については、「 コマンドラインを使用した CloudWatch エージェントの開始」を参照してください。
OpenTelemetry コレクターのセットアップ
コレクターのインストール
オペレーティングシステムの OpenTelemetry コレクターをダウンロードしてインストールします。手順については、「コレクターのインストール
コレクターの設定
コレクターで次のコンポーネントを設定します。
-
awsproxy 拡張機能
X-Ray サンプリングに必要です
-
OTel レシーバー
アプリケーションからトレースを収集します
-
xray エクスポーター
X-Ray にトレースを送信する
例 サンプルコレクター設定 — otel-collector-config.yaml
extensions: awsproxy: endpoint: 127.0.0.1:2000 health_check: receivers: otlp: protocols: grpc: endpoint: 127.0.0.1:4317 http: endpoint: 127.0.0.1:4318 processors: batch: exporters: awsxray: region: 'us-east-1' service: pipelines: traces: receivers: [otlp] exporters: [awsxray] extensions: [awsproxy, health_check]
重要
アクセスxray:PutTraceSegments
許可を使用して AWS 認証情報を設定します。詳細については、「認証情報の指定」を参照してください。
コレクターの起動
設定ファイルを使用してコレクターを実行します。
otelcol --config=otel-collector-config.yaml
Amazon ECS での移行
重要
タスクロールには、使用するコレクターに対する アクセスxray:PutTraceSegments
許可が必要です。
ポートの競合を防ぐために、同じホストで CloudWatch エージェントまたは OpenTelemetry コレクターコンテナを実行する前に、既存の X-Ray デーモンコンテナを停止します。
CloudWatch エージェントの使用
Amazon ECR Public Gallery
から Docker イメージを取得します。 という名前の設定ファイルを作成します
cw-agent-otel.json
。{ "traces": { "traces_collected": { "xray": { "tcp_proxy": { "bind_address": "0.0.0.0:2000" } }, "otlp": { "grpc_endpoint": "0.0.0.0:4317", "http_endpoint": "0.0.0.0:4318" } } } }
設定を Systems Manager パラメータストアに保存します。
https://console.aws.amazon.com/systems-manager/
を開きます。 Create パラメータを選択する
-
次の値を入力します。
名前:
/ecs/cwagent/otel-config
階層: 標準
タイプ: 文字列
データ型: テキスト
値: [ここに cw-agent-otel.json 設定を貼り付けます〕
ブリッジネットワークモードを使用してタスク定義を作成します。
タスク定義では、使用するネットワーキングモードによって設定が異なります。デフォルトはブリッジネットワーキングで、デフォルトの VPC で使用できます。ブリッジネットワークで、
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
環境変数を設定して、CloudWatch エージェント用のエンドポイントとポートを OpenTelemetry SDK に指示します。また、アプリケーションの OpenTelemetry SDK から Collector コンテナにトレースを送信するには、アプリケーションコンテナから Collector コンテナへのリンクを作成する必要があります。例 CloudWatch エージェントタスク定義
{ "containerDefinitions": [ { "name": "cwagent", "image": "public.ecr.aws/cloudwatch-agent/cloudwatch-agent:latest", "portMappings": [ { "containerPort": 4318, "hostPort": 4318, "protocol": "tcp" }, { "containerPort": 4317, "hostPort": 4317, "protocol": "tcp" }, { "containerPort": 2000, "hostPort": 2000, "protocol": "tcp" } ], "secrets": [ { "name": "CW_CONFIG_CONTENT", "valueFrom": "/ecs/cwagent/otel-config" } ] }, { "name": "application", "image": "APPLICATION_IMAGE", "links": ["cwagent"], "environment": [ { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://cwagent:4318/v1/traces" } ] } ] }
詳細については、CloudWatch エージェントをデプロイして Amazon ECS で Amazon EC2 インスタンスレベルのメトリクスを収集する」を参照してください。
OpenTelemetry コレクターの使用
-
Docker Hub
otel/opentelemetry-collector-contrib
から Dockerイメージを取得します。 -
Amazon EC2 コレクターを設定するセクションで示しているのと同じコンテンツ
otel-collector-config.yaml
を使用して という設定ファイルを作成しますが、0.0.0.0
の代わりに を使用するようにエンドポイントを更新します127.0.0.1
。 Amazon ECS でこの設定を使用するには、Systems Manager パラメータストアに設定を保存できます。まず、Systems Manager パラメータストアコンソールに移動し、新しいパラメータの作成 を選択します。次の情報を使用して新しいパラメータを作成します。
名前: /ecs/otel/config (この名前はコレクターのタスク定義で参照されます)
階層: 標準
タイプ: 文字列
データ型: テキスト
値: [otel-collector-config.yaml 設定をここに貼り付ける〕
-
例としてブリッジネットワークモードを使用して OpenTelemetry コレクターをデプロイするタスク定義を作成します。
タスク定義では、設定は使用するネットワークモードによって異なります。デフォルトはブリッジネットワーキングで、デフォルトの VPC で使用できます。ブリッジネットワークで、OpenTelemetry Collector のエンドポイントとポートを OpenTelemetry SDK に指示するように
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
環境変数を設定します。また、アプリケーションの OpenTelemetry SDK から Collector コンテナにトレースを送信するには、アプリケーションコンテナから Collector コンテナへのリンクを作成する必要があります。例 OpenTelemetry コレクタータスク定義
{ "containerDefinitions": [ { "name": "otel-collector", "image": "otel/opentelemetry-collector-contrib", "portMappings": [ { "containerPort": 2000, "hostPort": 2000 }, { "containerPort": 4317, "hostPort": 4317 }, { "containerPort": 4318, "hostPort": 4318 } ], "command": [ "--config", "env:SSM_CONFIG" ], "secrets": [ { "name": "SSM_CONFIG", "valueFrom": "/ecs/otel/config" } ] }, { "name": "application", "image": "APPLICATION_IMAGE", "links": ["otel-collector"], "environment": [ { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://otel-collector:4318/v1/traces" } ] } ] }
Elastic Beanstalk での移行
重要
CloudWatch エージェントを使用してポートの競合を防ぐ前に、X-Ray デーモンプロセスを停止します。
既存の X-Ray デーモン統合は、Elastic Beanstalk コンソールを使用するか、設定ファイルを使用してアプリケーションソースコードで X-Ray デーモンを設定することで有効になりました。
CloudWatch エージェントの使用
Amazon Linux 2 プラットフォームで、設定ファイルを使用して CloudWatch エージェント.ebextensions
を設定します。
-
プロジェクトルート
.ebextensions
に という名前のディレクトリを作成する -
次の内容で、
.ebextensions
ディレクトリcloudwatch.config
内に という名前のファイルを作成します。files: "/opt/aws/amazon-cloudwatch-agent/etc/config.json": mode: "0644" owner: root group: root content: | { "traces": { "traces_collected": { "otlp": { "grpc_endpoint": "12.0.0.1:4317", "http_endpoint": "12.0.0.1:4318" } } } } container_commands: start_agent: command: /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a append-config -c file:/opt/aws/amazon-cloudwatch-agent/etc/config.json -s
-
デプロイ時にアプリケーションソースバンドルに
.ebextensions
ディレクトリを含める
Elastic Beanstalk 設定ファイルの詳細については、「設定ファイルを使用した高度な環境のカスタマイズ」を参照してください。