Отслеживание температуры при помощи MRTGВо многих отраслях современной промышленности периодически появляется необходимость поддерживать в некотором помещении заданную температуру и отслеживать все её изменения. При выходе температуры за рамки нужно срочно включить кондиционер (или обогреватель) и оповестить о возникновении нештатной ситуации обслуживающий персонал. Помочь в решении этой задачи может устройство NetPing TS v2 , производства компании «Алентис Электроникс», с подключенными к нему датчиками TS1 и TS2 того же производителя. Далее будет приведено описание примера такого решения. Итак, начальные условия:
Приступаем к решению поставленной задачи. Полностью нашим потребностям удовлетворяем система мониторинга MRTG, написанная на Perl. Однако прежде чем продолжить - расскажем о ней подробнее: MRTG расшифровывается как Multi Router Traffic Grapher.Изначально эта система создавалась исключительно для мониторинга сетевых интерфейсов и наследие этого просматривается до сих пор: например на одном графике нельзя отображать более двух показателей, именуемых входным и выходным трафиком. Однако самое главное что устройство умеет опрашивать устройства по SNMP и поддержку триггеров, которые включаются при выходе отслеживаемых параметров за допустимые рамки. Чтобы не уходить далеко от терминологии, используемой в MRTG мы будем именовать наши температуры "входом" и "выходом". Причём "входом" мы будем называть температуру на улице, а "выходом" - температуру в помещении. Приступаем к развёртыванию нашего решения. Для начала установим mrtg: apt-get install mrtg Далее нам понадобиться "Описание встроенного ПО для DKSF 50.4-08 NetPing TS v2", которое можно найти на этой странице. Конкретно нас интересуют oid'ы, по которым можно получить текущую температуру на датчиках. Для тех, кому лень читать документацию приведём их здесь:
Теперь приступаем к конфигурированию MRTG. Для этого создадим файл /etc/mrtg.cfg, следующего содержания: # Директория, куда будут складываться графики WorkDir: /var/www/mrtg # Директория, где будут создаваться временные файлы # Её нужно указывать только если вы будете использовать триггеры ThreshDir: /tmp
# Эти параметры задают цвета на страничках и графиках. Они не обязательны, но улучшают внешний вид:) Background[_]: #EEEEEC Colours[_]: GREEN#4E9A06,BLUE#3465A4,ORANGE#CE5C00,ORANGE#CE5C00
# Отключаем поддержку IPv6 (она нам ненужна) EnableIPv6: no
# Отключаем загрузку MIB-файлов. В этом случае MRTG не будет запрашивать у устройства sysName и sysUptime (нам это не нужно). NoMib2: Yes
# Описываем нужный график # В параметра Target нужно описать через амперсанд два oid (входной и выходное), потом через двоеточие SNMP Community, # И наконец после '@' - хост. Target[netping]: 1.3.6.1.4.1.25728.50.8.1017&1.3.6.1.4.1.25728.50.8.1005:SWITCH@192.168.2.10
# Изначально тут указывается пропускная способность канала, но мы используем это значение в качестве максимальной температуры # На этом уровне на графиках будет нарисована красивая красная пунктирная линия MaxBytes[netping]: 30
# Перечисляем параметры этого графика # - gauge указывает что нужно рисовать график абсолютных величин параметров а не скоростей их изменения # - nopercent указывает на отсутствие необходимости считать отношение текущей величины к MaxBytes # - nobanner указывает что нам не нужен логотип MRTG внизу страницы с графиками Options[netping]: gauge,nopercent,nobanner
# Заголовок (html-title) страницы с графиками Title[netping]: Temperature
# Надпись вверху страницы PageTop[netping]:
# Короткие описания графиков LegendI[netping]: degree of celcius (external) LegendO[netping]: degree of celcius (internal)
# Развёрнутые описания графиков Legend1[netping]: external temperature Legend2[netping]: internal temperature
# Единица измерения на графиках ShortLegend[netping]: degree Term statistics
Подробнее о конфигурации MRTG можно прочитать в официальной документации. Если WorkDir не существует - её нужно создать: mkdir -p /var/www/mrtg Через некоторое время в директории /var/www/mrtg появится файл netping.html, и небольшой набор сопутствующих файлов. Если открыть этот файл в браузере - можно просматривать графики, которые обновляются каждые пять минут. Для доступа к этим графикам по сети удобно будет поднять небольшой web-сервер. Например thttpd. Установим его: apt-get install thttpd Далее приведём файл /etc/thttpd/thttpd.conf к следующему виду: port=80 dir=/var/www/mrtg chroot user=www-data cgipat=/cgi-bin/* throttles=/etc/thttpd/throttle.conf logfile=/var/log/thttpd.log charset=utf-8
И перезапустим web-сервер: invoke-rc.d thttpd restart После этого графики можно просматривать открывая в браузере страницу http://192.168.2.1/netping.html. Выглядеть она будет примерно вот так:
Теперь нам нужно настроить триггер, который будет включаться при достижении температуры в помещении отметки в 30 градусов и выше, и выключаться при возврате оной в норму. Для этого снова обратимся к документации MRTG и внимательно прочитаем секцию «THRESHOLD CHECKING». Конкретно нас должны заинтересовать параметры: ThreshMaxO, ThreshProgO и ThreshProgOKO. Приведём краткое описание этих параметров:
В качестве программ, обрабатывающих переключение состояний триггера, можно использовать скрипты. Сейчас напишем два скрипта, которые просто будут вести логи событий. Первый скрипт (/root/scripts/netping_bad.sh): #!/bin/sh
LOGFILE="/tmp/netping-bad.log"
echo ==================== >> ${LOGFILE} date +"%Y/%m/%d %H:%M:%S" >> ${LOGFILE} echo "Graph: ${1}" >> ${LOGFILE} echo "Threshold value: ${2}" >> ${LOGFILE} echo "Current value: ${3}" >> ${LOGFILE}
Второй скрипт (/root/scripts/netping_good.sh):
#!/bin/sh
LOGFILE="/tmp/netping-good.log"
echo ==================== >> ${LOGFILE} date +"%Y/%m/%d %H:%M:%S" >> ${LOGFILE} echo "Graph: ${1}" >> ${LOGFILE} echo "Threshold value: ${2}" >> ${LOGFILE} echo "Current value: ${3}" >> ${LOGFILE}
Теперь добавим в файл конфигурации MRTG следующие строки: ThreshMaxO[netping]: 29 ThreshProgO[netping]: /root/scripts/netping_bad.sh ThreshProgOKO[netping]: /root/scripts/netping_good.sh
Всё! Теперь будут вестись логи всех критических ситуаций. Модифицировать скрипты для выполнения других действий (например включенийя/выключения кондиционера) мы предоставим читателю. На этом всё. Приятной работы! :) Вадим Калинников |
