AWS X-Ray の概念 - AWS X-Ray

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

AWS X-Ray の概念

AWS X-Ray は、サービスからセグメント形式でデータを受け取ります。X-Ray は、共通のリクエストを含むセグメントをグループ化します。トレース。X-Ray は、トレースを処理して、サービスグラフこれは、アプリケーションのビジュアル表現を提供します。

セグメント

アプリケーションロジックを実行しているコンピューティングリソースは、セグメントとしての動作に関するデータを送信します。セグメントには、リソース名、リクエストの詳細、行った作業の詳細が含まれています。たとえば、HTTP リクエストがアプリケーションに到達すると、次のデータが記録されます。

  • ホスト— ホスト名、エイリアス、または IP アドレス

  • リクエストは— メソッド、クライアントアドレス、パス、ユーザーエージェント

  • レスポンス— ステータス、コンテンツ

  • 行った作業— 開始時刻と終了時刻、サブセグメント

  • 発生する問題エラー、障害、例外、例外スタックの自動取得を含む。


        Scorekeep のセグメントデータ

X-Ray SDK は、リクエストおよびレスポンスのヘッダー、アプリケーションのコード、およびメタデータから情報を収集します。AWS実行されているリソース。収集するデータを選択するには、アプリケーション設定またはコードを変更して、受信リクエスト、ダウンストリームリクエストを計測するコードを変更します。AWSSDK クライアント。

転送されたリクエスト

ロードバランサまたは他の仲介者がアプリケーションにリクエストを転送する場合、X-Ray は、クライアントの IP をX-Forwarded-ForIP パケットの送信元 IP からではなく、リクエストのヘッダー。転送された要求に対して記録されたクライアント IP は偽造される可能性があるので、信頼されるべきではありません。

X-Ray SDK を使用して、次のような追加情報を記録できます。注釈とメタデータ。セグメントとサブセグメントで記録される構造と情報の詳細については、「AWS X-Ray セグメントドキュメント」を参照してください。セグメントのドキュメントのサイズは最大 64 kB まで可能です。

サブセグメント

セグメントでは、完了した作業に関するデータをサブセグメントに分けることができます。サブセグメントには、詳細なタイミング情報や、元のリクエストを満たすためにアプリケーションが実行したダウンストリーム呼び出しに関する詳細を含みます。サブセグメントには、AWS のサービス、外部 HTTP API、SQL データベースへの呼び出しに関する追加の詳細を含めることができます。アプリケーションのコードの特定の関数または行を計測する任意のサブセグメントを定義することもできます。


        サブセグメントに含まれる詳細情報

Amazon DynamoDB のような独自のセグメントを送信しないサービスでは、X-Ray はサブセグメントを使用して生成します。推測セグメントおよびサービスマップ上のダウンストリームノード。これにより、トレースをサポートしていない場合でも、外部の場合でも、すべてのダウンストリーム依存関係を表示することができます。

サブセグメントは、クライアントとしてのダウンストリーム呼び出しのアプリケーションビューを表します。ダウンストリームサービスも計測されている場合、送信するセグメントは、アップストリームクライアントのサブセグメントから生成された推測セグメントを置き換えます。利用可能であれば、サービスグラフのノードはサービスのセグメントからの情報を常に使用しますが、2 つのノード間のエッジはアップストリームサービスのサブセグメントを使用します。

たとえば、インストルメント付きで DynamoDB を呼び出す場合などです。AWSSDK クライアントの場合、X-Ray SDK はその呼び出しのサブセグメントを記録します。DynamoDB はセグメントを送信しないので、トレースの推測セグメント、サービスグラフの DynamoDB ノード、およびサービスと DynamoDB の間のエッジにはサブセグメントの情報が含まれます。


        実装されたアプリケーションと DynamoDB の間のエッジ。

実装されたアプリケーションを使用して実装された別のサービスを呼び出すと、ダウンストリームサービスは、サブセグメントに記録されたアップストリームサービスと同じ呼び出しのビューを記録するために、独自のセグメントを送信します。サービスグラフでは、両方のサービスのノードに、それらのサービスのセグメントからのタイミング情報とエラー情報が含まれています。その間には、アップストリームサービスのサブセグメントの情報が含まれています。


        他の計測アプリケーションを呼び出す計測アプリケーション。

ダウンストリームサービスは要求の処理を開始および終了した時点を正確に記録し、アップストリームサービスは要求が 2 つのサービス間を移動した時間を含めて往復遅延を記録するため、両方の視点が役立ちます。

