AWS X-Ray
サンプリングルール
X-Ray を使用したサンプリングルールは、AWS コンソール、ローカル設定ファイル、またはその両方で設定できます。ローカル設定は、コンソールで設定されたものを上書きします。
可能な限り、X-Ray コンソール、API、または CloudFormation を使 用してください。これにより、実行時にアプリケーションのサンプリング動作を変更できます。
これらの各基準に対して、個別にサンプルレートを設定できます。
- サービス名 (例: billing、payments)
- サービスタイプ (例: EC2、Container)
- HTTP メソッド
- URL パス
- リソース ARN
- ホスト (例: www.example.com)
ベストプラクティスは、問題を診断しパフォーマンスプロファイルを理解するのに十分なデータを収集しつつ、管理不能になるほど多くのデータを収集しないサンプルレートを設定することです。たとえば、ランディングページへのトラフィックの 1% をサンプリングし、支払いページへのリクエストの 10% をサンプリングすることは、強力なオブザーバビリティプラクティスとよく一致します。
一部のトランザクションについては、100% をキャプチャすることをお勧めします。ただし、トレースはワークロードへのアクセスのフォレンジック監査を目的としたものではないため、注意が必要です。
トレースは監査やフォレンジック分析に使用することを意図していないため、100% のサンプリングレート は避けてください。これにより、X-Ray(デフォルトでは UDP エミッターを使用)がトランザクショントレースを決して失わないという誤った期待を抱かせる可能性があります。
原則として、トランザクショントレースのキャプチャは、スタッフや AWS の請求に過度な負荷をかけるべきではありません。ワークロードが発行するデータ量を把握しながら、環境にトレースをゆっくりと追加してください。
デフォルトでは、X-Ray SDK は毎秒最初のリクエストと、追加リクエストの 5 パーセントを記録します。 常に許容できるリザーバーサイズを設定してください。リザーバーサイズは、1 秒あたりにキャプチャするリクエストの最大数を決定します。これにより、悪意のある攻撃、不要な料金、設定エラーから保護されます。
Daemon の設定
X-Ray デーモンは、分析のために X-Ray データプレーンにテレメトリを送信する作業をオフロードすることを目的としています。そのため、ソースアプリケーションが実行されるサーバー、コンテナ、またはインスタンス上で過度にリソースを消費し ないようにする必要があります。
ベストプラクティスは、X-Ray デーモンを別のインスタンスまたはコンテナで実行することです。これにより、関心の分離が強制され、ソースシステムの負担を軽減できます。
Kubernetes などのコンテナオーケストレーションパターンでは、X-Ray デーモンをサイドカーとして運用することが一般的な方法です。
このデーモンは安全なデフォルト設定を持ち、ほとんどの場合、EC2、ECS、EKS、または Fargate 環境で追加の設定なしで動作できます。ただし、ハイブリッド環境や他のクラウド環境では、調整が必要になる場合があります。 Endpoint Direct Connect または VPN を使用してリモート環境を統合している場合は、VPC エンドポイントを反映します。
X-Ray デーモンをソースアプリケーションと同じインスタンスまたは仮想マシンで実行する必要がある場合は、 TotalBufferSizeMB X-Ray がシステムリソースを過剰に消費しないようにするための設定です。
アノテーション
AWS X-Ray は、トレースと共に任意のメタデータを送信することをサポートしています。これらはアノテーションと呼ばれます。アノテーションは、トレースを論理的にグループ化できる強力な機能です。アノテーションはインデックス化されるため、単一のエンティティに関連するトレースを簡単に見つけることができます。
X-Ray の自動計装 SDK を使用する場合、アノテーションは自動的に表示されない場合があります。コードにアノテーションを追加する必要があります。これにより、トレースが大幅に充実し、X-Ray Insights の生成、アノテーションに基づくメトリクス、 アラーム、システム動作からの異常検知モデルの作成、ユーザーに影響を与えるコンポーネントが観察された際のチケット発行と修復の自動化が可能になります。
アノテーションを使用して、環境内のデータフローを理解します。
アノテーション付きトレースのパフォーマンスと結果に基づいてアラームを作成します。