Amazon CloudWatch Logs実践ガイド|ログ収集・メトリクスフィルター・Insightsでの分析

現場実践|CloudWatch Logs運用
Amazon CloudWatch Logs実践ガイド|ログ収集・メトリクスフィルター・Insightsでの分析
「EC2のログをCloudWatchに集めたい」「ログから特定のエラーを検出してアラームを飛ばしたい」——CloudWatch Logsエージェントのセットアップ・メトリクスフィルター・Logs Insightsを使ったログ分析を解説します。
💡 ログ管理はインフラ運用の根幹。CloudWatch Logsを使えばEC2・Lambda・ECSの全てのログを一元管理・検索・分析できます。メトリクスフィルターで特定パターンのログをCloudWatchアラームと連携することも可能です。
1. CloudWatch Unified Agentの設定例
// /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
{
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/var/log/nginx/access.log",
"log_group_name": "/ec2/nginx/access",
"log_stream_name": "{instance_id}",
"retention_in_days": 30
},
{
"file_path": "/var/log/app/application.log",
"log_group_name": "/ec2/app/application",
"log_stream_name": "{instance_id}",
"retention_in_days": 30
}
]
}
}
}
}2. メトリクスフィルターでエラー検出→アラーム(Terraform)
resource "aws_cloudwatch_log_metric_filter" "nginx_5xx" {
name = "nginx-5xx-errors"
pattern = "[host, ident, auth, timestamp, request, status_code=5*, ...]"
log_group_name = "/ec2/nginx/access"
metric_transformation {
name = "Nginx5xxCount"
namespace = "Custom/Nginx"
value = "1"
}
}
resource "aws_cloudwatch_metric_alarm" "nginx_5xx_alarm" {
alarm_name = "nginx-5xx-high"
comparison_operator = "GreaterThanThreshold"
evaluation_periods = 2
metric_name = "Nginx5xxCount"
namespace = "Custom/Nginx"
period = 60
statistic = "Sum"
threshold = 10
alarm_actions = [aws_sns_topic.alerts.arn]
}3. CloudWatch Logs Insightsでのログ分析
// 遅いリクエストを分析
fields @timestamp, request_url, target_processing_time
| filter target_processing_time > 1.0
| sort target_processing_time desc
| limit 20
// エラーの時間帯別集計
filter @message like /ERROR/
| stats count() as error_count by bin(1h)
| sort bin desc4. ログの保持期間とコスト管理
- 保持期間を必ず設定する:CloudWatch Logsはデフォルトで無期限保存。ロググループごとに30日・90日等の保持期間を設定してコストを削減する
- S3へのエクスポートで長期保存:90日を超える長期保存が必要なログはS3にエクスポートする
- Contributor Insightsで上位の貢献者を分析:「最もエラーを出しているIPはどこか」「最も遅いAPIエンドポイントはどれか」を自動で上位表示する
📌 この記事のポイント
- CloudWatch Unified AgentでEC2のNginx・アプリログをJSON設定で収集。IAMロールでアクセスキー不要
- メトリクスフィルターでログの5XXパターン検出→CloudWatchアラームでSNS通知が自動化できる
- Logs InsightsでSQLライクなクエリを使った遅いリクエスト・エラー時間帯分析が本番運用に有効
キャリアの疑問、一緒に解決しませんか?
Infra Academyでは、インフラ系ITエンジニアを目指す方への個別サポートを行っています。2026年7月からフリーランス講師として本格始動予定です。
ABOUT ME




