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

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

AWS X-Ray の概念

AWS X-Ray サービスからデータを受信 セグメント。 X-Ray 共通のリクエストを持つセグメントを トレース。 X-Ray トレースを処理して、 サービス グラフ アプリケーションの視覚的な表現を提供します。

Segments

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

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

  • 要求 – メソッド、クライアントアドレス、パス、ユーザーエージェント

  • 対応 – ステータス、コンテンツ

  • 完了した作業 – 開始および終了時間、サブセグメント

  • 発生した問題エラー、障害、例外例外スタックの自動キャプチャを含む。


        Scorekeep のセグメントデータ

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

転送されたリクエスト

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

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

Subsegments

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


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

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

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

たとえば、 DynamoDB インストゥルメントされたAWS SDKクライアント、 X-Ray SDK は、そのコールのサブセグメントを記録します。 DynamoDB はセグメントを送信しないため、トレース内の推論されたセグメント、 DynamoDB ノード、サービス グラフ上のエッジ、およびサービスと DynamoDB すべてサブセグメントからの情報を含みます。


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

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


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

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

サービスグラフ

X-Ray は、アプリケーションが送信するデータを使用して、 サービス グラフ. データを送信する各AWSリソース X-Ray グラフにサービスとして表示されます。エッジ 連携するサービスを連携させて、リクエストに対応します。エッジは、クライアントをアプリケーションに接続し、アプリケーションを、使用しているダウンストリームサービスおよびリソースに接続します。

サービス名

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

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


        サービスマップ

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

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


        API、Lambda サービス、Lambda 関数は別々だが、接続されたノードとして表示される

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

Traces

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


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

サービスグラフのデータは 用に保持されます。30 days.

Sampling

効率的な追跡を確保し、アプリケーションが処理するリクエストの代表サンプルを提供するには、 X-Ray SDKは サンプリング アルゴリズムを使用して、トレースするリクエストを決定します。デフォルトでは、 X-Ray SDKレコード 1 秒ごとに最初のリクエストと、追加リクエストの 5%.

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

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

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

トレースヘッダー

構成可能な最小値まではすべてのリクエストがトレースされます。その後はリクエストの一定の割合がトレースされ、不要なコストを避けます。サンプリング決定とトレース ID は、 トレースヘッダー 名前付き 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 コンソールは、サービス グラフのナビゲートしやすいビューを提供します。問題を識別しアプリケーションを最適化するために役立つ健全性とパフォーマンス情報が表示されます。高度なトレースでは、個々のリクエストのトレースにドリルダウンするか、 フィルター式フィルター: シキ 特定のパスまたはユーザーに関連するトレースを検索します。


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

Groups

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

名前またはAmazonリソース名(ARN)でグループを呼び出して、独自のサービスグラフ、トレースサマリー、および Amazon CloudWatch メトリック。グループが作成されると、入力トレースは、 X-Ray サービス。指標 番号の 各条件に一致するトレースの が次の場所に発行されます: CloudWatch 毎分。

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

注記

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

グループの詳細については、以下を参照してください。 でのグループの構成 X-Ray コンソール.

注釈とメタデータ

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

注釈 は、 フィルター式フィルター: シキ. 注釈を使用して、コンソールでトレースをグループ化するため、または GetTraceSummariesAPI を呼び出すときに使用するデータを記録します。

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

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

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


        セグメントまたはサブセグメントの注釈とメタデータは X-Ray コンソールで詳細を確認できる

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

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

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

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

  • Throttle – スロットリングエラー (429 Too Many Requests)

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