【问题标题】:adding metric in cloudwatch log在 cloudwatch 日志中添加指标
【发布时间】:2018-07-29 14:35:39
【问题描述】:

默认情况下,Elastic Beanstalk 在五个文件中生成日志。启用 cloudwatch 流式日志时,它会显示 error.log access.log、eb.log。但我希望 catilina.out 日志或 tomcat 日志也在 cloudwatch 日志中。怎么做?

【问题讨论】:

    标签: amazon-elastic-beanstalk amazon-cloudwatchlogs


    【解决方案1】:

    您可以使用其他配置文件将自己的日志添加到 Cloudwatch:

    /etc/awslogs/config/awslogs.conf
    

    例如,我使用以下文件将应用程序的所有 laravel 日志传送到 cloudwatch:

    [laravel.log]
    file = /var/www/html/storage/logs/laravel*
    buffer_duration = 5000
    log_stream_name = {instance_id}
    initial_position = start_of_file
    log_group_name = prod-laravel
    multi_line_start_pattern = {datetime_format}
    

    添加或更新文件时,请务必重新启动 awslogs 守护进程。

    更多信息请访问https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AgentReference.html

    【讨论】:

    • 会不会把catalina.out的日志转入cloudwatch?在文件参数中给出什么
    • 我的示例中的 file 属性是它将流式传输的文件的名称。所以你只需要确保这是你的 catalina.out 文件的路径。 log_group_name 是它将在 cloudwatch 中显示的名称。
    • 我们可以在弹性beantalk中更改日志组的名称吗?因为当我们启用日志流时,它默认为 5 个文件/流设置日志组名称
    • 是的,使用 log_group_name
    • 是否有任何用于设置此配置的 java api?比如 file = /var/www/html/storage/logs/laravel* buffer_duration = 5000 log_stream_name = {instance_id} 和所有这些
    【解决方案2】:

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

    总而言之,您需要设置一个策略,将其附加到 Elastic Beanstalk EC2 角色,将 .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
    

    【讨论】:

      猜你喜欢
      • 2023-03-03
      • 1970-01-01
      • 2022-07-14
      • 2021-09-03
      • 2019-12-06
      • 2017-10-18
      • 1970-01-01
      • 1970-01-01
      • 2020-06-25
      相关资源
      最近更新 更多