DOPモニタリングとロギング
あるSaaS企業では、EC2上のアプリケーションがJSON構造化ログをCloudWatch Logsに出力しています。運用チームは、特定の決済エラーコード(ERR_PAYMENT_DECLINED)の発生件数が5分間で50件を超えた場合に、可能な限りリアルタイムでSREチームへ通知したいと考えています。ログ量は日々増加しており、通知の遅延とコスト増を最小限に抑えつつ、追加のコンピューティングリソースの運用は避けたい要件があります。この要件を満たす最も適切な方法はどれですか。
AAmazon Data FirehoseへのサブスクリプションフィルターでログをS3へ継続配信し、Amazon Athenaで5分ごとに対象エラーコードをクエリ集計してしきい値超過をAmazon SNSで通知する
Amazon Data Firehose と Athena を用いる方式はログを一旦S3へ配信してからクエリするバッチ処理となり、5分ごとのAthenaスキャンコストと集計遅延が生じるため、リアルタイム性とコスト最小化の要件に反する。
BCloudWatch Logsのメトリクスフィルターで対象エラーコードのパターンを抽出してカスタムメトリクスに変換し、そのメトリクスにCloudWatchアラームを設定してAmazon SNSで通知する
✓ 正解
ログ取り込み時にメトリクスフィルターがパターン一致件数をカスタムメトリクスへ変換し、CloudWatchアラームでしきい値監視できる。サーバーレスで追加リソースの運用が不要、低遅延・低コストで要件を満たす最適解となる。
CEventBridgeのスケジュールルールで5分ごとにLambda関数を起動し、CloudWatch Logs Insightsのクエリでエラー件数を集計してしきい値を判定し通知する
EventBridgeとLambdaでLogs Insightsクエリを定期実行する構成は動作するが、Lambda関数の運用とクエリ実行コストが発生し、5分間隔のポーリングによる遅延も生じるため、追加リソース回避と低遅延の要件に劣る。
DCloudWatch Contributor Insightsのルールを作成し、エラーコード別の発生頻度ランキングを継続的に可視化してダッシュボードとアラームで監視する
Contributor Insightsは高カーディナリティなディメンションの上位N項目ランキングを可視化する機能が主目的であり、特定エラーコードの件数がしきい値を超えたことを検知する用途には設計が合致しない。
解説
CloudWatch Logs のメトリクスフィルターは、ログイベントが取り込まれる際にパターンマッチングを行い、一致件数をカスタムメトリクスとして発行できる。追加のコンピューティングを運用せずにログ→メトリクス変換が完結し、そのメトリクスに CloudWatch アラームを設定すれば、5分間の合計がしきい値を超えた時点で SNS 通知できる。サーバーレスかつ低遅延・低コストで要件に最適。
選択肢Aの Amazon Data Firehose と Athena は、S3 配信とクエリ集計のバッチ処理となり、定期クエリの遅延とスキャンコストが発生する。
選択肢Cの EventBridge と Lambda + Logs Insights は動作するが、Lambda の運用とクエリ実行コストが発生し、リアルタイム性でもメトリクスフィルターに劣る。
選択肢Dの Contributor Insights は上位N項目のランキング可視化が主目的で、特定エラーコードの件数しきい値監視には最適ではない。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDOPを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →