メインコンテンツまでスキップ

AWS X-Ray

サンプリングルール

X-Ray を使用したサンプリングルールは、AWS コンソール、ローカル設定ファイル、またはその両方で設定できます。 ローカル設定は、コンソールで設定されたものよりも優先されます。

備考

可能な限り、X-Ray コンソール、API、または CloudFormation を使用してください。 これにより、実行時にアプリケーションのサンプリング動作を変更できます。

以下の各基準に対して、個別にサンプルレートを設定できます:

  • サービス名(e.g. billing、payments)
  • サービスタイプ(e.g. EC2、Container)
  • HTTP メソッド
  • URL パス
  • リソース ARN
  • ホスト (e.g. www.example.com)

ベストプラクティスは、問題の診断とパフォーマンスプロファイルを理解するのに十分なデータを収集しつつ、管理が困難になるほど多くのデータを収集しないようなサンプルレートを設定することです。 例えば、ランディングページのトラフィックの 1% をサンプリングし、決済ページへのリクエストの 10% をサンプリングすることは、効果的なオブザーバビリティの実践に適しています。

一部のトランザクションは 100% キャプチャしたい場合もあるでしょう。 ただし、トレースはワークロードへのアクセスのフォレンシック監査を目的としていないため、注意が必要です!

警告

トレースは監査やフォレンシック分析での使用を意図していないため、100% のサンプルレートは避けてください。 これにより、X-Ray(デフォルトで UDP エミッターを使用)がトランザクショントレースを決して失わないという誤った期待を生む可能性があります。

原則として、トランザクショントレースの取得が、スタッフや AWS の請求に過度な負担をかけることは避けるべきです。 ワークロードが出力するデータ量を学習しながら、環境にトレースを少しずつ追加していきます。

備考

デフォルトでは、X-Ray SDK は毎秒最初のリクエストと、追加リクエストの 5% を記録します。 常に許容できるリザーバサイズを設定してください。 リザーバサイズは、1 秒あたりにキャプチャする最大リクエスト数を決定します。 これにより、悪意のある攻撃、不要な料金、設定エラーから保護されます。

デーモンの設定

X-Ray デーモンは、分析のために X-Ray データプレーンにテレメトリを送信する負荷を軽減することを目的としています。 そのため、ソースアプリケーションが実行されているサーバー、コンテナ、またはインスタンスのリソースを過度に消費しないようにする必要があります。

備考

ベストプラクティスは、X-Ray デーモンを別のインスタンスまたはコンテナで実行することです。 これにより、関心の分離を実現し、ソースシステムへの負荷を軽減できます。

備考

Kubernetes などのコンテナオーケストレーションパターンでは、X-Ray デーモンをサイドカーとして運用することが一般的な方法です。

デーモンには安全なデフォルト設定があり、ほとんどの場合、EC2、ECS、EKS、または Fargate 環境で追加の設定なしで動作します。 ただし、ハイブリッド環境やその他のクラウド環境では、Direct Connect や VPN を使用してリモート環境を統合する場合、VPC エンドポイントを反映するように Endpoint を調整することをお勧めします。

ヒント

X-Ray デーモンをソースアプリケーションと同じインスタンスまたは仮想マシンで実行する必要がある場合は、TotalBufferSizeMB 設定を使用して、X-Ray が許容できる以上のシステムリソースを消費しないようにすることを検討してください。

アノテーション

AWS X-Ray では、トレースと一緒に任意のメタデータを送信することができます。これを アノテーション と呼びます。 アノテーションは、トレースを論理的にグループ化できる強力な機能です。 また、アノテーションはインデックス化されるため、単一のエンティティに関連するトレースを簡単に見つけることができます。

X-Ray の自動計測 SDK を使用する場合、アノテーションは自動的には表示されない場合があります。 コードにアノテーションを追加する必要がありますが、これによってトレースが大幅に強化され、X-Ray Insights の生成、アノテーションに基づくメトリクスの作成、システム動作からのアラームと異常検知モデルの作成、そしてユーザーに影響を与えるコンポーネントが観察された際の自動チケット発行と修復が可能になります。

備考

環境内のデータフローを理解するためにアノテーションを使用してください。

備考

アノテーション付きトレースのパフォーマンスと結果に基づいてアラームを作成してください。