背景描述:
公司一台正式服务器,我们使用的是spring boot框架,机器上跑了很多微服务,这样就产生了大量不同的日志文件,其中几个服务,每个服务一天就能产生10G左右的日志文件,目前也只是写了脚本,凌晨删除几天前的日志来回收空间
这天登录到服务上随便看一下,发现空间占用过大,已经达到快报警的程度,然后检查脚本执行的情况,发现是正常的,日志已经被清理好了
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 20G 18G 53% /
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 7.8G 798M 7.0G 11% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
tmpfs 1.6G 0 1.6G 0% /run/user/0
/dev/vdb1 296G 197G 84G 71% /mnt/hug
tmpfs 1.6G 0 1.6G 0% /run/user/1007
tmpfs 7.8G 245M 7.6G 4% /tmp
我发现df –h和du –sh */ 命令的结果不一样
使用lsof|grep delete查看是否存在文件被删除但是依然被系统调用的情况
java 6815 22989 root 0u CHR 136,7 0t0 10 /dev/pts/7 (deleted)
java 6815 23106 root 0u CHR 136,7 0t0 10 /dev/pts/7 (deleted)
java 6815 23148 root 0u CHR 136,7 0t0 10 /dev/pts/7 (deleted)
java 6815 23216 root 0u CHR 136,7 0t0 10 /dev/pts/7 (deleted)
java 6815 23294 root 0u CHR 136,7 0t0 10 /dev/pts/7 (deleted)
java 6815 23297 root 0u CHR 136,7 0t0 10 /dev/pts/7 (deleted)
java 6815 23354 root 0u CHR 136,7 0t0 10 /dev/pts/7 (deleted)
java 6815 23368 root 0u CHR 136,7 0t0 10 /dev/pts/7 (deleted)
java 6815 23398 root 0u CHR 136,7 0t0 10 /dev/pts/7 (deleted)
java 6815 23435 root 0u CHR 136,7 0t0 10 /dev/pts/7 (deleted)
java 6815 23441 root 0u CHR 136,7 0t0 10 /dev/pts/7 (deleted)
java 6815 23456 root 0u CHR 136,7 0t0 10 /dev/pts/7 (deleted)
java 6815 23457 root 0u CHR 136,7 0t0 10 /dev/pts/7 (deleted)
java 6815 23458 root 0u CHR 136,7 0t0 10 /dev/pts/7 (deleted)
java 6815 28710 root 0u CHR 136,7 0t0 10 /dev/pts/7 (deleted)
好吧,发现大量的被删除文件依然被系统调用中,其中最多的是最近新部署的efk环境的插件filebeat,大概知道问题的原因了,filebeat在收集日志时我使用的*来匹配的,如下:
filebeat.prospectors:
- type: log
enabled: true
paths:
- /mnt/hug/service/*/*.log
- /home/hug-web/apache-tomcat-7.0.52/logs/catalina*.log
- /home/Hug/tomcat_hug/logs/catalina*.log
- /home/hug-manage/apache-tomcat-7.0.52/logs/catalina*.log
- /home/interview_manage/apache-tomcat-7.0.52/logs/catalina*.log
- /home/lanniu-manage/apache-tomcat-7.0.52/catalina*.log
但是日志是每天都会删除一些的,可能导致filebeat进程还在占用这个文件,但是这个文件已经被删掉了,在重启filebeat之后故障恢复正常