nagios 邮件报警配置
nagios最主要优点就是在于它的报警功能,下面讲解一下用nagios来发邮件警告。
一,配置contacts.cfg
vim /etc/nagios/objects/contacts.cfg define contact{ //30行 contact_name nagiosadmin use generic-contact alias Nagios Admin email xxxx@163.com //这里改成自己的邮箱 }
二,配置nagios.cfg和localhost.cfg
vim /etc/nagios/nagios.cfg enable_notifications=1 //807行,开启报警 上面的总的开启也就是nagios装的所有插件,出现问题都会报警 vim /etc/nagios/objects/localhost.cfg define service{ //以processes为例 use local-service ; Name of service template to use host_name localhost service_description Total Processes check_command check_local_procs!250!400!RSZDT notifications_enabled 1 }
如果总的没有开启的话,localhost.cfg里面可以一个一个配置,这样比较麻烦。如果总的开启了,里面有些不想开启就可以notifications_enabled设置成0这样,这个就不用发报警,其他的发报警。
三,添加发报警用户
[root@localhost objects]# cyradm -u cyrus localhost --auth plain verify error:num=18:self signed certificate Password: IMAP Password: localhost> cm nagios localhost> quit
为什么要添加一个邮件用户nagios呢?可以看一下nagios发邮件的配置文件commands.cfg
define command{ command_name notify-host-by-email command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$ }
从上面/bin/mail我们可以看出,它是用了系统mail命令来发邮件的,并且没有指定用户,发邮件时会当前的默认用户,nagios的启动用户默认是nagios,可以在主配置nagios.cfg的123行找到nagios_user=nagios,所以要加一个nagios邮件用户,当然你可以把启动用户改掉。
四,重启动一下nagios
/etc/init.d/nagios restart
五,测试nagios是不是可以发邮件
如果服务器一切正常,当然是不会发报警邮件的,但是重起肯定会发邮件的。重启一下看看是不是能收到邮件。如果收不到邮件,是什么原因呢?您可以按照以下几步来排查。
1,查看邮件服务器是不是启动了,nagios服务器和客户端是不是启动了。你可以通过netstat,或者ps去查。
2,如果都已经正常启动的话,手动敲命令来发封邮件是不是能收到,因为nagios也是调用了mail命令来发邮件的,确保这一步是通的,收件方是能收到邮件的。例如:
mail -s '看一下' 95219454@qq.com < /etc/imapd.conf
3,如果用mail命令来发邮件能收到邮件,而nagios发的报警邮件还是收不到怎么办呢。这种情比较郁闷,并且我遇到了。查看一下mail的log日志文件/var/log/maillog,我当时用的是qq邮箱来收邮件的,发现qq的邮件服务器会拒绝。看下图
拒绝也不是全部拒绝,能收到邮件,但是延迟比较严重。建议不要用qq邮箱来收邮件。