AWS X-Ray のためのアプリケーションの計測 - AWS X-Ray

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

AWS X-Ray のためのアプリケーションの計測

アプリケーションを計測するには、アプリケーション内の受信と送信リクエストおよびその他のイベントのトレースデータを、各リクエストに関するメタデータと一緒に送信する必要があります。特定の要件に基づいて、選択または組み合わせることができる計測オプションがいくつかあります。

  • 自動計測 – 通常、設定の変更または自動計測エージェントや他のメカニズムを追加して、コードをゼロに変更してアプリケーションを計測します。

  • ライブラリ計測 – アプリケーションコードの変更を最小限に抑えて、AWS SDK、Apache HTTP クライアント、または SQL クライアントのような特定のライブラリやフレームワークを対象としたあらかじめ組み込まれた計測を追加します。

  • 手動計測 – トレース情報を送信する各場所で、アプリケーションに計測コードを追加します。

X-Ray トレース用のアプリケーションの計測に使用できる SDK、エージェント、およびツールがいくつかあります。

AWSDistro for OpenTelemetryでアプリケーションを計測する

The AWS Distro for OpenTelemetry(ADOT)は、クラウドネイティブコンピューティング財団(CNCF)のOpenTelemetryプロジェクトに基づいたAWS ディストリビューションです。OpenTelemetry は、分散トレースとメトリクスを収集するためのオープンソース API、ライブラリ、およびエージェントの 単一セットを提供します。このツールキットは、SDK、自動計測エージェント、およびコレクタを含むアップストリームの OpenTelemetry コンポーネントのディストリビューションであり、によってテスト、最適化、保護、およびサポートされます。AWS。

ADOT を使用すると、エンジニアはアプリケーションを一度計測し、相関メトリクスとトレースを Amazon CloudWatch、AWS X-Ray、および Amazon OpenSearch Service を含む複数の AWS モニタリングソリューションに送信できます。

X-Ray を ADOT で使用するには、X-Ray で使用できる OpenTelemetry SDK と、X-Ray で使用できる AWS Distro for OpenTelemetry Collector の 2 つのコンポーネントが必要です。AWS Distro for OpenTelemetry と AWS X-Ray やその他の AWS のサービス の併用については、「AWS Distro for OpenTelemetry Documentation」を参照してください。

言語サポートと使用方法の詳細については、「AWS Observability on Github」を参照してください。

注記

CloudWatch エージェントを使用して Amazon EC2 インスタンスとオンプレミスサーバーからメトリクス、ログ、トレースを収集できます。CloudWatch エージェントバージョン 1.300025.0 以降では、OpenTelemetry または X-Ray クライアント SDK からトレースを収集し、それらを X-Ray に送信できます。X-Ray デーモンまたは AWS Distro for OpenTelemetry (ADOT) Collector の代わりに CloudWatch エージェントを使用してトレースを収集すると、管理するエージェントの数を減らすのに役立ちます。詳細については、「CloudWatch ユーザーガイド」の「CloudWatch エージェント」のトピックを参照してください。

ADOT には以下が含まれます。

ADOT は現在、JavaおよびPython用の自動計測サポートを含んでいます。さらに、ADOTは、ADOT マネージドLambda レイヤーを経由して、Java、Node.js、および Python のランタイムを使用した AWS Lambda 関数とそのダウンストリームリクエストの自動計測を有効にします。

Java および Go 用の ADOT SDK は、X-Ray の一元化されたサンプリングルールをサポートしています。他の言語の X-Ray サンプリングルールのサポートが必要な場合は、AWS X-Ray SDK の使用を検討してください。

注記

W3C トレース ID を X-Ray に送信できるようになりました。デフォルトでは、OpenTelemetry で作成されたトレースには、W3C トレースコンテキスト仕様に基づくトレース ID 形式があります。これは、X-Ray SDK を使用して作成されたトレース ID の形式や、X-Ray と統合された AWS サービスによって作成されたトレース ID の形式とは異なります。W3C 形式のトレース ID が X-Ray で確実に受け入れられるようにするため、バージョン 0.86.0 以降の AWS X-Ray エクスポーターを使用する必要があります。このエクスポーターはバージョン 0.34.0 以降の ADOT Collector に含まれています。以前のバージョンのエクスポーターはトレース ID のタイムスタンプを検証し、これにより W3C トレース ID が拒否される可能性があります。

AWS X-Ray SDKでアプリケーションを計測する

AWS X-Ray には、X-Ray にトレースを送信するためのアプリケーション計測用の、言語別 SDK セットが含まれています。各 X-Ray SDK は、以下を提供します。

  • インターセプター コードに追加して受信 HTTP リクエストをトレースする

  • クライアントハンドラー アプリケーションが他の AWS のサービス の呼び出しに使用する AWS SDK クライアントを計測する

  • HTTP クライアント 他の内部および外部 HTTP ウェブサービス呼び出しを計測する

X-Ray SDK では、SQL データベースへの呼び出しの計測、自動 AWS SDK クライアント計測、およびその他の機能もサポートされています。トレースデータを直接 X-Ray に送信する代わりに、SDK は JSON セグメントドキュメントを UDP トラフィックをリッスンしているデーモンプロセスに送信します。X-Ray デーモンはセグメントをキューにバッファし、バッチで X-Ray にアップロードします。

次の言語別の SDK が用意されています。

X-Ray は現在、Java用の自動計測サポートを含んでいます。

AWS Distro for OpenTelemetry および X-Ray SDK で選択する

X-Ray に含まれる SDK は、AWSによって提供される緊密に統合された計測ソリューションの一部です。AWS Distro for OpenTelemetry は、X-Ray が数あるトレースソリューションの 1 つにすぎない、より広範な業界ソリューションの一部です。どちらの方法でも X-Ray でエンドツーエンドのトレースを実装できますが、最も有用なアプローチを決定するには、違いを理解することが重要です。

以下が必要な場合は、AWS Distro for OpenTelemetryでアプリケーションを計測することをお勧めします。

  • コードを再計測することなく複数の異なるトレースバックエンドにトレースを送信する機能

  • OpenTelemetry コミュニティによって維持されている、各言語の多数のライブラリ計測のサポート

  • Java、Python、Node.js を使用するときにコード変更する必要がない、テレメトリデータの収集に必要なすべてがパッケージ化された完全マネージド型の Lambda レイヤー

    注記

    AWS Distro for OpenTelemetry では、Lambda 関数の計測を簡単に始められます。ただし、OpenTelemetry に備わる柔軟性が原因で、Lambda 関数が必要とするメモリが増加し、呼び出し時に、コールドスタートのレイテンシーが増加し、追加料金が発生する可能性があります。低レイテンシーに対する最適化を行っており、バックエンドの送信先に関する動的な設定など、OpenTelemetry の高度な機能を必要としない場合は、AWS X-Ray SDK を使用したアプリケーションの計測が適しています。

以下が必要な場合は、アプリケーションの計測に X-Ray SDK を選択することをお勧めします。

  • 緊密に統合されたシングルベンダーソリューション

  • Node.js、Python、Ruby、.NET を使用する場合に、X-Ray コンソールからサンプリングルールを設定し、複数のホスト間で自動的に使用する機能を含む、X-Ray の一元化されたサンプリングルールとの統合