X-Ray コンソールでのサンプリングルールの設定 - AWS X-Ray

X-Ray コンソールでのサンプリングルールの設定

AWS X-Ray コンソールを使用して、使用するサービスのサンプリングルールを設定できます。サンプリング設定をもとにアクティブトレースをサポートする X-Ray SDK と AWS サービスは、サンプリングルールを使用して、記録する対象リクエストを決定します。

サンプリングルールの設定

以下のユースケースのサンプリングを設定できます。

  • API Gateway エントリポイント – API Gateway はサンプリングとアクティブなトレースをサポートします。API ステージでアクティブトレースを有効にする方法については、「AWS X-Ray の Amazon API Gateway アクティブトレースサポート」を参照してください。

  • AWS AppSync – AWS AppSync はサンプリングとアクティブなトレースをサポートします。AWS AppSync リクエストでアクティブなトレースを有効にする方法については、「AWS X-Ray によるトレース」を参照してください。

  • コンピューティングプラットフォームでの X-Ray SDK の実装 – Amazon EC2、Amazon ECS、または AWS Elastic Beanstalk などのコンピューティングプラットフォームを使用する場合、アプリケーションに最新の X-Ray SDK が実装されていれば、サンプリングがサポートされます。

サンプリングルールのカスタマイズ

サンプリングルールをカスタマイズすることで、コードを変更または再デプロイすることなく、その場で、記録するレコードの量を制御したり、サンプリング動作を変更したりできます。サンプリングルールにより、X-Ray SDK に一連の基準に対して記録するリクエスト数を指示します。デフォルトでは、X-Ray SDK は 1 秒ごとに最初のリクエストと、追加リクエストの 5% を記録します。1 秒あたり 1 つのリクエストがリザーバです。これにより、サービスがリクエストを処理している限り、毎秒少なくとも 1 つのトレースが記録されます。5% は、リザーバサイズを超えて追加リクエストがサンプリングされるレートです。

X-Ray SDK を設定して、使用するコードに含める JSON ドキュメントからサンプリングルールを読み取ることができます。ただし、サービスで複数のインスタンスを実行するときに、各インスタンスは個別にサンプリングを実行します。これによりサンプリングされたリクエストの全体的な割合 (パーセント) が増加します。すべてのインスタンスのリザーバが実質的に結合されるからです。さらに、ローカルサンプリングルールを更新するために、コードを再デプロイする必要があります。

X-Ray コンソールでサンプリングルールを定義し、SDK を設定して X-Ray サービスからルールを読み取ることで、これら両方の問題を回避できます。このサービスでは、各ルールのリザーバを管理し、実行されているインスタンスの数に基づいて、リザーバを均等に分散させるため、使用するサービスの各インスタンスにクォータを割り当てます。リザーバの制限は、設定したルールに従って計算されます。また、サービスでルールが設定されているので、追加のデプロイを行わずにルールを管理できます。

X-Ray コンソールでのサンプリングルールを設定するには

  1. X-Ray コンソールを開きます。

  2. [サンプリング] を選択します。

  3. ルールを作成するには、[サンプリングルールの作成] を選択します。

    ルールを編集するには、ルールの名前を選択します。

    ルールを削除するには、ルールを選択し、[アクション] メニューを使用して削除します。

サンプリングルールオプション

次のオプションが各ルールで利用できます。文字列値では、ワイルドカードを使用して、1 つの文字列 (?) またはゼロ以上の文字 (*) に一致させることができます。

サンプリングルールオプション

  • [ルール名] (文字列) – ルールの一意の名前。

  • [優先度] (1 ~ 9999 の整数) – サンプリングルールの優先度。サービスでは、優先度の昇順でルールが評価され、一致する最初のルールを使用してサンプリングの決定が行われます。

  • [リザーバ] (負ではない整数) – 固定レートを適用する前に、1 秒あたりに計測する、一致するリクエストの固定数。リザーバはサービスで直接使用されませんが、ルールを一括して使用するすべてのサービスに適用されます。

  • [レート] (0 ~ 100) – リザーバを使い果した後で計測する、一致するリクエストの割合。レートは整数または浮動小数点数になります。

  • サービス名 (文字列) – サービスマップに表示される、計測されたサービスの名前。

    • X-Ray SDK – レコーダーで設定したサービス名。

    • Amazon API Gateway – api-name/stage

  • サービスタイプ (文字列) – サービスマップに表示される、サービスタイプ。X-Ray SDK の場合、適切なプラグインを適用することで、サービスタイプを設定します。

    • AWS::ElasticBeanstalk::Environment – AWS Elastic Beanstalk 環境 (プラグイン)。

    • AWS::EC2::Instance – Amazon EC2 インスタンス (プラグイン)。

    • AWS::ECS::Container – Amazon ECS コンテナ (プラグイン)。

    • AWS::APIGateway::Stage – Amazon API Gateway ステージ。

    • AWS::AppSync::GraphQLAPI – AWS AppSync API リクエスト。

  • [ホスト] (文字列) – HTTP ホストヘッダーからのホスト名。

  • HTTP メソッド (文字列) – HTTP リクエストのメソッド。

  • URL パス (文字列) – リクエストの URL パス。

    • X-Ray SDK – HTTP リクエスト URL のパス部分。

    • Amazon API Gateway – サポート対象外。

  • リソース ARN (文字列) – サービスを実行している AWS リソースの ARN。

    • X-Ray SDK – サポート対象外。SDK では [リソース ARN] に * が設定されているルールのみを使用できます。

    • Amazon API Gateway – ステージ ARN。

  • (オプション) 属性 (キーと値) – サンプリングデシジョンが行われたときに認識されるセグメント属性。

    • X-Ray SDK – サポート対象外。SDK は属性を指定するルールを無視します。

    • Amazon API Gateway – 元の HTTP リクエストのヘッダー。

