nagios监控postfix队列

前几天公司的邮件系统被内部的一个员工搞的不能收发邮件,原因是因为其在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/bash
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
if [ "$#" == "10" ]
then
#Set variables
arg=${10}
w=$2
c=$4
W=$6
C=$8
mt="Mail queue is empty"
emp=`postqueue -c /etc/$arg -p`
if [ "$emp" = "$mt" ]; then
echo "OK : $mt"
exitstatus=$STATE_OK
else
crt=`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" ]; then
echo "Critical : Queue has $mg messages in $crt Kbytes, higher then critical limit."
exitstatus=$STATE_CRITICAL
elif
 [ "$mg" -gt "$w"  -o "$crt" -gt "$W" ]
#[[ $mg < $c  ||  $crt < $C ]]
then
echo "Warning : Queue has $mg messages in $crt Kbytes, higher then warning limit."
exitstatus=$STATE_WARNING
        else
echo "OK : Mail queue has $mg messages in $crt Kbytes."
exitstatus=$STATE_OK
fi
fi
else
echo " "
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 " "
fi
exit $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。




本站的发展离不开您的资助,金额随意,欢迎来赏!

You can donate through PayPal.
My paypal id: itybku@139.com
Paypal page: https://www.paypal.me/361way

分类: 开源软件 标签: ,
  1. 本文目前尚无任何评论.