X-Ray を使用した App Runner アプリケーションのトレース - AWS App Runner

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

X-Ray を使用した App Runner アプリケーションのトレース

AWS X-Ray は、アプリケーションが処理するリクエストに関するデータを収集するサービスであり、そのデータを表示、フィルタリング、インサイトを取得して、問題や最適化の機会を特定するために使用できるツールを提供します。アプリケーションへのトレースされたリクエストについては、リクエストとレスポンスだけでなく、アプリケーションがダウンストリーム AWS リソース、マイクロサービス、データベース、HTTP ウェブ APIs に対して行う呼び出しに関する詳細情報も確認できます。

X-Ray は、クラウドアプリケーションを強化する AWS リソースからのトレースデータを使用して、詳細なサービスグラフを生成します。サービスグラフには、フロントエンドサービスが呼び出してリクエストを処理しデータを維持するクライアント、フロントエンドサービス、バックエンドサービスが表示されます。サービスグラフを使用して、ボトルネック、レイテンシーのスパイク、その他の問題を識別して解決し、アプリケーションのパフォーマンスを向上させます。

X-Ray の詳細については、「AWS X-Ray デベロッパーガイド」を参照してください。

App Runner サービスの X-Ray サービスマップの例

トレース用にアプリケーションを計測する

ポータブルテレメトリ仕様である を使用してOpenTelemetry、App Runner サービスアプリケーションをトレース用に計測します。現時点では、App Runner AWS は Distro for OpenTelemetry (ADOT) をサポートしています。これは、 OpenTelemetry AWS サービスを使用してテレメトリ情報を収集して表示する実装です。X-Ray はトレースコンポーネントを実装します。

アプリケーションで使用している特定の ADOT SDK に応じて、ADOT は自動手動 の 2 つの計測アプローチをサポートします。SDK を使用した計測の詳細については、ADOT ドキュメント を参照し、ナビゲーションペインで SDK を選択します。

ランタイムセットアップ

App Runner サービスアプリケーションをトレース用に計測するための一般的なランタイムセットアップ手順を次に示します。

ランタイムのトレースを設定するには
  1. AWS Distro for (ADOT) OpenTelemetryのランタイムに記載されている手順に従って、アプリケーションを計測します。

  2. ソースコードリポジトリを使用している場合は apprunner.yaml ファイルの buildセクションに、コンテナイメージを使用している場合は Dockerfile に、必要なOTEL依存関係をインストールします。

  3. ソースコードリポジトリを使用している場合は apprunner.yaml ファイルで、コンテナイメージを使用している場合は Dockerfile で環境変数を設定します。

    例 環境変数
    注記

    次の例では、 apprunner.yaml ファイルに追加する重要な環境変数を一覧表示します。コンテナイメージを使用している場合は、これらの環境変数を Dockerfile に追加します。ただし、各ランタイムには独自の固有性があり、次のリストに環境変数を追加する必要がある場合があります。ランタイムにアプリケーションを設定する方法に関するランタイム固有の手順と例の詳細については、「 入門」のAWS 「 Distro for OpenTelemetry and go to your runtime」を参照してください。

    env: - name: OTEL_PROPAGATORS value: xray - name: OTEL_METRICS_EXPORTER value: none - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://localhost:4317 - name: OTEL_RESOURCE_ATTRIBUTES value: 'service.name=example_app'
    注記

    OTEL_METRICS_EXPORTER=none App Runner Otel コレクターはメトリクスのログ記録を受け入れないため、 は App Runner にとって重要な環境変数です。メトリクストレースのみを受け入れます。

ランタイムセットアップの例

次の例は、ADOT Python SDK を使用してアプリケーションを自動計測する方法を示しています。SDK は、Python コードを 1 行追加することなく、アプリケーションの Python フレームワークで使用される値を記述するテレメトリデータを含むスパンを自動的に生成します。2 つのソースファイルで数行だけを追加または変更する必要があります。

まず、次の例に示すように、いくつかの依存関係を追加します。

例 requirements.txt
opentelemetry-distro[otlp]>=0.24b0 opentelemetry-sdk-extension-aws~=2.0 opentelemetry-propagator-aws-xray~=1.0

