在 Elastic Beanstalk 上使用 catalina.out 缓解存储问题
Posted
技术标签:
【中文标题】在 Elastic Beanstalk 上使用 catalina.out 缓解存储问题【英文标题】:Mitigating storage issues with catalina.out on Elastic Beanstalk 【发布时间】:2019-06-29 04:28:14 【问题描述】:我遇到了一个问题,Tomcat 8 Java 8 Elastic Beanstalk 实例上的 catalina.out
日志文件正在扩展到实例中没有剩余存储空间的程度,这不允许实例继续向其发送日志CloudWatch,并阻止我部署新版本。
catalina.out
文件通过 .ebextension 转发到 CloudWatch。
有什么办法可以缓解这种情况吗?一些理论上的方法可能是通过滚动日志并删除旧版本的catalina.out
,或者在实例没有剩余存储空间时滚动实例。
在回答之前,请考虑以下几点:
我知道日志不应该这么大,目前这是一个限制,无法在不久的将来或修复此问题之前修复。
我已经在使用基于不同参数的缩放,因此我无法使用基于存储空间的缩放。
我正在使用 Log4j2,但 catalina.out
由 tomcat 处理,因此配置删除的滚动文件不是一种选择(特别是通过 Log4j2,可能有一种方法可以通过 AWS 上的 Tomcat 来实现)。
除了将其内容转发到 CloudWatch 而不是直接将日志发送到 CloudWatch 之外,我还想将 catalina.out
文件保留在实例上。
无法知道日志文件将占用的最大存储空间,因为您并不总是提前知道何时使用新实例(因此扩展存储空间不是长期解决方案)。
【问题讨论】:
【参考方案1】:将日志文件分隔在不同的分区中,临时/实例存储可以很好地做到这一点。所以即使填满,也不要破坏其他操作:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html
使用 CloudWatch Logs 代理发送和轮换日志:https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AgentReference.html
使用 .ebextensions 设置环境、JVM、Log4J 和容器设置:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html
【讨论】:
以上是关于在 Elastic Beanstalk 上使用 catalina.out 缓解存储问题的主要内容,如果未能解决你的问题,请参考以下文章
在 Elastic Beanstalk 上创建 cronjob 时遇到问题
让我们在 AWS Elastic Beanstalk 上加密
Elastic Beanstalk “git aws.push” 只承诺区别?
在 Elastic Beanstalk 上使用 Yarn 安装包