График трафика на порту Omniswitch по snmp с помощью rrdtools
Потребовалось мониторить трафик на управляющем свиче. Alcatel Omniswitch 6850-24.
Что есть: Сервер на Fedora (в прочем не важно какой линух) c веб сервером и snmp пакетом, управляющий свитч с настроенным snmp.
Создаем скрипт и кидаем его в крон на выполнение каждую минуту. Далее скрипт генерирует файлы .png которые уже можно использовать как вам удобно. Например я зипихиваю их просто в html’ку, дописываю авто обновление страницы и все, мониторинг готов.
Вот собственно и сам скрипт:
#!/bin/bash
RRDTOOL="/usr/bin/rrdtool" //
DATABASE="/var/www/html/rrd/traff.rrd"
IMAGE_PATH="/var/www/html"
TITLE_TEXT='traff'
UNDER_TEXT='traff'
L_MIN=0
L_MAX=
CUM="public"
HOST="10.20.30.40"
ALCGET_IN="ifHCInOctets.1025"
ALCGET_OUT="ifHCOutOctets.1025"
PERIOD=60
NTIN=`/usr/bin/snmpget -v2c -c $CUM $HOST $ALCGET_IN | awk {'print $4'}`
NTOUT=`/usr/bin/snmpget -v2c -c $CUM $HOST $ALCGET_OUT | awk {'print $4'}`
OTIN=`/bin/cat /tmp/traffin0.tmp`
OTOUT=`/bin/cat /tmp/traffout0.tmp`
echo $NTIN > /tmp/traffin0.tmp
echo $NTOUT > /tmp/traffout0.tmp
let " TIN = (NTIN - OTIN) / $PERIOD * 8"
let " TOUT = 0 - ((NTOUT - OTOUT)/ $PERIOD * 8)"
if ( "$TIN" -gt 10000000000 )
then
exit 0
fi
if ( "$TOUT -lt 10000000000 )
then
exit 0
fi
if ! [ -f $DATABASE ]
then
$RRDTOOL create $DATABASE -s $PERIOD \
DS:TIN:GAUGE:600:0:U\
DS:TOUT:GAUGE:600:U:0 \
RRA:AVERAGE:0.5:1:5760 \
RRA:AVERAGE:0.5:6:6720 \
RRA:AVERAGE:0.5:24:7320 \
RRA:AVERAGE:0.5:144:14600
fi
$RRDTOOL update $DATABASE N:$TIN:$TOUT
function DRAW_GRAPHIC
{
NOW_HOUR=`date +%H`
NOW_MIN=`date +%M`
NOW_SEC=`date +%S`
case $2 in
day)
TIME_TEXT="last 24 hours"
;;
week)
TIME_TEXT="last week"
;;
month)
TIME_TEXT="last month"
;;
year)
TIME_TEXT="last year"
;;
esac
$RRDTOOL graph $IMAGE_PATH/$1 \
-s -1$2 \
-e now \
-a PNG \
-v 'traffic 10.20.30.40' \
-t "$TITLE_TEXT [$HOSTNAME] -s $TIME_TEXT" \
-l $L_MIN \
-u $L_MAX \
-r \
-E \
-i \
-R light \
--zoom 1.2 \
-w 1000 \
-h 400 \
-W disnetern \
--grid-dash 1:0 \
DEF:TIN=$DATABASE:TIN:AVERAGE \
DEF:TOUT=$DATABASE:TOUT:AVERAGE \
AREA:TIN#2E8B57:"IN" \
AREA:TOUT#B22222:"OUT" \
COMMENT:"IN=$TIN OUT=$TOUT" \
COMMENT:"Created\:$NOW_HOUR\:$NOW_MIN\:$NOW_SEC"
}
DRAW_GRAPHIC 'traff_d.png' 'day'
DRAW_GRAPHIC 'traff_w.png' 'week'
DRAW_GRAPHIC 'traff_m.png' 'month'
DRAW_GRAPHIC 'traff_y.png' 'year'





Comments
So empty here ... leave a comment!