サービスグラフ

X-Ray は、アプリケーションが送信したデータを使用して、サービスグラフ。EACHAWSX-Ray にデータを送信するリソースは、グラフのサービスとして表示されます。エッジは、リクエスト処理に一緒に使用するサービスに接続されています。エッジは、クライアントをアプリケーションに接続し、アプリケーションを、使用しているダウンストリームサービスおよびリソースに接続します。

サービス名

セグメントのnameは、セグメントを生成するサービスのドメイン名または論理名と一致する必要があります。ただし、これは強制されません。権限を持つアプリケーションPutTraceSegments任意の名前でセグメントを送信できます。

サービスグラフは、アプリケーションを構成するサービスおよびリソースに関する情報を含む JSON ドキュメントです。X-Ray コンソールでは、サービスグラフを使用して視覚化を生成またはサービスマップ


        サービスマップ

分散アプリケーションの場合、X-Ray は、同一のトレース ID を含むリクエストを処理するすべてのサービスのノードを、単一のサービスグラフに組み合わせます。リクエストがヒットする最初のサービスによって、フロントエンドと呼び出すサービスの間で伝達される「トレースヘッダー」が追加されます。

たとえば、Scorekeep は、マイクロサービス (AWS Lambda 関数) を呼び出し、Node.js ライブラリを使用してランダム名を生成するウェブ API を実行します。X-Ray SDK for Java は、トレース ID を生成し、Lambda の呼び出しにそれを含めます。Lambda はトレースデータを送信し、トレース ID を関数に渡します。また、X-Ray SDK は、トレース ID を使用してデータを送信します。Node.js その結果、API、Lambda サービス、および Lambda 関数のノードはすべて別々ですが、接続されたノードとしてサービスマップに表示されます。

サービスグラフのデータは 30 日間保持されます。

トレース

トレース ID はアプリケーションを経由するリクエストのパスを追跡します。トレースでは、1 つのリクエストで生成されたセグメントをすべて収集します。通常、このリクエストは HTTP GET または POST リクエストで、ロードバランサー間で移動し、アプリケーションコードにヒットして、other に対するダウンストリーム呼び出しを生成する HTTP GET または POST リクエストです。AWSサービスまたは外部ウェブ API。HTTP リクエストでやり取りされる最初にサポートされたサービスでは、トレース ID のヘッダーをリクエストに追加し、ダウンストリームに伝達して、レイテンシー、処理、その他のリクエストデータを追跡します。


        単一のリクエストによって生成されるすべてのセグメントを収集するトレースのタイムライン表示

サービスグラフのデータは 30 日間保持されます。

サンプリング

効率的にトレースを行ってアプリケーションが処理するリクエストの代表的なサンプルを提供するため、X-Ray SDK はサンプリングどのリクエストがトレースされるかを決定するアルゴリズム。デフォルトでは、X-Ray SDK は毎秒、最初のリクエストを記録します。また、追加リクエストの 5% を記録します。

開始時にサービス料がかからないように、デフォルトのサンプリングレートは控えめになっています。 デフォルトのサンプリングルールを変更するために X-Ray を設定し、サービスまたはリクエストのプロパティに基づいてサンプリングを適用する追加ルールを設定できます。

例えば、サンプリングを無効にして、状態を変更したり、ユーザーアカウントやトランザクションを処理したりする呼び出しのすべての要求をトレースすることができます。バックグラウンドポーリング、ヘルスチェック、接続保守などの大量の読み取り専用呼び出しでは、低いレートでサンプリングを行っても、問題が発生した場合にも十分なデータを得ることができます。

詳細については、「X-Ray コンソールでのサンプリングルールの設定」を参照してください。

トレースヘッダー

構成可能な最小値まではすべてのリクエストがトレースされます。その後はリクエストの一定の割合がトレースされ、不要なコストを避けます。サンプリングデシジョンおよびトレース ID は、の HTTP リクエストに追加されます。トレースヘッダー名前付きX-Amzn-Trace-Id。トレースヘッダーは、リクエストがヒットした最初の X-Ray 統合サービスによって追加されます。また、X-Ray SDK によって読み取られ、レスポンスに含まれます。

例 ルートトレース ID 突きのトレースヘッダーおよびサンプリングデシジョン

X-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Sampled=1
トレースヘッダーのセキュリティ

