Amazon CloudWatch で構築する統合監視 - メトリクス、ログ、アラームの設計
メトリクス・ログ・アラームの 3 本柱で統合監視を構築する。Logs Insights の対話的分析、複合アラームによる高精度通知、Embedded Metric Format の活用を紹介します。
CloudWatch の概要と AWS 監視基盤
CloudWatch は AWS リソースとアプリケーションの監視・ログ管理・アラームを提供するフルマネージドサービスです。メトリクス (数値データ)、ログ (テキストデータ)、アラーム (閾値通知) の 3 つの柱で統合的な監視を実現します。EC2、Lambda、RDS、DynamoDB など 70 以上の AWS サービスからメトリクスを自動収集し、追加設定なしで基本的な監視を開始できます。オンプレミス環境では Zabbix や Nagios などの監視ツールを自前で構築・運用する必要がありましたが、CloudWatch はフルマネージドでインフラ管理が不要です。無料利用枠として基本メトリクスの収集と 10 件のアラームが提供されており、小規模環境であれば追加コストなしで監視を開始できます。
メトリクスとカスタムメトリクスの活用
AWS サービスは CPU 使用率、ネットワーク I/O、リクエスト数などの標準メトリクスを自動的に CloudWatch に送信します。カスタムメトリクスは PutMetricData API で送信し、ビジネスメトリクス (注文数/分、売上/時) を監視します。Embedded Metric Format (EMF) を使用すれば、ログ出力と同時にメトリクスを生成でき、Lambda 関数からのカスタムメトリクス送信が効率化されます。高解像度メトリクスでは 1 秒間隔でのデータ収集が可能で、レイテンシに敏感なワークロードの詳細な分析に対応します。メトリクスの保持期間は解像度に応じて最大 15 か月間で、長期的なトレンド分析にも活用できます。
アラームと異常検知
アラームは単一メトリクスの閾値超過で SNS 通知や Lambda 実行をトリガーします。静的閾値に加えて、異常検知 (Anomaly Detection) による動的閾値の設定が可能で、機械学習モデルがメトリクスの正常パターンを学習し逸脱を自動検知します。複合アラームは複数のアラームを AND/OR で組み合わせ、「CPU 使用率が高い AND メモリ使用率が高い」場合のみ通知するといった条件で誤報を削減します。アラーム発火時のアクションとして、SNS トピックへの通知、EC2 インスタンスの停止・再起動、Auto Scaling ポリシーの実行、Systems Manager Automation の起動を設定できます。SNS と連携することで、メール、SMS、Slack (AWS Chatbot 経由)、PagerDuty など複数のチャネルへ同時に通知を送信でき、オンコール体制との統合が容易です。これにより障害検知から初動対応までの時間を大幅に短縮できます。
Logs Insights と Contributor Insights
CloudWatch Logs Insights は対話的なログ分析クエリエンジンで、独自のクエリ言語でログデータを検索・集約します。fields、filter、stats、sort コマンドを組み合わせて、エラーログの集計、レイテンシの分布分析、特定パターンの検索を実行します。数十 GB のログデータからも数秒で結果を返す高速性が特長です。JSON 形式のログからフィールドを自動検出し、構造化データの集計やフィルタリングが容易に行えます。メトリクスフィルターを設定すれば、特定のログパターンの出現回数をメトリクスとして記録し、エラー率の急増をリアルタイムに検知できます。ログの保持期間は 1 日から無期限まで柔軟に設定可能です。Contributor Insights はログデータからトップ N の寄与者 (最もエラーが多い API、最もリクエストが多い IP アドレス) を自動的に特定するルールベースの分析機能です。Lambda Insights はサーバーレス関数のパフォーマンスメトリクス (コールドスタート、メモリ使用率、実行時間) を自動収集します。 監視の運用ノウハウを深めるには、専門書籍 (Amazon)が役立ちます。
CloudWatch の料金最適化
CloudWatch の主要なコスト要因はカスタムメトリクス (月額 0.30 ドル/メトリクス)、ログの取り込み (1 GB あたり約 0.50 ドル)、ログの保存 (1 GB あたり月額約 0.03 ドル) です。EC2 や RDS の基本メトリクスは無料で収集されます。メトリクスの解像度を標準 (60 秒) と高解像度 (1 秒) で使い分け、高解像度が必要なメトリクスを限定します。ログの保持期間をロググループごとに設定し、デバッグログは 7 日、監査ログは 1 年といった差別化でストレージコストを削減します。Embedded Metric Format でアプリケーションログからメトリクスを自動抽出し、PutMetricData API コールのコストを削減します。ダッシュボードの GetMetricData API 呼び出しもコスト要因となるため、ウィジェット数は必要なメトリクスに限定します。不要なメトリクスフィルターやアラームを定期的に棚卸しすることも重要です。
まとめ
CloudWatch は 70 以上の AWS サービスとネイティブ統合したフルマネージドの監視基盤です。Logs Insights で対話的なログ分析を実行し、異常検知と複合アラームで高精度な通知を実現します。SNS 連携による多チャネル通知と Systems Manager 統合による自動復旧で、運用の自動化レベルを引き上げます。Embedded Metric Format と Contributor Insights でアプリケーション固有の指標も柔軟に取り込めます。