Amazon CloudWatch のアイコン

Amazon CloudWatch

AWS リソースとアプリケーションの監視・ログ管理・アラームを提供するサービス

何ができるか

Amazon CloudWatch は、AWS リソースやアプリケーションのメトリクス (数値データ)、ログ、イベントを収集・可視化・監視するサービスです。CPU 使用率やメモリ使用量などのメトリクスをリアルタイムでダッシュボードに表示し、閾値を超えた場合にアラームで通知します。ログの集約・検索・分析機能も備えており、AWS 環境の運用監視を一元的に行えます。

どのような場面で使うか

EC2 インスタンスの CPU 使用率が 80% を超えたら Auto Scaling でスケールアウトする、Lambda 関数のエラー率が急増したら Slack に通知する、アプリケーションログから特定のエラーパターンを検索するなど、運用監視のあらゆる場面で利用されています。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。

身近な例え

車のダッシュボードに例えるとわかりやすいでしょう。ダッシュボードには速度計、燃料計、エンジン回転数、水温計などの計器が並んでおり、車の状態をリアルタイムで確認できます。異常があれば警告灯が点灯します。CloudWatch は AWS 環境のダッシュボードで、各サービスの状態を監視し、問題があればアラームで知らせてくれます。

CloudWatch とは

Amazon CloudWatch は、AWS の運用監視の中核を担うサービスです。EC2、Lambda、RDS、S3 など、ほぼすべての AWS サービスが自動的に CloudWatch にメトリクスを送信します。これらのメトリクスをグラフで可視化したり、閾値を設定してアラームを発報したり、ログを集約して検索・分析したりできます。AWS 環境を安定して運用するための必須サービスです。

メトリクスとアラーム

メトリクスは、AWS リソースの状態を表す時系列の数値データです。たとえば、EC2 の CPUUtilization (CPU 使用率) や Lambda の Errors (エラー数) などがあります。アラームはメトリクスに閾値を設定し、条件を満たしたときにアクション (SNS 通知、Auto Scaling、Lambda 実行など) をトリガーします。たとえば「CPU 使用率が 5 分間連続で 80% を超えたら通知」のような設定が可能です。

CloudWatch Logs

CloudWatch Logs は、アプリケーションログやシステムログを集約・保存・検索するサービスです。Lambda 関数の実行ログは自動的に CloudWatch Logs に送信されます。EC2 インスタンスのログは CloudWatch Agent をインストールして送信します。Logs Insights 機能を使えば、SQL に似たクエリ言語でログを高速に検索・分析できます。たとえば「過去 1 時間のエラーログを発生頻度順に表示」といった分析が可能です。

はじめかた

CloudWatch は AWS アカウントを作成した時点で利用可能です。CloudWatch コンソールを開くと、既に AWS リソースの基本メトリクスが収集されています。ダッシュボードを作成してメトリクスのグラフを配置し、アラームを設定すれば監視体制の基本が整います。カスタムメトリクス (アプリケーション固有の数値) を送信したい場合は、AWS SDK の PutMetricData API を使用します。

注意点

  • 基本メトリクスは無料だが、詳細モニタリング (1 分間隔) やカスタムメトリクスは追加料金が発生する。コストを抑えるには標準モニタリング (5 分間隔) で十分か検討すること
  • CloudWatch Logs の保持期間はデフォルトで無期限。不要なログが蓄積するとストレージコストが増加するため、ロググループごとに適切な保持期間を設定すること
  • アラームの評価期間と閾値を適切に設定しないと、一時的なスパイクで誤報が頻発する。複数期間の連続超過を条件にすることで誤報を軽減できる

さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。