次に、アプリケーションを計測します。これを行う方法は、ソースイメージまたはソースコードなどのサービスソースによって異なります。

Source image

サービスソースがイメージの場合、コンテナイメージの構築とイメージ内のアプリケーションの実行を制御する Dockerfile を直接計測できます。次の例は、Python アプリケーション用に実装された Dockerfile を示しています。インストルメンテーションの追加は太字で強調されます。

例 Dockerfile
FROM public.ecr.aws/amazonlinux/amazonlinux:latest RUN yum install python3.7 -y && curl -O https://bootstrap.pypa.io/get-pip.py && python3 get-pip.py && yum update -y COPY . /app WORKDIR /app RUN pip3 install -r requirements.txt RUN opentelemetry-bootstrap --action=install ENV OTEL_PYTHON_DISABLED_INSTRUMENTATIONS=urllib3 ENV OTEL_METRICS_EXPORTER=none ENV OTEL_RESOURCE_ATTRIBUTES='service.name=example_app' CMD OTEL_PROPAGATORS=xray OTEL_PYTHON_ID_GENERATOR=xray opentelemetry-instrument python3 app.py EXPOSE 8080
Source code repository

サービスソースがアプリケーションソースを含むリポジトリである場合は、App Runner 設定ファイル設定を使用して間接的にイメージを計測します。これらの設定は、App Runner が生成し、アプリケーションのイメージを構築するために使用する Dockerfile を制御します。次の例は、Python アプリケーション用に実装された App Runner 設定ファイルを示しています。インストルメンテーションの追加は太字で強調されます。

例 apprunner.yaml
version: 1.0 runtime: python3 build: commands: build: - pip install -r requirements.txt - opentelemetry-bootstrap --action=install run: command: opentelemetry-instrument python app.py network: port: 8080 env: - name: OTEL_PROPAGATORS value: xray - name: OTEL_METRICS_EXPORTER value: none - name: OTEL_PYTHON_ID_GENERATOR value: xray - name: OTEL_PYTHON_DISABLED_INSTRUMENTATIONS value: urllib3 - name: OTEL_RESOURCE_ATTRIBUTES value: 'service.name=example_app'

App Runner サービスインスタンスロールに X-Ray アクセス許可を追加する

App Runner サービスで X-Ray トレースを使用するには、サービスのインスタンスに X-Ray サービスとやり取りするためのアクセス許可を付与する必要があります。これを行うには、インスタンスロールをサービスに関連付け、X-Ray アクセス許可を持つ管理ポリシーを追加します。App Runner インスタンスロールの詳細については、「」を参照してくださいインスタンスロールAWSXRayDaemonWriteAccess マネージドポリシーをインスタンスロールに追加し、作成時にサービスに割り当てます。

App Runner サービスの X-Ray トレースを有効にする

サービス を作成すると、App Runner はデフォルトでトレースを無効にします。オブザーバビリティの設定の一環として、サービスの X-Ray トレースを有効にできます。詳細については、「オブザーバビリティの管理」を参照してください。

App Runner API または を使用する場合 AWS CLI、ObservabilityConfigurationリソースTraceConfigurationオブジェクト内のオブジェクトにはトレース設定が含まれます。トレースを無効にしたままにするには、 TraceConfiguration オブジェクトを指定しないでください。

コンソールと API の両方のケースで、前のセクションで説明したインスタンスロールを App Runner サービスに関連付けてください。

App Runner サービスの X-Ray トレースデータを表示する

App Runner コンソールのサービスダッシュボードページのオブザーバビリティタブで、サービスマップを表示を選択して Amazon CloudWatch コンソールに移動します。

オブザーバビリティタブを示す App Runner サービスダッシュボードページ

Amazon CloudWatch コンソールを使用して、アプリケーションが処理するリクエストのサービスマップとトレースを表示します。サービスマップには、リクエストのレイテンシーや、他のアプリケーションや AWS サービスとのやり取りなどの情報が表示されます。コードに追加するカスタム注釈を使用すると、トレースを簡単に検索できます。詳細については、「Amazon ユーザーガイド」の「 ServiceLens を使用してアプリケーションの状態をモニタリングする」を参照してください。 CloudWatch