サンプリングルールの例

例 – リザーバなし、低レートのデフォルトルール

デフォルトルールのリザーバとレートを変更することができます。他のルールに一致しないリクエストにデフォルトのルールが適用されます。

  • リザーバ0

  • レート0.005 (0.5%)

例 – 問題のあるルートのすべてのリクエストをトレースするデバッグルール

デバッグ用に一時的に適用される、高優先度のルールです。

  • ルール名DEBUG – history updates

  • 優先度1

  • リザーバ1

  • レート1

  • サービス名Scorekeep

  • サービスタイプ*

  • ホスト*

  • HTTP メソッドPUT

  • URL パス/history/*

  • リソース ARN*

例 – POST 用の最小レートが高い

  • ルール名POST minimum

  • 優先度100

  • リザーバ10

  • レート0.10

  • サービス名*

  • サービスタイプ*

  • ホスト*

  • HTTP メソッドPOST

  • URL パス*

  • リソース ARN*

サンプリングルールを使用するようにサービスを設定する

X-Ray SDK ではコンソールで設定したサンプリングルールを使用するため追加の設定が必要です。サンプリング戦略を設定する方法の詳細については、使用言語の「設定」トピックを参照してください。

API Gateway については、「AWS X-Ray の Amazon API Gateway アクティブトレースサポート」を参照してください。

サンプリング結果の表示

X-Ray コンソールの [サンプリング] ページには、サービスでの各サンプリングルールの使用方法に関する詳細情報が表示されます。

[Trend (トレンド)] 列には、直近の数分でルールがどのように使用されたのかを表示します。各列に、10 秒ウィンドウの統計が表示されます。

サンプリング統計

  • Total matched rule (ルールに一致した総数) – 対象ルールに一致するリクエストの数。この数には、対象ルールに一致する可能性があるすべてのリクエストが含まれるわけではありません。優先度の高いルールに最初に一致したリクエストのみが含まれます。

  • Total sampled (サンプリングされた総数) – 記録されたリクエスト数。

  • Sampled with fixed rate (サンプリングの固定レート) – ルールの固定レートを適用してサンプリングされたリクエスト数。

  • Sampled with reservoir limit (サンプリングのリザーバ制限) – X-Ray によって割り当てられたクォータを使用してサンプリングされたリクエスト数。

  • Borrowed from reservoir (リザーバから借用) – リザーバからの借用によって、サンプリングされたリクエスト数。サービスで初めてリクエストがルールに一致するとき、X-Ray によりクォータがまだ割り当てられていません。ただし、リザーバが少なくとも 1 である場合、X-Ray がクォータを割り当てるまで、サービスは 1 秒あたり 1 つのトレースを借用します。

サンプリングの統計およびサービスがサンプリングルールを使用する方法の詳細については、「X-Ray API でのサンプリングルールの使用」を参照してください。

次のステップ

X-Ray API アクションを使用して、サンプリングルールを管理できます。API では、スケジュールに従って、またはアラームや通知に応答して、プログラムでルールを作成および更新することができます。手順と追加のルールの例については、「AWS X-Ray API を使用したサンプリング、グループ、暗号化設定の構成」を参照してください。

X-Ray SDK と AWS サービスは X-Ray API も使用して、サンプリングルールを読み取り、サンプリング結果をレポートし、サンプリングターゲットを取得できます。X-Ray がサービスにクォータを割り当てていないルールにリクエストが一致するとき、サービスは、各ルールの適用、優先度に基づくルールの評価、およびリザーバからの借用に関する頻度を追跡する必要があります。サービスがサンプリングに API を使用する方法の詳細については、「X-Ray API でのサンプリングルールの使用」を参照してください。

X-Ray SDK がサンプリング API を呼び出すと、プロキシとして X-Ray デーモンを使用します。TCP ポート 2000 をすでに使用している場合、別のポートでプロキシを実行するようにデーモンを設定できます。詳細については、「AWS X-Ray デーモンを設定する」を参照してください。