如何在AWS Elastic Beanstalk中部署CloudWatch Laravel日志?

Sam*_*Sam 4 amazon-web-services amazon-cloudwatch laravel-5

我在AWS Elastic Beanstalk中部署了一个PHP Laravel Worker,并希望将其流式传输/var/app/current/storage/logs/*.logCloudWatch.然而,我遇到的解决方案是Forge部署或vanilla EC2实例.

非常感谢这件事的任何帮助.

Pav*_*ely 8

您需要按照此处所述配置CloudWatch代理:

  • 授予CloudWatch Logs Agent的IAM权限;
  • 使用.ebextensions/logs.config文件将您的应用程序压缩在一起.

我假设logs.config应该是这样的

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: 7

packages:
  yum:
    awslogs: []

files:
  "/etc/awslogs/awscli.conf" :
    mode: "000600"
    owner: root
    group: root
    content: |
      [plugins]
      cwlogs = cwlogs
      [default]
      region = `{"Ref":"AWS::Region"}`

  "/etc/awslogs/awslogs.conf" :
    mode: "000600"
    owner: root
    group: root
    content: |
      [general]
      state_file = /var/lib/awslogs/agent-state

  "/etc/awslogs/config/logs.conf" :
    mode: "000600"
    owner: root
    group: root
    content: |
      [/var/app/current/storage/logs]
      log_group_name = `{"Fn::Join":["/", ["/aws/elasticbeanstalk", { "Ref":"AWSEBEnvironmentName" }, "var/app/current/storage/logs"]]}`
      log_stream_name = {instance_id}
      file = /var/app/current/storage/logs/*.log

commands:
  "01":
    command: chkconfig awslogs on
  "02":
    command: service awslogs restart
Run Code Online (Sandbox Code Playgroud)

请参阅ec2实例的/var/log/awslogs.log以进行故障排除.