Поиск по сайту

    Мои услуги на Kwork

График трафика на порту Omniswitch по snmp с помощью rrdtools

Потребовалось мониторить трафик на управляющем свиче. Alcatel Omniswitch 6850-24.
Что есть: Сервер на Fedora (в прочем не важно какой линух) c веб сервером и snmp пакетом, управляющий свитч с настроенным snmp.
Создаем скрипт и кидаем его в крон на выполнение каждую минуту. Далее скрипт генерирует файлы .png которые уже можно использовать как вам удобно. Например я зипихиваю их просто в html’ку, дописываю авто обновление страницы и все, мониторинг готов.

traff_samlpe

Вот собственно и сам скрипт:

 #!/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!

Добавить комментарий

Sidebar



Яндекс.Метрика Рейтинг@Mail.ru