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