默认情况下,nagios的日志位于安装目录的var下(如我的是/usr/local/nagios/var/nagios.log),日志按天归档到安装目录的var/archives下,这些在nagios的配置文件nagios.cfg里可以更改。需要注意的是日志nagios.log里面的时间的格式计算方法是 从1970.1.1到当前时间的间隔,单位是秒,可以看看日志条目,加粗的为时间:
[1342627200] CURRENT SERVICE STATE: app-mus01-2.14;S_Apache;OK;HARD;1;Apache2.2: Started
这样的时间格式如果用nagios的web界面来看是没什么问题的,cgi会把它转换成我们常用的时间格式,但如果我们在终端下面来看这些日志,那就有点困难了。还好,nagios可能也考虑到了这点,通过配置use_syslog=1,我们可以把nagios的日志记录到系统日志上(默认为messages),时间的格式也是我们常用的格式:
Jul 19 10:07:55imusic-mon nagios: SERVICE ALERT: ftp-mus01-2.3;S_Apache[9000];OK;SOFT;3;TCP OK - 0.001 second response time on port 9000
但是这样有一问题也随之而来的,那就是messages文件里面的日志太多了,每次查日志都要把nagios的日志过滤出来也不是一件好玩的事。所以决定用syslog-ng的过滤功能把nagios的日志单独记录到一个文件,过程如下:
1、配置nagios.cfg,设置use_syslog=1把日志记录到系统日志
2、配置syslog-ng.conf将nagios的日志单独记录到一个文件
关于syslog-ng,这个建议大家有时间还是把系统自带的syslog换成syslog-ng吧,好处不是一点点,更改也很简单:
-
yum install syslog-ng //安装
-
service syslog stop && service syslog-ng start //停用syslog、启用syslog-ng
-
chkconfig --level 2345 syslog off
-
chkconfig --level 2345 syslog-ng on
2.1 syslog-ng的配置
[root@localhost ~]#vi /etc/syslog-ng/syslog-ng.conf //添加、更改如下条目
----------------------------------------
destination d_nagios { file("/var/log/nagios/nagios.log"); }; //记录到哪个文件
filter f_default { level(info..emerg) and //从messages文件过滤掉nagios的日志
not (facility(mail)
or facility(authpriv)
or facility(cron)
or match("nagios:")); }
filter f_nagios { match("nagios:"); };
log { source(s_sys); filter(f_nagios); destination(d_nagios); };
----------------------------------------
改完成重启syslog-ng
3、配置logrotate把日志按天归档
[root@localhost ~]# vi /etc/logrotate.d/nagios
/var/log/nagios/nagios.log {
daily //按天
dateext //加上日期后缀
missingok
copytruncate //归档后清空原有文件
rotate 365 //保留一年的归档
}
改完后可以用
logrotate -fv /etc/logrotate.d/nagios 强制执行logrotate来测一下有没有正确归档