Amazon CloudWatch
AWS リソースとアプリケーションのメトリクス、ログ、イベントを統合的に監視・分析するフルマネージドなモニタリングサービス
概要
Amazon CloudWatch は、AWS リソースとアプリケーションのパフォーマンスと運用状態をリアルタイムで監視するモニタリングサービスです。EC2 の CPU 使用率、RDS のデータベース接続数、Lambda の実行時間、ALB のリクエスト数など、AWS サービスのメトリクスを自動的に収集します。CloudWatch Logs でアプリケーションログやシステムログを集約・検索・分析し、CloudWatch Alarms でメトリクスの閾値超過時に SNS 通知や Auto Scaling アクションをトリガーできます。CloudWatch Dashboards でカスタムダッシュボードを作成し、運用状況を一目で把握できます。CloudWatch Logs Insights は SQL ライクなクエリ言語でログデータを高速に分析でき、障害調査やパフォーマンス分析に活用できます。カスタムメトリクスを使えば、アプリケーション固有の指標 (注文数、エラー率など) も CloudWatch で統合管理できます。
アラームの設計と Composite Alarms
CloudWatch Alarms はメトリクスが閾値を超えた場合にアクションを実行する仕組みで、OK、ALARM、INSUFFICIENT_DATA の 3 状態を遷移します。状態変化時に SNS 通知、Auto Scaling ポリシーの実行、EC2 インスタンスの停止/再起動、Systems Manager OpsItem の作成などをトリガーできます。単一メトリクスのアラームだけでは誤報が多くなりがちですが、Composite Alarms を使えば複数のアラームを AND/OR/NOT で組み合わせた複合条件を定義でき、たとえば「CPU 使用率が高い AND メモリ使用率も高い」場合にのみ通知するといった高精度なアラートが実現します。Anomaly Detection 機能は機械学習でメトリクスの正常範囲を自動学習し、固定閾値では検出が難しい季節変動やトレンドの変化に対応した異常検知を提供します。
Logs Insights によるログ分析
CloudWatch Logs はアプリケーションログ、システムログ、AWS サービスのログを集約する基盤で、Logs Insights を使えば SQL ライクなクエリ言語で高速に分析できます。たとえば直近 1 時間のエラーログを集計したり、レイテンシの P99 を算出したり、特定のリクエスト ID に関連するログを横断検索したりといった操作が数秒で完了します。メトリクスフィルターを設定すれば、ログ内の特定パターン (ERROR、TIMEOUT など) の出現回数をカスタムメトリクスとして自動抽出し、アラームと連携させることも可能です。Azure Monitor の Log Analytics は Kusto Query Language (KQL) を使用しており、より高度な結合クエリや時系列分析が可能ですが、Logs Insights は AWS サービスとの統合がシームレスで、セットアップの手間が少ない点が強みです。監視運用の技術書 (Amazon) では、ログ分析の実践パターンが詳しく解説されています。
ダッシュボード設計と 3 層メトリクス戦略
CloudWatch の監視設計では、ビジネスメトリクス、アプリケーションメトリクス、インフラメトリクスの 3 層で構成するのが効果的です。ビジネス層ではカスタムメトリクスで注文数、売上、エラー率などの事業指標を追跡します。アプリケーション層では Lambda の実行時間、API Gateway のレイテンシ、DynamoDB のスロットリング回数などを監視します。インフラ層では EC2 の CPU/メモリ、RDS の接続数、EBS の IOPS などを追跡します。ダッシュボードは運用チーム向け (詳細なメトリクスとアラーム状態) と経営層向け (ビジネス KPI のサマリー) で分離し、それぞれに適した粒度の情報を表示します。Container Insights を有効にすれば ECS/EKS のコンテナレベルのメトリクスが自動収集され、ポッドやタスクごとのリソース使用率を可視化できます。メトリクスの解像度は標準で 1 分間隔ですが、高解像度メトリクスを使えば 1 秒間隔での監視も可能です。