我遇到一个问题,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
文件。无法知道日志文件将占用的最大存储空间,因为您并不总是提前知道何时会使用新实例(因此扩展存储空间不是长期解决方案)。
最佳答案
将日志文件分隔在不同的分区中,临时/实例存储可能对此有好处。所以即使填满了,也不要破坏其他操作: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
关于java - 使用 Elastic Beanstalk 上的 catalina.out 缓解存储问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54532958/