记一次线上磁盘占满问题的定位过程


现象

从 Grafana 监控面板查看到磁盘占满

初步判断是 logrotate 没有正常工作,日志占满磁盘。

首先登录到服务器删除日志,腾出系统空间,保障服务无异常后排查问题。

检查定时任务

查看定时任务是否配置,任务存在

检查定时任务是否启动,也没有问题

service cron status

手动执行

sudo /usr/sbin/logrotate /var/mars03/logrotate.conf

没看到输出,日志也无变化,感觉上还是 logrotate 的问题,检查配置文件内容跟其它运行良好的服务对比没发现不同

翻看了 logrotate 命令行参数,打印详细日志并忽略执行。

sudo /usr/sbin/logrotate -v -f -d /var/mars03/logrotate.conf

发现端倪

提示配置文件用户组不对

修改文件所属组

sudo chown root:root /var/mars03/logrotate.conf

再次运行,logrotate 正常工作,问题修复。

注意事项

多台机器同时需要修改时,需先删除日志文件,再启动 logrotate,如果遗漏会看到 CPU 疯狂工作的现象,解决方式是搜索到 logrotate 进程先杀掉,然后将消耗资源压缩进程也删除掉。