在 EDAS 中部署的应用的日志的清理机制有以下常见问题。

在 EDAS 中部署的应用的日志是否会被定期清理?

仅应用运行环境是 EDAS-Container x.x.x,且是 ECS 集群、WAR包格式时(会使用到 Ali-Tomcat ),EDAS 的定时任务脚本才会清理 Ali-Tomcat 日志目录下的日志(具体以 ECS集群应用部署的 ECS 主机上使用 admin 用户执行 crontab -l 看到的每天凌晨3点10分的定时清理任务为准),有定时清理脚本的情况:

[admin@iZbp1bzvz55uz2x8s0bhhcZ ~]$ crontab -l
10 3 * * * /home/admin/edas-agent/bin/rotator.sh
			

ECS集群但应用运行环境非 EDAS-Container x.x.x、Swarm 集群、容器服务 K8s 集群的应用日志以及可能产生的 Tomcat 日志目前还不会被清理。

EDAS 的日志定时清理脚本会清理哪些路径下的日志?清理的规则又是什么?

  • /home/admin/taobao-tomcat*/ 目录下那些包含 log、out 关键字的,且文件大于 1KB、最后修改时间是 7 天前的日志文件会被清理掉,同时,会轮询 /home/admin/taobao-tomcat*/catalina.out 文件。
  • /home/admin/configclient/ 目录下那些包含 log 关键字的,且文件大于 1KB、最后修改时间是 7 天前的日志文件会被清理掉。
  • /home/admin/logs/diamond-client/ 目录下那些包含 log 关键字的,且文件大于 1KB、最后修改时间是 7 天前的日志文件会被清理掉。
  • /home/admin/logs/ 目录下(包括子目录)那些以 .log 后缀结尾的,且文件大小大于 500MB、且当文件个数大于 3 个且较旧的日志文件会被清理掉。

EDAS 的日志定时清理脚本无法满足使用需求,或者日志中仍然会产生很多日志怎么办?

  • Ali-Tomcat 基于 Apache Tomcat 定制,在日志记录这方面与 Apache Tomcat 保持一致, 应用部署在 EDAS 中,运行环境无论是 EDAS-Container x.x.x(内含 Ali-Tomcat),还是 Apache Tomcat,应用都不宜向 Tomcat 的 catalina.out 日志文件写入较多的日志,或者将应用自定义的日志输出到 Tomcat 的日志目录 $CATALINA_HOME/logs,频繁写入,可能会导致 ECS 主机 /home 挂载点目录对应的磁盘空间耗尽;
  • 建议在应用中使用 Java 自带或者开源日志框架来管控应用日志,并使用日志框架去轮询和控制应用日志文件保存的数量、大小、个数等,避免应用日志写入过多耗尽磁盘空间。