我有一个Elastic Beanstalk实例,将我的日志流式传输到Cloud Watch已有大约一年的时间。本周日志已停止流式传输。这可能是因为我在Beanstalk中“重建”了环境。同时没有进行任何配置更改。
我已再次检查我的Beanstalk角色在IAM中具有正确的权限(它具有CloudWatchFullAccess)。
我还尝试删除所有现有的组日志。然后,我进入Beanstalk“实例日志流式传输到CloudWatch Logs”区域,更改了日志保留期限,然后重新启动了App Server。确保已经重新创建了我的日志组(具有新的保留期),因此我很确定权限看起来不错。尽管如此,日志组中没有出现日志消息。
我已经通过Beanstalk请求了最近的日志,并且可以在App Server上看到消息正在写入日志中。
我的平台是Tomcat 8 with Java 8 running on 64bit Amazon Linux/2.6.2
我不确定从这里去哪里。我没有错误消息可以解决,也没有下一步检查的好主意。
编辑:这是我对CloudWatch的自定义配置,定义为here
files:
"/etc/awslogs/config/company_log.conf" :
mode: "000600"
owner: root
group: root
content: |
[/var/log/tomcat8/company.log]
log_group_name = `{"Fn::Join":["/", ["/aws/elasticbeanstalk", { "Ref":"AWSEBEnvironmentName" }, "var/log/tomcat8/company.log"]]}`
log_stream_name = {instance_id}
file = /var/log/tomcat8/company.*
答案 0 :(得分:1)
可能是因为不允许这样做。确保允许EC2实例使用的角色进行访问:
2019-08-20T10:02:12.692802|{"id": 936699609, "text": "Sample text for event", "severity": "critical", "about": ["antenna", "connection", "modem", "network"]}
2019-08-20T09:56:58.656774|{"id": 164654307, "text": "Sample text for event", "severity": "info", "about": ["connection", "network"]}
2019-08-20T09:54:11.646938|{"id": 266579356, "text": "Sample text for event", "severity": "critical", "about": ["connection", "network", "antenna", "modem", "signal"]}
对于Elastic Beanstalk,EC2实例使用的IAM角色可能是logs:CreateLogGroup
logs:CreateLogStream
logs:GetLogEvents
logs:PutLogEvents
logs:DescribeLogGroups
logs:DescribeLogStreams
logs:PutRetentionPolicy
。授予该角色访问新策略的权限:aws-elasticbeanstalk-ec2-role
(如果有人知道一个更好的名字,让我知道)使用JSON(建议here):
ec2-cloudwatch-logs-stream
它应该在用{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:GetLogEvents",
"logs:PutLogEvents",
"logs:DescribeLogGroups",
"logs:DescribeLogStreams",
"logs:PutRetentionPolicy"
],
"Resource": [
"*"
]
}
]
}
重新启动awslogs
服务之后才能工作。如果不;检查日志。您可以在这里找到它:sudo services awslogs restart