【发布时间】:2020-12-23 07:33:27
【问题描述】:
我在 AWS Elastic Beanstalk 环境中部署了一个 JAR 文件,使用负载均衡器和最多 2 个 EC2 实例。
我的环境似乎在使用新的统一 CloudWatch 代理,而不是旧的 CloudWatch Logs 代理
在控制台的环境配置中,我打开了“将实例日志流式传输到 CloudWatch Logs”,现在在 CloudWatch Logs 中,我得到了以下组:
/aws/elasticbeanstalk/myapp-myenv/var/log/eb-engine.log/aws/elasticbeanstalk/myapp-myenv/var/log/eb-hooks.log/aws/elasticbeanstalk/myapp-myenv/var/log/nginx/access.log/aws/elasticbeanstalk/myapp-myenv/var/log/nginx/error.log/aws/elasticbeanstalk/myapp-myenv/var/log/web.stdout.log
这很好。值得注意的是,Web 服务器访问位于 access.log 中,甚至我的 JAR 文件的 STDOUT 控制台输出也在 web.stdout.log 中。到目前为止一切顺利。
现在假设我希望我的 JAR 应用程序生成一个日志文件并让它在 CloudWatch Logs 中自动获取。我已经阅读了Elastic Beanstalk EC2 logging documentation,它说我可以在我的应用程序中捆绑特殊的.ebextensions 以指示新的日志记录位置“[i]如果您的应用程序在不属于您的环境的默认配置的位置生成日志平台”。
在短期内,我宁愿不创建.ebextensions 文件。关于“……一个位置……默认配置的一部分……”的部分让我很感兴趣。
Elastic Beanstalk Java 平台日志是否有默认位置? 换句话说,是否有一些默认位置,例如 /var/log/app/,我可以简单地将我的应用程序日志记录到(例如通过环境变量配置)并让带有新统一代理的 CloudWatch Logs 自动获取它们,而无需创建 .ebextensions 文件? (作为第二好的解决方案,有没有办法可以使用 AWS 控制台配置位置?)
【问题讨论】:
标签: java amazon-web-services amazon-elastic-beanstalk amazon-cloudwatchlogs