如何配置Elastic Beanstalk以仅向我显示相关的日志文件?

时间:2018-03-22 14:30:21

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

我是一名对基础架构知识非常有限的应用程序开发人员。在我上一份工作中,我们经常将Java Web服务(构建为WAR文件)部署到Elastic Beanstalk,并且在我开始之前已经设置了大部分基础结构,因此我主要关注代码而不是事情是什么捆绑在一起。 Elastic Beanstalk的一个常用功能是“请求日志”按钮,您可以在其中选择“最近100行”或“完整日志”。单击此按钮时我常常看到的是直接查看我的Web服务生成的日志。

现在,在新工作中,基础架构要求略有不同,因为我们必须在部署之前对所有内容进行Dockerize。我一直在尝试在Elastic Beanstalk中的Docker容器中站起来一个Spring Boot Web应用程序,并且一直遇到麻烦。当我转到“请求日志”时,我也发现了一种奇怪的行为差异。现在,当我选择其中一个选项时,它不会直接将我放入相关的日志文件中,而是下载包含整个/var/log目录的ZIP文件,其中包含大量不同且不相关的日志文件。据我所知,亚马逊无法知道我不关心X日志文件但是关心Y日志文件,但是对于这种行为与我以前的行为有所不同感到惊讶。我假设这意味着上一个作业的EB配置是以特定的方式设置来过滤一个相关的日志文件,或类似的东西。

有没有办法将Elastic Beanstalk应用程序配置为仅在“请求日志”时返回一个特定的日志文件,而不是/var/log目录的ZIP文件?这是用ebextensions或类似的东西完成的吗?我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

对Beanstalk控制台不太确定,但使用EBCLI,如果启用CloudWatch日志流(请注意,这会花费您在CloudWatch中存储日志),您可以执行以下操作:

eb logs --stream --log-group <CloudWatch logGroup name>

上面的命令基本上为您提供了特定于您指定的文件/日志组的实例的日志。要使上述命令起作用,您需要启用CloudWatch日志流:

eb logs --stream enable

另外,要确定您的环境目前有哪些日志组,请执行:

aws logs describe-log-groups --region <region> | grep <beanstalk environment name>