AWS Elastic Beanstalk 日志轮换
Posted
技术标签:
【中文标题】AWS Elastic Beanstalk 日志轮换【英文标题】:AWS Elastic Beanstalk Log Rotation 【发布时间】:2019-02-11 20:43:07 【问题描述】:我在 AWS Elastic Beanstalk 上运行 Java 应用程序(Java 8 在 64 位 Amazon Linux/2.7.4 上运行)默认情况下,Java 应用程序记录到 STDOUT,Elastic Beanstalk 自动将 STDOUT 存储在 /var/log/web-1 。日志。这按预期工作。
有关 Elastic Beanstalk 如何捕获和存储 STDOUT 的更多信息,请参阅 https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-se-procfile.html。
web-1.log 文件达到一定大小后,会旋转到 /var/log/rotated/web-1.logXXX.gz。但是,一旦发生这种情况,原始 web-1.log 文件将被清除(预期),并且不会向该文件写入更多日志消息(预期)。所有未来的日志消息似乎都直接转到旋转日志目录中的文件。
任何想法可能导致这种情况?我没有对 Elastic Beanstalk 处理日志轮换的方式进行任何更改。
【问题讨论】:
遇到同样的行为。有什么想法吗? 【参考方案1】:Elastic Beanstalk 实例(至少我正在使用的实例)运行 logrotate 守护程序。也许您可以通过在/etc/logrotate.d
中放置一个配置文件来配置它?
空日志的问题可能是日志轮换时的陈旧文件句柄?请参阅this answer 了解如何处理的一些示例。
【讨论】:
在 EBS 中有一个有效的 logrotate 设置(每小时,使用 copytruncate),它的行为是可以的,但在某些情况下,日志文件保持在零字节大小,而应用程序会将日志放在那里。在下一次旋转之后,它再次工作。这意味着存在罕见的、看似随机的丢失日志数据的情况。以上是关于AWS Elastic Beanstalk 日志轮换的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic Beanstalk NodeJS 和日志
AWS Elastic Beanstalk PHP 日志不在 CloudWatch 中
AWS Elastic Beanstalk:将自定义日志添加到 CloudWatch?
使用 Logback 进行 AWS Elastic Beanstalk 应用程序日志记录