Elastic Beanstalk自定义CloudWatch日志

时间:2018-05-09 19:16:40

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

我在AWS上有一个Elastic Beanstalk环境,我通过Docker容器进行部署。我已经从Bean配置的Bean配置中启用了默认日志,我们在CloudWatch中获得了标准日志,例如eb-activity.log。

我的目标是将自定义日志文件: logger.log集成到CloudWatch中。

Dockerrun.aws.json 看起来像这样:

{
  "AWSEBDockerrunVersion": "1",
  "Ports": [
    {
      "ContainerPort": "3000"
    }
  ],
  "Logging": "/path/to/logs"
}

然后在 .ebextensions / 01_cloudwatch.config 我有

files:
  /etc/awslogs/config/my_app_log.conf: 
    content: |
        [/var/log/eb-docker/containers/eb-current-app/logger.log]
        log_group_name=/aws/elasticbeanstalk/appname/var/log/eb-docker/containers/eb-current-app/logger.log
        log_stream_name={instance_id}
        file=/var/log/eb-docker/containers/eb-current-app/logger.log
    group: root
    mode: "000600"
    owner: root

eb-user 拥有CloudWatch(CloudWatchFullAccess和CloudWatchLogsFullAccess)的完全权限。另外,我可以验证是否存在 /var/log/eb-docker/containers/eb-current-app/logger.log

但是,日志不会出现在CloudWatch中。在同一目录中有出现在CloudWatch中的afc818177506-stdouterr.log文件,它们在/etc/awslogs/config/beanstalklogs.conf中配置。此外,我确保 sudo service awslogs restart

任何想法如何调试问题或者您是否看到我做的任何明显错误,因此logger.log不会出现在CloudWatch中?非常感谢!

PS。我已经查看了类似的问题并且已经花了很多时间来解决问题而没有成功,所以需要你的帮助。

1 个答案:

答案 0 :(得分:0)

根据this reference底部的Cloudwatch代理常见问题解答,这些是未发送日志事件的常见原因:

  1. 日志事件的大小是> 256K
  2. 日志条目的时间戳已关闭(未来> 2小时或过去> 2周) - 如果您有陈旧的logger.log,可能会清除您的日志文件。
  3. 记录早于保留期的事件
  4. 大型日志批次超过24小时
  5. 最后 - 要解决为什么cloudwatch日志代理可能会失败,请检查 /var/log/awslogs.log 并且在EC2实例上正确安装了代理进行故障排除,请检查/var/log/awslogs-agent-setup.log

    查看这些提示是否有帮助,如果您仍然遇到更多信息,请回复,我们会继续尝试为您提供帮助。