nagios 邮件报警配置

张映 发表于 2012-04-20

分类目录: 服务器相关

标签:, , ,

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拒绝nagios的报警邮件

qq拒绝nagios的报警邮件

拒绝也不是全部拒绝,能收到邮件,但是延迟比较严重。建议不要用qq邮箱来收邮件。

qq收到的nagios报警邮件

qq收到的nagios报警邮件



转载请注明
作者:海底苍鹰
地址:http://blog.51yip.com/server/1391.html