DVAトラブルシューティングと最適化
マイクロサービス群でAWS X-Rayによる分散トレーシングを本番運用しています。トラフィックが急増した結果、X-Rayへ送信されるトレース量が膨大になり、トレースの保存コストが想定を大きく超えました。重要なエラー系リクエストのトレースは確実に取得しつつ、正常系の大量トレースの記録量を抑えてコストを最適化したいです。コード変更を最小限にしてこれを実現する方法はどれですか。
AX-Rayのサンプリングルールを追加し、固定レート(reservoir)と割合(rate)を調整して記録するトレースの割合を制御する
✓ 正解
サンプリングルールは条件ごとにreservoir(毎秒固定数)とrate(超過分の割合)を設定でき、コード変更なしで正常系の記録量を抑えつつ重要なパスは高レートで確実に取得できる。X-Rayのコスト最適化の標準手段。
BX-Ray SDKでaddAnnotationを使い、エラー以外のセグメントにフィルタ用のアノテーションを付与して除外する
アノテーションはトレースのフィルタリングや検索に使うキー値であり、X-Rayへ送信・記録されるトレース量そのものを減らす機能ではない。コスト削減という要件には対応できない。
CCloudWatch Logs Insightsでトレースをクエリし、エラー以外のトレースを定期的に削除するLambdaを実装する
Logs InsightsはCloudWatch Logs用のクエリ機能でX-Rayトレースは対象外。削除Lambdaの実装は追加開発と運用負荷を伴い、そもそも取り込み時に発生するコストを削減できない。
DX-RayのトレースをすべてS3にエクスポートし、ライフサイクルポリシーで古いトレースを自動削除する
X-Rayにトレースを丸ごとS3へエクスポートする標準機能は存在せず、保存後に古いトレースを消してもトレース取り込み量に基づくコストは下がらない。要件を満たさない。
解説
X-Rayのサンプリングルールは、サービス名・HTTPメソッド・URLパスなどの条件ごとに、毎秒の固定取得数(reservoir)と超過分の割合(rate)を設定してトレースの記録量をコントロールできます。
ルールはコンソールやAPIで定義でき、アプリのコードを変更せずに正常系のサンプリング率を下げてコストを最適化できます。エラー系を確実に取得したい場合はエラー条件に合うパス等へ高いレートのルールを設定するなど、優先度付きルールで制御します。
選択肢Bのアノテーションはトレースをフィルタ/検索するための仕組みであり、トレースの記録(送信)量自体を削減するものではありません。
選択肢CのLogs Insightsはログ用クエリでX-Rayトレースの保存対象ではなく、削除Lambdaも追加実装と運用負荷が大きくなります。
選択肢DのトレースをS3にエクスポートする標準機能はなく、保存後の削除では送信・取り込み量に基づくコストは下がりません。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →