AWS CloudWatchとログ監視のすべて:安定運用に不可欠なログ戦略
CloudWatchやログ監視の概要
Webアプリケーションやインフラを安定運用するうえで、ログの収集と監視は非常に重要です。本記事では、AWS CloudWatch を中心に、ログ監視の基本概念、設定方法、応用テクニックについて体系的に解説します。
1. ログ監視とは
ログ監視とは、アプリケーションやサーバが出力するログを収集・分析し、異常やトラブルの兆候を検知・通知するための仕組みです。
代表的な監視対象ログ
- アプリケーションログ
- Webサーバ(Nginx、Apache)ログ
- OS/システムログ(/var/log/)
- コンテナログ(Docker, ECS, Kubernetes)
- DBログ(MySQL, PostgreSQLなど)
2. AWS CloudWatchとは
AWS CloudWatchは、AWS環境における監視とログ管理を統合的に提供するサービスです。以下の主な機能があります。
- CloudWatch Logs:ログの収集・検索・可視化
- CloudWatch Metrics:リソースのメトリクス監視
- CloudWatch Alarms:しきい値によるアラート通知
- CloudWatch Dashboards:可視化ダッシュボード
- CloudWatch Logs Insights:クエリベースのログ分析
3. CloudWatch Logsの基本構成
- Log Group:ログのグループ単位
- Log Stream:ログデータの連続的な流れ(例:1つのEC2インスタンス)
- ログエージェント:CloudWatch Agent、Fluent Bit、AWS CLI など
4. ログ送信の設定
EC2からの送信
sudo yum install amazon-cloudwatch-agent
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
sudo systemctl start amazon-cloudwatch-agent
ECS・Fargateからの送信
ログドライバにawslogsを指定。
logConfiguration:
logDriver: awslogs
options:
awslogs-group: "/ecs/my-app"
awslogs-region: "ap-northeast-1"
awslogs-stream-prefix: "ecs"
5. CloudWatch Logs Insights
ログに対してSQLライクなクエリを実行し、エラー数やリクエスト数を可視化できます。
fields @timestamp, @message
| filter @message like /ERROR/
| sort @timestamp desc
| limit 20
6. アラーム通知の設定
メトリクスに対してCloudWatch Alarmを設定し、SNS経由で通知を送信。
- メトリクス:CPU使用率, エラーレート
- 通知:Amazon SNS → Email, Slack, Lambda
7. 他のログ監視サービスとの比較
- Datadog:UIが優れており、CloudWatch連携も簡単
- New Relic:アプリケーションパフォーマンス分析に強い
- Elastic Stack(ELK):完全オープンソースで柔軟性あり
8. ベストプラクティス
- ログ量を制御し、コスト対策(サンプリング・保存期間の見直し)
- 環境ごとにLog Groupを分ける(dev/stg/prod)
- アプリケーションログは構造化形式(JSON)で出力
- 監視とアラートは最小限かつ意味のあるものに
まとめ
ログ監視はトラブル対応・障害検知だけでなく、アプリケーションやシステムの改善にも役立ちます。CloudWatchを中心とした監視体制を整備することで、Webサービスの安定運用が実現できます。