マイクロサービスアーキテクチャで、複数のLambda関数とECSサービス間のリクエストフローをトレースしてパフォーマンスボトルネックを特定したい。また、エラーが多発するパスのサンプリング率を高く保ちながら正常系のサンプリングを低く抑えてコストを最適化したい。最適なAWSサービスの組み合わせはどれですか?
分散トレーシングにはAWS X-Rayが最適です。X-Rayのサンプリング決定はリクエスト受信時に確定するため、エラーレスポンスを事後的に判断してサンプリングを変更することはできません。代わりに、全体のfixed_rateを低く設定しコストを抑えつつ、エラーが頻発するURLパスに専用ルールでreservoirサイズを大きく設定することで、問題箇所のトレース取得率を高めボトルネック特定精度を維持できます。 選択肢AのCloudWatch Logsはログ集約サービスであり、分散トレーシングには対応していません。 選択肢CのAWS CloudTrailはAWS APIコール監査用であり、アプリケーション内のリクエストフロートレース用途ではありません。 選択肢DのAmazon Managed Service for Prometheus(AMP)はPrometheusメトリクスの収集・保存に特化したサービスであり、分散トレーシングには対応していません。GrafanaはメトリクスやログのGUI可視化ツールであり、AMPと組み合わせてもマイクロサービス間のリクエストフロートレーシングはできません。