トレースヘッダーは X-Ray SDK から発信されます。AWSサービス、またはクライアント要求。アプリケーションで受信リクエストから X-Amzn-Trace-Id を削除し、ユーザーが自分のリクエストにトレース ID またはサンプリングデシジョンを追加することで発生する問題を回避できます。

計測対象アプリケーションからのリクエストの場合は、親セグメント ID をトレースヘッダーに含めることもできます。たとえば、アプリケーションで計測対象 HTTP クライアントを使用してダウンストリーム HTTP ウェブ API を呼び出す場合、X-Ray SDK は元のリクエストのセグメントの ID をダウンストリームリクエストのトレースヘッダーに追加します。ダウンストリームリクエストを処理する計測対象アプリケーションで、親セグメント ID を記録して 2 つのリクエストを接続できます。

例 ルートトレース ID、親セグメント ID およびサンプリングデシジョンを含むトレースヘッダー

X-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Parent=53995c3f42cd8ad8;Sampled=1

フィルタ式

サンプリングされている場合でも、複雑なアプリケーションでは大量のデータが生成されます。AWS X-Ray コンソールでは、操作が簡単なサービスグラフのビューを提供します。問題を識別しアプリケーションを最適化するために役立つ健全性とパフォーマンス情報が表示されます。高度なトレースでは、個別のリクエストのトレースを掘り下げたり、フィルタ式を使用して特定のパスまたはユーザーに関連するトレースを検索したりできます。


        個別のリクエストのトレースを掘り下げる

グループ

フィルタ式を拡張すると、X-Ray はグループ機能もサポートします。フィルタ式を使用すると、グループへのトレースを受け入れる基準を定義できます。

グループを名前別または Amazon リソースネーム (ARN) 別に呼び出すことで、独自のサービスグラフ、トレースサマリ、およびAmazon CloudWatchメトリクス。グループが作成されると、受信トレースは、グループのフィルタ式と照合されます。X-Rayサービスサービス。のメトリクス数字の場合は、各基準に一致するトレースが 1 分ごとに CloudWatch に発行されます。

グループのフィルタ式を更新しても、すでに記録されているデータは変わりません。更新は後続のトレースにのみ適用されます。これにより、新しい式と古い式がマージされたグラフが表示される場合があります。これを回避するには、現在のグループを削除し、新しいグループを作成します。

注記

グループは、フィルタ式と一致する取得済みのトレースの数で請求されます。詳細については、AWS X-Ray 料金表を参照してください。

グループの詳細については、「」を参照してください。X-Ray コンソールでのグループの設定

注釈とメタデータ

アプリケーションを計測すると、X-Ray SDK は、受信リクエストおよび発信リクエストに関する情報を記録します。AWS使用されるリソース、およびアプリケーション自体。その他の情報を注釈およびメタデータとして、セグメントドキュメントに追加することもできます。注釈とメタデータはトレースレベルで集約され、任意のセグメントまたはサブセグメントに追加できます。

注釈は、「フィルタ式」で使用するためにインデックス化されたシンプルなキーと値のペアです。注釈を使用して、コンソールでトレースをグループ化するため、または GetTraceSummariesAPI を呼び出すときに使用するデータを記録します。

X-Ray は、トレースごとに最大 50 の注釈をインデックスします。

メタデータは、オブジェクトとリストを含む、任意のタイプの値を持つことができるキーと値のペアですが、フィルタ式に使用するためにインデックスは作成されません。メタデータを使用してトレースに保存するデータを記録しますが、トレースの検索用に使用する必要はありません。

セグメントまたはサブセグメントの注釈およびメタデータは、X-Ray コンソールで詳細を表示できます。


        X-Ray コンソールのセグメントまたはサブセグメントの注釈およびメタデータは、X-Ray コンソールのセグメントまたはサブセグメントの詳細を表示できます。

エラー、障害、および例外

X-Ray は、アプリケーションコードで発生するエラーと、ダウンストリームサービスから返されるエラーをトレースします。エラーは次のように分類されます。

  • Error— クライアントエラー (400 系のエラー)

  • Fault— サーバー障害 (500 系のエラー)

  • Throttle— スロットリングエラー (429 リクエストが多すぎる)

アプリケーションが実装されたリクエストを処理しているときに例外が発生すると、X-Ray SDK はスタックトレースを含む例外に関する詳細を記録します (利用可能な場合)。例外は、「」で確認できます。セグメントの詳細X-Ray コンソールで