我遇到了一个问题,Tomcat 8 Java 8 Elastic Beanstalk实例上的catalina.out
日志文件正在扩展到该实例中没有剩余存储的地步,这不允许该实例继续向CloudWatch发送日志,并阻止我部署新版本。catalina.out
文件通过.eextension.转发到CloudWatch
有什么方法可以缓解这种情况吗?一些理论上的方法可能是滚动日志并删除旧版本的catalina.out
,或者在实例没有存储空间时滚动实例。
在回答之前,请考虑以下内容:
-
我知道日志不应该像现在这样大,这目前是一个限制,在不久的将来或修复此问题之前无法修复。
-
我已经在使用基于不同参数的缩放,所以基于存储空间的缩放对我来说不可用
-
我使用的是Log4j2,但
catalina.out
是由tomcat处理的,所以配置带有删除的滚动文件不是一个选项(特别是通过Log4j2,可能有一种方法可以通过AWS上的tomcat来实现)。 -
除了将
catalina.out
文件的内容转发到CloudWatch之外,我还想将其保留在实例上,而不是直接将日志发送到CloudWatch。 -
无法知道日志文件将占用的最大存储空间,因为您并不总是提前知道何时使用新实例(因此扩展存储空间不是一个长期解决方案)。
-
将日志文件分离到不同的分区中,临时/实例存储可以很好地实现这一点。因此,即使填充,也不要损坏其他操作:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html
-
使用CloudWatch日志代理运送和轮换日志:https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AgentReference.html
-
使用.eextensions设置环境、JVM、Log4J和容器设置:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html