我想排查与 AWS Elastic Beanstalk 环境的 Amazon CloudWatch 流式传输相关的错误。
简短描述
将您的日志流式传输到 CloudWatch 有助于保护护您的数据。例如,如果您的 Elastic Beanstalk 环境遇到了终止的 Elastic Compute Cloud(Amazon EC2)实例,那么您仍然可以从 CloudWatch 恢复日志。您还可以使用日志轮换来防止数据丢失。
如果即使在激活了日志流式传输之后,您环境的实例日志仍未流式传输到 CloudWatch,则必须研究以下常见问题:
- 您的 IAM 实例配置文件角色缺少所需的 IAM 权限。
- 您在不支持 CloudWatch Logs 的 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 中自定义日志文件?
相关信息
将 Elastic Beanstalk 与 Amazon CloudWatch Logs 配合使用
logs-streamtocloudwatch-linux.config