故障场景:

一台装有Nagios服务的CentOS重启后,Nagios服务启动失败,报错信息是没有这个目录cfg_dir=/etc/nagios/conf.d

排障过程:

1、我一看“嘿,谁改这一句,配置文件目录应该是objects吧”想当然地将这个参数改成了cfg_dir=/etc/nagios/objects

再次启动,还是报错!看提示是说notify-host-by-email这个值重复了。

image.png

2、运行grep过滤一下,没有重复啊,怎么有.rpmnew的文件啊。不管了先mv到/tmp去。

grep -r 'notify-host-by-email' /etc/nagios/

image.png

再次确认一下。

image.png

再次启动服务,依旧报同样的错。。

3、好吧,把报错的参数注释掉试试。注释第一条就报第二条,反复如此。郁闷了,这是整个文件都不对??版本是什么?

image.png

4、这时间!!看来是有更新过。更新==new。等等,那个rpmnew是个什么鬼。

RPM使用.rpmnew来处理升级软件包时,不同版本间的配置文件改到情况。

如果原版本有改动,则将新版本文件加上.rpmnew后缀。因此添加的host都还在。

如果原版本无改动,则将旧版本文件加上.rpmnew后缀。没有改动过nagios.cfg,所以被重命名了。

----以上纯属个人的理解

记一次Nagios服务启动失败的故障排查_第1张图片

记一次Nagios服务启动失败的故障排查_第2张图片

5、看了一下nagios.cfg.rpmnew里面的cfg_dir都是注释的。应该是cfg_file定义的不能包含在cfg_dir内。

6、将#cfg_dir=/etc/nagios/conf.d注释后,重新检查配置,成功启动。

/usr/sbin/nagios -v /etc/nagios/nagios.cfg

记一次Nagios服务启动失败的故障排查_第3张图片


总结:

此次故障应该是有人运行过yum update更新了所有软件引起的。有时候其实问题就在眼前,而日志的报错又不能直接指出问题,这就需要留意下日志以外的东西。还有和其他同事的沟通也很重要。