nagios监控postfix队列

Note: There is a file embedded within this post, please visit this post to download the file.

前几天公司的邮件系统被内部的一个员工搞的不能收发邮件,原因是因为其在java程序中加入了告警设置。出现告警后会由公司的邮箱向他的163邮箱发送告 警邮件。不想程序写的不严谨,出现了死循环。搞的不停的向163邮箱发邮件,163的反垃圾机制过滤后。所有的邮件发不出去,只能排在队列里。等发现时, 发现队列里已经有15万多个在等待发送的邮件了。结果是:公司老大很生气,邮件系统出问题了都没人知道。为什么不加入nagios监控里。

老大发话了,咱也只能屁颠屁颠的去办了。本来想自己写个插件,不过有现成的为什么不用呢,先去了exchange.nagios.org里找监控postfix队列的插件。相关的插件有几个,具体可以查看页面:http://exchange.nagios.org/index.php?option=com_mtree&task=search&Itemid=74&searchword=postfix ,大致看了,都差不多。正好在搜索时从网上又发现了另外一个脚本,即监控发送内容的多少又监控队列的多少(说白了几个脚本不过是利用mailq和postqueue -p罢了)

#!/bin/bashSTATE_OK=0STATE_WARNING=1STATE_CRITICAL=2STATE_UNKNOWN=3if [ "$#" == "10" ]then#Set variablesarg=${10}w=$2c=$4W=$6C=$8mt="Mail queue is empty"emp=`postqueue -c /etc/$arg -p`if [ "$emp" = "$mt" ]; thenecho "OK : $mt"exitstatus=$STATE_OKelsecrt=`postqueue -c /etc/$arg -p | grep Kbytes | sed -e 's/^.*--.//g' | awk '{print $1}'`mg=`postqueue -c /etc/$arg -p | grep Kbytes | sed -e 's/^.*--.//g' | awk '{print $4}'`#if [[ $mg > $c  ||  $crt > $C ]]if [ "$mg" -gt "$c" -o  "$crt" -gt "$C" ]; thenecho "Critical : Queue has $mg messages in $crt Kbytes, higher then critical limit."exitstatus=$STATE_CRITICALelif [ "$mg" -gt "$w"  -o "$crt" -gt "$W" ]#[[ $mg < $c  ||  $crt < $C ]]thenecho "Warning : Queue has $mg messages in $crt Kbytes, higher then warning limit."exitstatus=$STATE_WARNING        elseecho "OK : Mail queue has $mg messages in $crt Kbytes."exitstatus=$STATE_OKfifielseecho " "echo "Please provide parameters to work with."echo "Help : ./check_postque -w 20 -c 30 -W 1000000 -C 3000000 -p postfix"echo "Where :"echo "       -w = Request Warning limit"echo "       -c = Request Critical limit"echo "       -W = Message size Warning limit"echo "       -C = Message size Critical limit"echo "       -p = Postfix instance name"echo " "fiexit $exitstatus

注:脚本刚拿来用时,是有问题的,我把其中出问题的部分的判断已经改好了,可以直接拿走使用。

接着修改邮件服务器的nrpe.cfg文件,增加如下command监控:

command[check_postque]=/App/nagios/libexec/check_postque -w 50-c 100 -W 3000000 -C 5000000 -p postfix#队列数大于50告警,100严重告警。邮件大小总计300M告警,邮件大小总计500M严重告警

注:我的nagios的程序是安装在/App/nagios目录的,如果你安装的其他目录,上面的command中的路径也需要做相应的修改,不然会出问题的。

然后,kill掉nrpe进程,并重新启动/App/nagios/bin/nrpe -c /App/nagios/etc/nrpe.cfg -d

在nagios中心主控端也需要添加相应的一条监控service

define service{        use                             local-service,srv-pnp        host_name                       XXX.XX.XX.XX        service_description             check_postque        check_command                   check_nrpe!check_postque        }

我上面把自己的IP给改成了XXX,具体改成自己的就好了,use也需要nagios之前的配置改。

操作完成后,在主控端通过/App/nagios/bin/nagios -v /App/nagios/etc/nagios.cfg查看是不是配置文件有问题,如果没问题就可以进入/etc/init.d目前通过./nagios reload重新加载配置文件了。

如果有问题,也可以通过在主控端通过

./check_nrpe -H?XXX.XX.XX.XX -c check_postque查看是不是有输出来检测nrpe通信是不是有问题。

我这边因为没有邮件在发送,所以得到的结果是OK : Mail queue is empty。

nagios监控postfix队列

相关文章:

你感兴趣的文章:

标签云: