Несмотря на появление мощных и современных систем мониторинга, 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 (#)