Monitor traffic


Monitoring plugin:
[root@RHEL5 ~]# tail -n 2 /etc/nagios/resource.cfg

#Add by Kingcraft
$USER5$=/usr/local/nagios/customexec


[root@RHEL5 ~]# vi /usr/local/nagios/customexec/check_traffic.sh

#!/bin/sh
# Author: zhai_kang,20131029
#snmpwalk -v 2c 172.17.27.1 -c VIP-B ifInOctets.10024
#check_traffic.sh -v 2c 172.17.27.1 -c VIP-B ifInOctets.10024 -W 400 -C 600
#unit:KB/s
#Parameter
VER=$2
IP=$3
COMM=$5
OID=$6
WARN=$8
CRIT=${10}
#In flow(KB/s)
In1=`snmpwalk -v $VER $IP -c $COMM $OID | awk '{print $NF}'`
sleep 1
In2=`snmpwalk -v $VER $IP -c $COMM $OID | awk '{print $NF}'`
if [[ $In1 -gt $In2 ]]
then
    Ina=$(($In1 - $In2))
else
    Ina=$(($In2 - $In1))
fi
if [[ $Ina -ge 1024 ]]
then
    In="`echo "scale=3;$Ina/1024" | bc`"
elif [[ `echo 1.024 $Ina | awk '{if($1<=$2)print 1;else print 0}'` -eq 1 ]]
then
    In="0`echo "scale=3;$Ina/1024" | bc`"
else
    In=0
fi
#Obtain Return Data
SIGN_C=`echo $CRIT $In | awk '{if($1<=$2)print 1;else print 0}'`
SIGN_W=`echo $WARN $In | awk '{if($1<=$2)print 1;else print 0}'`
SIGN_O=`echo 0 $In | awk '{if($1<=$2)print 1;else print 0}'`
if [[ $SIGN_C -eq 1 ]]
then
    line=`echo "SNMP Critical : In = $In KB/s"`
        RC=2
elif [[ $SIGN_W -eq 1 ]]
then
    line=`echo "SNMP Warning : In = $In KB/s"`
        RC=1
elif [[ $SIGN_O -eq 1 ]]
then
    line=`echo "SNMP OK : In = $In KB/s"`
        RC=0
else
    line="SNMP Unknown"
        RC=3
fi
echo $line \| Interface_Traffic="$In;$WARN;$CRIT"
exit $RC



Custom drawing templates:
[root@RHEL5 ~]# vi /usr/local/pnp4nagios/share/templates/check_traffic.php

<?php
#-----The Color of The Three Primary Colors-----
#               red             #FF0000
#               green           #00FF00
#               blue            #0000FF
#               yellow          #FFFF00
#               black           #000000
#               deepred         #330000
#------------------Image Title------------------
$opt[1] = "--title \"Interface traffic For $hostname / $servicedesc\" ";
#-------------Interface Traffic------------
$def[1] =  "DEF:var1=$RRDFILE[1]:$DS[1]:AVERAGE " ;
#$def[1] .= "HRULE:$WARN[1]#FFFF11 ";
$def[1] .= "LINE1:var1#FF0000:\"In \" " ;
$def[1] .= "GPRINT:var1:MIN:\"%3.4lg KB/s MIN \\t\" ";
$def[1] .= "GPRINT:var1:MAX:\"%3.4lg KB/s MAX \\t\" ";
$def[1] .= "GPRINT:var1:AVERAGE:\"%3.4lg KB/s AVERAGE \\n\" ";
#-------------5 Minutes Average Load-----------
#$def[1] .=  "DEF:var2=$RRDFILE[2]:$DS[2]:AVERAGE " ;
#$def[1] .= "HRULE:$WARN[1]#FFFF11 ";
#$def[1] .= "LINE2:var2#00FF00:\"5-Mins \" " ;
#$def[1] .= "GPRINT:var2:MIN:\"%3.4lg %s$UNIT[1] MIN \\t\" ";
#$def[1] .= "GPRINT:var2:MAX:\"%3.4lg %s$UNIT[1] MAX \\t\" ";
#$def[1] .= "GPRINT:var2:Average:\"%3.4lg %s$UNIT[1] AVERAGE \\n\" ";
#------------15 Minutes Average Load-----------
#$def[1] .=  "DEF:var3=$RRDFILE[3]:$DS[3]:AVERAGE " ;
#$def[1] .= "LINE3:var3#000000:\"15-Mins \" " ;
#$def[1] .= "GPRINT:var3:MIN:\"%3.4lg %s$UNIT[1] MIN \\t\" ";
#$def[1] .= "GPRINT:var3:MAX:\"%3.4lg %s$UNIT[1] MAX \\t\" ";
#$def[1] .= "GPRINT:var3:AVERAGE:\"%3.4lg %s$UNIT[1] AVERAGE \\n\" ";
?>



Define the monitoring command:
[root@RHEL5 ~]# vi /etc/nagios/objects/commands.cfg

define command{
        command_name    check_traffic
        command_line    $USER5$/check_traffic.sh -v $ARG1$ $HOSTADDRESS$ -c $ARG2$ $ARG3$ -W $ARG4$ -C $ARG5$
        }


[root@RHEL5 ~]# vi /etc/nagios/objects/templates.cfg

define host{
        name            host-pnp
        register        0
        action_url     /pnp4nagios/graph?host=$HOSTNAME$
    }
define service{
        name            srv-pnp
        register        0
        action_url      /pnp4nagios/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
    }



Definition monitor file:
[root@RHEL5 ~]# vi /etc/nagios/Cisco/HYQH-SH.cfg

define host{
        use             generic-switch,host-pnp
        host_name       HYQH.SH
        alias           HYQH.SH
        address         172.17.21.250
        }
define service{
        use                     generic-Flows,srv-pnp
        host_name               HYQH.SH
        service_description     Fa 0/0
        check_command           check_traffic!2c!SH!ifInOctets.1!10240!20480
        }



Restart:
[root@RHEL5 ~]# service nagios restart




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章