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

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

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

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

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

  • ライブラリインストルメンテーション — アプリケーションコードの変更を最小限に抑え、 AWS SDK、Apache HTTP クライアント、SQL クライアントなどの特定のライブラリやフレームワークを対象とする構築済みのインストルメンテーションを追加します。

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

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

AWS Distro for を使用したアプリケーションの計測 OpenTelemetry

AWS Distro for OpenTelemetry (ADOT) は、Cloud Native Computing Foundation (CNCF) OpenTelemetry project. OpenTelemetry project に基づく AWS ディストリビューションです。 は、分散トレースとメトリクスを収集するためのオープンソース APIs 、ライブラリ、およびエージェントの 1 セットを提供します。このツールキットは、 SDKs自動計測エージェント、コレクターなどのアップストリーム OpenTelemetry コンポーネントのディストリビューションであり、 によってテスト、最適化、保護、サポートされています AWS。

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

ADOT で X-Ray を使用するには、X-Ray での使用が有効になっている OpenTelemetry SDK と X-Ray での使用が有効になっている AWS Distro for OpenTelemetry Collector の 2 つのコンポーネントが必要です。 AWS X-Ray およびその他の OpenTelemetry で AWS Distro for を使用する方法の詳細については AWS のサービス、 AWS Distro for OpenTelemetry Documentation を参照してください。

言語のサポートと使用方法の詳細については、AWS 「 のオブザーバビリティ GitHub」を参照してください。

注記

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

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

ADOT は現在、JavaおよびPython用の自動計測サポートを含んでいます。さらに、ADOT は ADOT Managed AWS Lambda Layers を介して、Java、Node.js、Python ランタイムを使用した Lambda 関数とそのダウンストリームリクエストの自動計測を有効にします。 https://aws-otel.github.io/docs/getting-started/lambda

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

注記

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

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

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

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

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

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

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

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

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

AWS Distro for OpenTelemetry と X-Ray SDKs の選択

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

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

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

  • 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 の一元化されたサンプリングルールとの統合