【问题标题】:Enable logging to Cloudwatch of the tomcat log files of Elastic Bean Stalk启用 Elastic Beanstalk 的 tomcat 日志文件的日志记录到 Cloudwatch
【发布时间】:2019-01-23 09:05:13
【问题描述】:

我对 AWS 环境非常陌生,并尝试将 AWS ElasticBeanstalk 中的 tomcat 实例生成的日志配置到 Cloudwatch。 我尝试从 ElasticBeanstalk 控制台配置它,我只能看到下面的文件列表,我没有看到像“catalina.2018-08-16.log”、“localhost_access_log.txt”、“catalina.log”这样的日志。 out”等,我还需要做什么才能看到它们?

List of log files available on Cloudwatch

【问题讨论】:

    标签: amazon-web-services amazon-elastic-beanstalk amazon-cloudwatch


    【解决方案1】:

    我能够通过密切遵循页面 https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.cloudwatchlogs.html 上的说明来做到这一点,“使用配置文件的实例日志流式传输”部分

    我们需要放置一个配置文件来告诉 cloudwatch 代理选择我想要的所有文件。 并通过将适当的策略附加到 EC2 角色来配置适当的权限,以便它可以在 cloudwatch 上运行。

    【讨论】:

      【解决方案2】:

      Elastic Beanstalk 日志有一个想法,需要一些解释才能让您了解正在发生的事情。 Elastic Beanstalk 是 AWS(平台即服务)提供的 PaaS。它们为您提供了一个完整的平台,仅限于几个选项(Node.Js、Python、PHP、Tomcat 等)。从鸟瞰的角度来看,所有平台由以下人员组成:

      1. 静态内容的端点(apache、nginx);
      2. 您可以在其中部署应用的“应用服务器”;
      3. 负载平衡器、分析 (X-Ray) 和其他选项,具体取决于您的配置;
      4. 如果您在创建环境时配置数据库实例;

      这是所有平台的通用东西,不管是 Node.JS、tomcat 还是其他。此组件的日志会流式传输到 CloudWatch。

      特定于您选择的平台的日志不会流式传输到 CloudWatch。它们保留在由 Elastic Beanstalk 管理的实例中。如果您需要查看此日志,您可以使用 Elastic Beanstalk 控制台访问它。在控制台中,转到左侧窗格,选择“日志”选项。在那里您会找到下载日志的说明(整个或仅最后 100 行)。

      您还可以配置 Elastic Beanstalk 来部署此日志,但不能部署到 CloudWatch。它们被传送到您在配置中选择的 S3 存储桶。

      【讨论】:

      • 感谢您的回答 Gustavo,它确实解释了大局。
      【解决方案3】:

      我在一个新的Medium blog 中详细介绍了这一切的工作原理以及一个示例 .ebextensions 文件及其放置位置。

      以下是您可能可以使用的摘录,但本文解释了如何确定要流式传输的正确文件夹/文件。

      packages:
        yum:
          awslogs: []
      
      option_settings:
        - namespace: aws:elasticbeanstalk:cloudwatch:logs
          option_name: StreamLogs
          value: true
        - namespace: aws:elasticbeanstalk:cloudwatch:logs
          option_name: DeleteOnTerminate
          value: false
        - namespace: aws:elasticbeanstalk:cloudwatch:logs
          option_name: RetentionInDays
          value: 90
      
      files:
        "/etc/awslogs/awscli.conf" :
          mode: "000600"
          owner: root
          group: root
          content: |
            [plugins]
            cwlogs = cwlogs
            [default]
            region = `{"Ref":"AWS::Region"}`
      
        "/etc/awslogs/config/logs.conf" :
          mode: "000600"
          owner: root
          group: root
          content: |
            [/var/log/tomcat/localhost.log]
            log_group_name = `{"Fn::Join":["/", ["/aws/elasticbeanstalk", { "Ref":"AWSEBEnvironmentName" }, "var/log/tomcat/localhost.log"]]}`
            log_stream_name = {instance_id}
            file = /var/log/tomcat/localhost.*
      
            [/var/log/tomcat/catalina.log]
            log_group_name = `{"Fn::Join":["/", ["/aws/elasticbeanstalk", { "Ref":"AWSEBEnvironmentName" }, "var/log/tomcat/catalina.log"]]}`
            log_stream_name = {instance_id}
            file = /var/log/tomcat/catalina.*
      
            [/var/log/tomcat/localhost_access_log.txt]
            log_group_name = `{"Fn::Join":["/", ["/aws/elasticbeanstalk", { "Ref":"AWSEBEnvironmentName" }, "var/log/tomcat/access_log"]]}`
            log_stream_name = {instance_id}
            file = /var/log/tomcat/access_log.*
      
      commands:
        "01":
          command: systemctl enable awslogsd.service
        "02":
          command: systemctl restart awslogsd
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-05
        • 2017-09-19
        • 2023-04-06
        • 2018-04-09
        • 2017-10-18
        • 2015-12-14
        • 2015-02-17
        • 2021-07-29
        相关资源
        最近更新 更多