使用 log4j2 的 Fargate 日志记录问题

Fargate logging issue using log4j2

我们有 fargate 服务 运行。在 CloudWatch 上,我们可以看到 ECS/ContainerInsights->StorageWriteBytes 的指标每小时都在增长,并且在某些时候它不会再增长,可能是因为磁盘不足 space。如果我们不强制部署新的 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 吗?那还会 post 我们的活动吗 CloudWatch,但只是不写入磁盘?

经过一番研究,我得到了以下结果:

  1. 由于默认模板包含AmazonRollingRandomAccessFile,日志会在本地生成但不会被清理。有一些关于添加 cron 作业来删除日志的建议,但对于我们的案例,我们不需要本地日志。
  2. 是的,CloudWatch 只需要 STDOUT。

此外,StorageWriteBytes 仅代表 read/write 存储的字节数。它不等于使用的磁盘space。要监控磁盘 space,我们可以将 CloudWatch 代理构建到容器映像中,然后使用 disk_used 指标。 https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/metrics-collected-by-CloudWatch-agent.html