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

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

Мониторинг температуры на Dell Force10 по SNMP + WEB

temp_force_4temp_forcetemp_force_2temp_force_3

Итак, есть у меня железка, под названием Dell Force10. Потребовалось мониторить, как колеблется на ней температура в течении дня, времени суток, времени года ( т.к. железка стоит в железном ящике на улице). Поэтому включив на ней snmp, написал небольшой скрипт на bash, который закинул в cron:

*/10    *       *       *       *       /home/disnetern/force_temp.sh > /dev/null 2>&1

Каждые 10 минут скрипт опрашивает температуру 6-ти датчиков ( по 1 на каждой плате), потом с помощью rrdtool собираем эти данные в базу и рисуем 4 графика: суточный, недельный, месячный и годовой. Формируется 4 файла .png с графиками:

#!/bin/bash

IP="10.20.30.238" //ip коммутатора
PASS="public"     //community
MIB=".1.3.6.1.4.1.6027.3.8.1.2.1.1.5"   // Собственно сам MIB для force10 температуры датчиков

M0=`/usr/bin/snmpwalk -v 2c -c $PASS $IP $MIB.1 | cut -d : -f4 | cut -c 2-3`
M1=`/usr/bin/snmpwalk -v 2c -c $PASS $IP $MIB.2 | cut -d : -f4 | cut -c 2-3`
P0=`/usr/bin/snmpwalk -v 2c -c $PASS $IP $MIB.3 | cut -d : -f4 | cut -c 2-3`
P1=`/usr/bin/snmpwalk -v 2c -c $PASS $IP $MIB.4 | cut -d : -f4 | cut -c 2-3`
M2=`/usr/bin/snmpwalk -v 2c -c $PASS $IP $MIB.5 | cut -d : -f4 | cut -c 2-3`
M3=`/usr/bin/snmpwalk -v 2c -c $PASS $IP $MIB.6 | cut -d : -f4 | cut -c 2-3`

RRDTOOL="/usr/bin/rrdtool"
DATABASE="/var/www/html/rrd/temp.rrd"
IMAGE_PATH="/var/www/html"

TITLE_TEXT='Temp Force 10'
UNDER_TEXT='Temperature'
L_MIN=0
L_MAX=99

PERIOD=600


if ! [ -f $DATABASE ]                                       //Формируем базу для сбора значений температуры
        then
                $RRDTOOL create $DATABASE -s $PERIOD \
                DS:M0:GAUGE:6000:0:99 \
                DS:M1:GAUGE:6000:0:99 \
                DS:P0:GAUGE:6000:0:99 \
                DS:P1:GAUGE:6000:0:99 \
                DS:M2:GAUGE:6000:0:99 \
                DS:M3:GAUGE:6000:0:99 \
                RRA:AVERAGE:0.5:1:576  \
                RRA:AVERAGE:0.5:6:672  \
                RRA:AVERAGE:0.5:24:732  \
                RRA:AVERAGE:0.5:144:1460
        fi
#LOAD=$M0:$M1:$P0:$P1:$M2:$M3
$RRDTOOL update $DATABASE N:$M0:$M1:$P0:$P1:$M2:$M3        //Запихиваем значения в базу

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 'celcium' \
        -t "$TITLE_TEXT [$HOSTNAME] -s $TIME_TEXT" \
        -l $L_MIN \
        -u $L_MAX \
        -r \
        -E \
        -i \
        -R light \
        --zoom 1.2 \
        -w 800 \
        -h 800 \
        DEF:M0=$DATABASE:M0:AVERAGE \
        DEF:M1=$DATABASE:M1:AVERAGE \
        DEF:P0=$DATABASE:P0:AVERAGE \
        DEF:P1=$DATABASE:P1:AVERAGE \
        DEF:M2=$DATABASE:M2:AVERAGE \
        DEF:M3=$DATABASE:M3:AVERAGE \
        LINE3:M0#55cc00:"LC 0" \
        LINE3:M1#002233:"LC 1" \
        LINE3:P0#cc1155:"RPM 0" \
        LINE3:P1#22bb11:"RPM 1" \
        LINE3:M2#aa3322:"LC 2" \
        LINE3:M3#bb44bb:"LC 3" \
        COMMENT:"                      " \
        COMMENT:"Last\: LC0=$M0 LC1=$M1" \
        COMMENT:"RPM0=$P0 RPM1=$P1" \
        COMMENT:"LC2=$M2 LC3=$M3"

}

DRAW_GRAPHIC 'force_d.png' 'day'
DRAW_GRAPHIC 'force_w.png' 'week'
DRAW_GRAPHIC 'force_m.png' 'month'
DRAW_GRAPHIC 'force_y.png' 'year'

Теперь получившиеся 4 графика закидываем в html страничку, и пихаем в папку с web-сервером с авто обновлением страницы:

<html>
<head>
<meta http-equiv="Refresh" content="60" />
<title> RRD graphics Temperature fo Force 10</title>
</head>

<body bgcolor='#ccddcc'>
<h2> <font face='Arial'> Temperature</font></h2>
<img src='force_d.png'> <br>
<img src='force_w.png'> <br>
<img src='force_m.png'> <br>
<img src='force_y.png'> <br>

</body>
</html>

Comments

So empty here ... leave a comment!

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

Sidebar



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