SOAモニタリング、ロギング、分析、修復、およびパフォーマンスの最適化
Webアプリケーションのログが複数のロググループ(/app/frontend、/app/backend、/app/database)に分散格納されています。先週1週間のエラーログのうち、最も頻繁に出現したエラーメッセージ上位5件を単一の操作で集計したいと考えています。追加インフラを構築せず、最もすばやく実現できるアプローチはどれですか?
AAWS Glueで3つのロググループのデータをS3にエクスポートし、Amazon Athenaで集計SQLクエリを実行する
Glueのジョブ設定・S3バケットへのエクスポート・Athenaの外部テーブル定義と集計クエリ作成など、複数のステップと追加インフラの設定が必要です。即時性に欠け「追加インフラを構築せず、最もすばやく実現する」という要件に適していません。
BCloudWatch Logs Insightsで複数ロググループを対象として選択し、filter・stats・sort・limitコマンドを組み合わせたクエリを実行する
✓ 正解
CloudWatch Logs Insightsは複数のロググループを同時クエリ対象に指定できます。filter・stats・sort・limitコマンドを組み合わせることで、追加インフラなしにコンソールから即座にエラーメッセージの上位5件を集計できます。
C各ロググループにサブスクリプションフィルターを設定してエラーログをKinesis Data Streamsに集約し、Lambdaで集計処理を行う
Kinesis Data Streamsへのサブスクリプションフィルター設定・ストリームの作成・Lambdaの集計ロジック実装など、追加インフラの構築と継続的な維持が必要です。「追加インフラを構築せず」という要件に反するため、この方法は適していません。
D各ロググループにメトリクスフィルターを設定してERRORカウントメトリクスを作成し、CloudWatchダッシュボードで可視化する
メトリクスフィルターはERRORの発生件数カウントには使えますが、エラーメッセージの内容別に上位N件を抽出・ランキングする機能はありません。ダッシュボードも集計クエリの即時実行ではなく、メトリクスの継続的な可視化に特化しています。
解説
CloudWatch Logs Insightsは複数のロググループを同時クエリ対象に指定できます。「filter @message like /ERROR/ | stats count(*) as cnt by @message | sort cnt desc | limit 5」のようなクエリで、追加インフラなしに即座にアドホック(特定目的の)分析が可能です。
選択肢AのGlueやAthenaはS3へのエクスポートジョブや外部テーブル定義など設定コストが高く即時性に欠けます。
選択肢CのKinesisサブスクリプションフィルター+Lambdaは追加インフラの構築・維持が必要であり「追加インフラを構築せず」という要件に反します。
選択肢Dのメトリクスフィルターはカウント集計はできますが、メッセージ内容別の上位N件取得には不向きです。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでSOAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →