我遇到一个问题,其中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
文件保留在实例上。
由于您并不总是事先知道何时使用新实例,因此无法知道日志文件将占用的最大存储空间(因此扩展存储空间不是长期解决方案)。
答案 0 :(得分:0)
将日志文件分隔在另一个分区中,临时/实例存储可以很好地解决此问题。因此,即使填充成功,也不要破坏其他操作: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