如何将tomcat catalinat.out日志流式传输到Cloud Watch?

时间:2020-05-21 10:30:53

标签: amazon-web-services tomcat amazon-cloudwatch amazon-cloudwatchlogs

我想将tomcat catalinat.out日志流式传输到云监视:

这是我遵循的配置:

https://github.com/awsdocs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/instance-configuration/logs-streamtocloudwatch-linux.config

但是我在cloudwatch控制台中看不到catalina.out: <code>enter image description here</code>

这是错误,我在awslogs.log中 我该怎么解决。 2020-05-22 18:15:55,450-cwlogs.push.batch-警告-3374-线程29-CreateLogGroup失败,发生异常调用CreateLogGroup操作时发生错误(AccessDeniedException):用户:arn:aws:sts :: 610232524349:假定角色/ aws-elasticbeanstalk-ec2-role / i-099300c0bfd4b6a28无权执行:logs:资源上的CreateLogGroup:arn:aws:logs:eu-central-1:610232524349:log-group:/ aws / elasticbeanstalk / ************ / var / log / tomcat8 / catalina.out:日志流:

2 个答案:

答案 0 :(得分:0)

使用提供的示例,您不会导出catalinat.out,而是流式传输以监视以下文件:

  • / var / log / dmesg
  • / var / log / messages

要流式传输catalitat.out,必须将文件添加到配置中,并将日志的位置放在内容部分的末尾(提供的示例中的第61-71行)

应该这样,将/path/to/catalitat.log替换为日志的实际路径:

[/path/to/catalitat.log]
log_group_name = `{"Fn::Join":["/", ["/aws/elasticbeanstalk", { "Ref":"AWSEBEnvironmentName" }, "/path/to/catalitat.log"]]}`
log_stream_name = {instance_id}
file = /path/to/catalitat.log

答案 1 :(得分:0)

将tomcat日志(catalina.out)发布到CloudWatch流的步骤

  1. 为EC2创建新策略以使用AWS CloudWatch,提供对创建日志组,日志流和发布日志的访问权限

        {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Sid": "VisualEditor0",
                    "Effect": "Allow",
                    "Action": "logs:*",
                    "Resource": "*"
                }
            ]
        }
    
  2. 将策略附加到EC2实例的新创建或现有的IAM角色

  3. 使用PEM / PPK文件通过SSH连接到实例。

  4. 找到AWS CloudWatch Logs代理配置文件

        [ec2-user@ elasticbeanstalk]$ sudo su
        [root@ elasticbeanstalk]# find / -name "*awslogs.conf"
        /etc/awslogs/awslogs.conf
    
  5. 编辑配置文件,并为tomcat日志添加日志流条目。我用过catalina.out

        [ec2-user@ elasticbeanstalk]$ cat /etc/awslogs/awslogs.conf
        [general]
        state_file = /var/lib/awslogs/agent-state
    
        [tomcatLogs]
        log_group_name = tomcatLogs
        log_stream_name = catalinaLogs
        time_zone = LOCAL
        file = /[your-path-to]/tomcat8/catalina.out
        [ec2-user@ elasticbeanstalk]$
    
  6. 重新启动服务AWS日志

        [ec2-user@ elasticbeanstalk]$ sudo service awslogs restart
    
  7. 重新访问CloudWatch日志组页面,您可以在其中看到名称为“ tomcatLogs ”的新组和名称为“ catalinaLogs ”