最近发现服务器硬盘爆满了,经排查,发现是nacos的问题,它的日志太多了,服务器大半的磁盘空间都是被它占掉的。那么,有没有办法解决这个问题呢?

其实有个很干脆的方法,就是修改配置文件,把日志关掉。但是,这不是我们想要的,因为对于生产环境,我们还是要保留一定量的日志,以备需要的时候可以查看。如果没有日志,到时候就不好查问题了。

下面,我们就来讲一讲,如果只想要保留7天的日志,该怎么做。

我们的做法是写一个脚本,利用linux的cron定时任务去执行这个脚本,达到只保留7天日志的效果。

1、编写脚本

我们编写一个脚本,命名为del_nacos_logs.sh,下面是脚本内容:


############################
# 修改项
# nacos_home:nacos的目录
# savedays:保留最近几天的日志,savedays+1就是保留的天数
#############################

# $(cd $(dirname $0);pwd)表示脚本文件所在目录
nacos_home=$(cd $(dirname $0);pwd)/nacos
savedays=6


# 打印执行时间,可去掉
echo $(date +"%Y-%m-%d %H:%M:%S")-----------------start clean logs > $nacos_home/del_nacos_logs.log
#清理logs文件夹下的access.log文件
delList=$(find $nacos_home/logs/ -mtime +$savedays -name "access_log.*.log")
for i in $delList
 do
   rm -rf $i
   # 打印删除的日志,可去掉
   echo $i>>$nacos_home/del_nacos_logs.log
 done

#清理bin文件夹下的access.log文件
delList=$(find $nacos_home/bin/logs/ -mtime +$savedays -name "access_log.*.log")
for i in $delList
 do
   rm -rf $i
   # 打印删除的日志,可去掉
   echo $i>>$nacos_home/del_nacos_logs.log
 done

#清理logs文件夹下的其它文件
delList=$(find $nacos_home/logs/ -mtime +$savedays -name "*.log.*")
for i in $delList
 do
   rm -rf $i
   # 打印删除的日志,可去掉
   echo $i>>$nacos_home/del_nacos_logs.log
 done

2、创建定时任务

上面编写好的的脚本,我们放在/data下面,跟nacos目录同级。你也可以自己随便放在一个目录下,或者根据你的nacos目录来定。

(1)执行命令,打开定时编辑任务:

crontab -e

(2)在里面添加一条记录:

13 2 * * * /data/del_nacos_logs.sh

上面的内容表示每天凌晨2点13分执行

(3)重启crond服务:

systemctl restart crond

3、测试

这时,我们可以自己先执行一下命令,进行测试

/data/del_nacos_logs.sh

然后去看看nacos日志是否被删掉了,如果删掉了,只保留了最近7天的日志,那就大功告成了。

作者 admin

发表评论

您的电子邮箱地址不会被公开。