使用log4j2的Fargate日志记录问题



我们有一个fargate服务正在运行。在CloudWatch上,我们可以看到ECS/ContainerInsights的指标->StorageWriteBytes每小时都在增长,在某个时候它不会再增长,可能是因为磁盘空间不足。如果我们不强制部署新的ECS,我们将开始看到日志错误。错误看起来像:

error: org.apache.logging.log4j.core.appender.AppenderLoggingException: Error 
writing to RandomAccessFile /apollo/env/ReaverFeatureGating/var/output/logs/application.log.%d{yyyy-MM-dd-HH}

问题:

  1. 这对所有的fargate服务来说都正常吗?我们设置了什么吗错了吗
  2. 我们可以删除所有AmazonRollingRandomAccessFile,只在log4j2-container.xml中使用STDOUT吗?那还会把我们的活动发布到CloudWatch,但就是不写入磁盘

经过一些研究,这就是我得到的:

  1. 因为默认模板包括AmazonRollingRandomAccessFile,所以日志将在本地生成,但永远不会被清理。有一些关于添加cron作业以删除日志的建议,但对于我们的情况,我们不需要本地日志
  2. 是的,CloudWatch只需要STDOUT

此外,StorageWriteBytes仅表示读取/写入存储器的字节数。它不等于已使用的磁盘空间。为了监控磁盘空间,我们可以将CloudWatch Agent构建到容器映像中,然后使用disk_used metric。https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/metrics-collected-by-CloudWatch-agent.html

最新更新