X-Ray 計測から OpenTelemetry 計測への移行 - AWS X-Ray

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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 は Resource Detectors を使用して、テレメトリデータを生成するリソースに関するメタデータを収集します。このメタデータはリソース属性として保存されます。たとえば、テレメトリを生成するエンティティは Amazon ECS クラスターまたは Amazon EC2 インスタンスであり、これらのエンティティから記録できるリソース属性には Amazon ECS クラスター ARN または Amazon EC2 インスタンス ID を含めることができます。

サンプリング戦略の管理

トレースサンプリングは、すべてのリクエストではなく、リクエストの代表的なサブセットからデータを収集することで、コストを管理するのに役立ちます。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 と 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 計測に完全に移行するには、以下が必要です。

  1. X-Ray SDK の使用を OpenTelemetry ソリューションに置き換える

  2. 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 と OpenTelemetry の設定の比較
機能 X-Ray SDK OpenTelemetry
デフォルト設定
  • X-Ray 集中サンプリング

  • X-Ray トレースコンテキストの伝播

  • X-Ray デーモンへのトレースエクスポート

  • OpenTelemetry Collector または CloudWatch エージェントへのトレースのエクスポート (HTTP/gRPC)

  • W3C トレースコンテキストの伝播

手動設定
  • ローカルサンプリングルール

  • リソース検出プラグイン

  • X-Ray サンプリング (一部の言語では使用できない場合があります)

  • リソース検出

  • X-Ray トレースコンテキストの伝播

ライブラリ計測の変更

AWS SDK、HTTP クライアント、ウェブフレームワーク、およびその他のライブラリの X-Ray ライブラリ計測の代わりに OpenTelemetry Library 計測を使用するようにコードを更新します。これにより、X-Ray トレースの代わりに OpenTelemetry トレースが生成されます。

注記

コードの変更は言語とライブラリによって異なります。詳細な手順については、言語固有の移行ガイドを参照してください。

Lambda 環境計測の変更

Lambda 関数で OpenTelemetry を使用するには、次のいずれかの設定オプションを選択します。

  1. 自動計測 Lambda レイヤーを使用します。

  2. 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 デーモンを削除するには:

  1. デーモンサービスを停止します。

    systemctl stop xray
  2. 設定ファイルを削除します。

    rm ~/path/to/xray-daemon.yaml
  3. 設定されている場合は、ログファイルを削除します。

    注記

    ログファイルの場所は、設定によって異なります。

    • コマンドライン設定: /var/log/xray-daemon.log

    • 設定ファイル: LogPath設定を確認する

CloudWatch エージェントのセットアップ

エージェントのインストール

インストール手順については、「オンプレミスサーバーへの CloudWatch エージェントのインストール」を参照してください。

エージェントの設定
  1. トレース収集を有効にする設定ファイルを作成します。詳細については、CloudWatch エージェント設定ファイルの作成」を参照してください。

  2. 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 エージェントの使用

  1. Amazon ECR Public Gallery から Docker イメージを取得します。

  2. という名前の設定ファイルを作成します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" } } } }
  3. 設定を Systems Manager パラメータストアに保存します。

    1. https://console.aws.amazon.com/systems-manager/ を開きます。

    2. Create パラメータを選択する

    3. 次の値を入力します。

      • 名前: /ecs/cwagent/otel-config

      • 階層: 標準

      • タイプ: 文字列

      • データ型: テキスト

      • 値: [ここに cw-agent-otel.json 設定を貼り付けます〕

  4. ブリッジネットワークモードを使用してタスク定義を作成します。

    タスク定義では、使用するネットワーキングモードによって設定が異なります。デフォルトはブリッジネットワーキングで、デフォルトの 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 コレクターの使用

  1. Docker Hub otel/opentelemetry-collector-contribから Docker イメージを取得します。

  2. Amazon EC2 コレクターを設定するセクションで示しているのと同じコンテンツotel-collector-config.yamlを使用して という設定ファイルを作成しますが、 0.0.0.0の代わりに を使用するようにエンドポイントを更新します127.0.0.1

  3. Amazon ECS でこの設定を使用するには、Systems Manager パラメータストアに設定を保存できます。まず、Systems Manager パラメータストアコンソールに移動し、新しいパラメータの作成 を選択します。次の情報を使用して新しいパラメータを作成します。

    • 名前: /ecs/otel/config (この名前はコレクターのタスク定義で参照されます)

    • 階層: 標準

    • タイプ: 文字列

    • データ型: テキスト

    • 値: [otel-collector-config.yaml 設定をここに貼り付ける〕

  4. 例としてブリッジネットワークモードを使用して 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を設定します。

  1. プロジェクトルート.ebextensionsに という名前のディレクトリを作成する

  2. 次の内容で、 .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
  3. デプロイ時にアプリケーションソースバンドルに .ebextensions ディレクトリを含める

Elastic Beanstalk 設定ファイルの詳細については、「設定ファイルを使用した高度な環境のカスタマイズ」を参照してください。