AWS X-Ray
サンプリングルール
X-Ray を使用したサンプリングルールは、AWS コンソール、ローカル設定ファイル、またはその両方で設定できます。ローカル設定は、コンソールで設定されたものよりも優先されます。
可能な限り、X-Ray コンソール、API、または CloudFormation を使用してください。これにより、アプリケーションのサンプリング動作を実行時に変更できます。
以下の各基準に対して、個別にサンプルレートを設定できます:
- Service name (e.g. billing, payments)
- Service type (e.g. EC2, Container)
- HTTP method
- URL path
- Resource ARN
- Host (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 を使用してリモート環境を統合している場合、Endpoint
を VPC エンドポイント に反映するように調整することをお勧めします。
X-Ray デーモンをソースアプリケーションと同じインスタンスまたは仮想マシンで実行する必要がある場合は、TotalBufferSizeMB
設定を設定して、X-Ray が許容できる以上のシステムリソースを消費しないようにすることを検討してください。
アノテーション
AWS X-Ray は、トレースと一緒に任意のメタデータを送信することをサポートしています。これらは アノテーション と呼ばれます。アノテーションは強力な機能で、トレースを論理的にグループ化することができます。また、インデックス化されているため、特定のエンティティに関連するトレースを簡単に見つけることができます。
X-Ray の自動計装 SDK を使用する場合、アノテーションは自動的には表示されない場合があります。コードに追加する必要がありますが、これによってトレースが大幅に強化され、X-Ray Insights の生成、アノテーションに基づくメトリクスの作成、システム動作からのアラームや異常検出モデルの設定、ユーザーに影響を与えるコンポーネントが観察された際のチケット発行や修復の自動化などが可能になります。
アノテーションを使用して、環境内のデータフローを理解します。
アノテーション付きトレースのパフォーマンスと結果に基づいてアラームを作成します。