问题背景
(1)用的是ambari来运维常用的服务,今天重启服务器后发现在页面上重启RabbitMQ和redis服务都失败了;
(2)到服务器后台手动执行启动命令也是失败;
排查过程
(1)后台启动的时候报错,可以看到提示的是 :PID file /var/run/redis.pid not readable (yet?) after start。第一反应肯定是去检查 /var/run/redis.pid这个文件在不在,该文件不存在,就一直以为是这个原因导致的,包括去网上搜了很多相关的问题,尝试过手动创建这个文件都无法解决。
(2)突然想到去看看日志文件里面打印的是什么内容,发现是因为/var/log/redis/redis.log文件无法创建,导致无法写日志,于是就手动创建了/var/log/redis,然后再执行一次启动命令就成功了。
(3)RabbitMQ的排查过程更简单,执行systemctl status rabbitmq的时候就明显提示:/var/log/rabbit/startup_log无法打开或不存在。解决方案也是手动创建/var/log/rabbitmq/目录,然后重新启动就可以了。
思考与总结
(1)根本原因是重启服务器的时候,/var/log/rabbitmq 、/var/log/redis 这俩目录被删除了,至于被删除的具体原因目前还没查到,后面再去复现也复现不了,网上查到可能的原因有:/var/log 挂到 tmpfs 分区了。但是我的分区却是不在这个分区下的。
(2)可以通过在启动脚本里加个目录是否存在的判断来避免这个问题出现。
(3)排查问题有时候以为找到了原因,其实还需要深挖一下根因。