AWS Elastic Beanstalk 環境の Amazon CloudWatch ストリーミングに関連するエラーのトラブルシューティングをしたいと考えています。
簡単な説明
ログを CloudWatch にストリーミングすると、データの保護に役立ちます。例えば、Elastic Beanstalk 環境で Elastic Compute Cloud (Amazon EC2) インスタンスが終了した場合でも、CloudWatch からログを復元できます。また、ログローテーションを使用して、データ損失から保護することもできます。
ログストリーミングをアクティブ化しても環境のインスタンスログが CloudWatch にストリーミングされない場合は、次のよくある問題を確認する必要があります。
- IAM インスタンスプロファイルロールに必要な IAM 許可がない。
- CloudWatch ログをサポートしていない AWS リージョンで環境を起動した。
- いずれかのカスタムログファイルが、指定したパスに存在しない。
解決方法
1. Elastic Beanstalk 環境のインスタンスプロファイルロールに次の許可があることを確認します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogGroups",
"logs:DescribeLogStreams"
],
"Resource": [
"*"
]
}
]
}
2. カスタムログをストリーミングする場合は、設定ファイルを使用して CloudWatch Logs エージェントを直接インストールし、ファイルを設定します。また、その設定ファイルの形式とインデントを確認する必要があります。カスタムログを CloudWatch にストリーミングする方法の詳細については、サンプル設定ファイルを参照してください。
3. CloudWatch エージェントのステータスとエージェントログを確認して、ログストリーミング問題の原因を特定します。
古い CloudWatch エージェント (awslogsd) のステータスとログを確認するには:
- エージェントステータス: systemctl status awslogsd.service
- エージェントログの場所: /var/log/awslogs.log
最新の CloudWatch エージェント (amazon-cloudwatch-agent) のステータスとログを確認するには:
- エージェントステータス: systemctl status amazon-cloudwatch-agent.service
- エージェントログの場所: /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log
Elastic Beanstalk のログファイルのカスタマイズに関する詳細については、「Elastic Beanstalk でログファイルをカスタマイズするにはどうすればよいですか?」を参照してください。
関連情報
Amazon CloudWatch Logs で Elastic Beanstalk を使用する
logs-streamtocloudwatch-linux.config