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

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

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

[admin@iZbp1bzvz55uz2x8s0bXXXX ~]$ 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关键字的,且文件大于1 KB、最后修改时间是5天前的日志文件会被清理掉,同时,会轮询 /home/admin/taobao-tomcat*/catalina.out文件。
  • /home/admin/configclient/目录下那些包含log关键字的,且文件大于1 KB、最后修改时间是7天前的日志文件会被清理掉。
  • /home/admin/logs/diamond-client/目录下那些包含log关键字的,且文件大于1 KB、最后修改时间是7天前的日志文件会被清理掉。
  • /home/admin/logs/目录下(包括子目录)那些以.log 后缀结尾的,且文件大小大于500 MB、且当文件个数大于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自带或者开源日志框架来管控应用日志,并使用日志框架去轮询和控制应用日志文件保存的数量、大小、个数等,避免应用日志写入过多耗尽磁盘空间。