Несмотря на появление мощных и современных систем мониторинга, MRTG по прежнему остаётся популярным инструментом для мониторинга небольших сетей. Во многом это обусловлено простотой настройки и большими возможностями для расширения с помощью всевозможных скриптов.
Одновременно набирает популярность Network UPS Tool (NUT) - инструмент управления источниками бесперебойного питания, отличающийся широким спектром поддерживаемого оборудования и богатым функционалом. Ну и разумеется с помощью несложных скриптов можно строить графики в MRTG по данным из NUT. Далее будет рассмотрено конкретное решение этой задачи.
Начальные данные: настроенный NUT-сервер по адресу «192.168.12.253», на котором доступен ИБП с именем «main». Для получения данных также необходима авторизация на NUT-сервере: логин: «monitoring», пароль: «P4sSw0rD». Необходимо нарисовать два графика: величины заряда батареи и величины нагрузки на ИБП. Оба значения - в процентах.
Решение заключается в написании скрипта, который будет запрашивать данные у NUT-сервера и отдавать их в нужном формате. Писать будем на Perl, так как для него есть удобная библиотека для взаимодействия с NUT, усановить которую в Debian и Ubuntu можно командой:
apt-get install libups-nut-perl
Скрипт достаточно прост и все данные о ИБП получает в параметрах командной строки. Листинг скрипта:
#!/usr/bin/perl use strict; use warnings; use diagnostics; use Getopt::Long; use UPS::Nut; =usage Все параметры опциональны. Доступные параметры: --name=ups_name (default: default) --host=hostname (default: localhost) --user=username (default: no username) --pass=password (default: empty password) =cut # Значения по умолчанию my $ups_host = "localhost"; my $ups_name = "default"; my $ups_username = ""; my $ups_password = ""; # Получаем параметры GetOptions( "host=s" => \$ups_host, "name=s" => \$ups_name, "user=s" => \$ups_username, "pass=s" => \$ups_password, ); # Подключаемся к NUT-серверу my $ups = new UPS::Nut( NAME => $ups_name, HOST => $ups_host, USERNAME => $ups_username, PASSWORD => $ups_password, ) or die("Can't connect to UPS!\n"); # Получаем данные my $ups_load = $ups->Request("ups.load"); my $ups_batt_charge = $ups->Request("battery.charge"); # Печатаем данные print $ups_load ? "$ups_load\n" : "0\n"; print $ups_batt_charge ? "$ups_batt_charge\n" : ""\n";
Сохраняем скрипт под именем «/usr/local/scripts/mrtg_nut_ups.pl» и переходим к настройке MRTG. Нам надо добавить в конфигурацию следующие строки:
Target[nut_localhost_main]: `/usr/local/scripts/mrtg_nut_ups.pl --host=192.168.12.253 --name=main --user=monitoring --pass=P4sSw0rD` MaxBytes[nut_localhost_main]: 100 Title[nut_localhost_main]: UPS main via NUT on localhost PageTop[nut_localhost_main]: <h1>UPS main via NUT on localhost</h1> AbsMax[nut_localhost_main]: 200 Options[nut_localhost_main]: gauge YLegend[nut_localhost_main]: percent ShortLegend[nut_localhost_main]: % Legend1[nut_localhost_main]: UPS Load Legend2[nut_localhost_main]: Battery charge LegendI[nut_localhost_main]: UPS Load LegendO[nut_localhost_main]: Battery charge
Через некоторое время на графике появятся первые данные. У автора этих строк с бытовым ИБП «IPPON BACK Basic 650VA», питающим домашний сервер график выглядит так:
Подобным образом можно построить графики и других параметров ИБП. Например напряжение в сети и температура ИБП. Полный список доступных параметров можно увидеть в выводе команды:
upsc main@192.168.12.253
На этом всё. Приятной работы!
Ladm 2018-04-21 22:42:38 (#)