最近发现服务器硬盘爆满了,经排查,发现是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天的日志,那就大功告成了。