【问题标题】:How can I configure Elastic Beanstalk to show me only the relevant log file(s)?如何将 Elastic Beanstalk 配置为仅显示相关日志文件?
【发布时间】:2018-09-01 01:05:46
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    不太确定 Beanstalk 控制台,但使用 EBCLI,如果您为您的 Beanstalk 实例启用 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>
    

    【讨论】:

    • 就是这样!启用日志流改变了请求日志按钮的行为。
    • 太棒了,很高兴它有帮助。
    猜你喜欢
    • 1970-01-01
    • 2014-07-31
    • 2013-04-11
    • 2014-07-21
    • 2012-11-25
    • 1970-01-01
    • 2018-04-20
    • 2017-01-07
    • 2015-06-16
    相关资源
    最近更新 更多