NUT — Network UPS Tools

Наконец-то установил более-менее приличный UPC в стойку (Powercom KIN-2200AP-RM). Быстренько прицепил его COM-портом к серверу, и начал искать софтину, которая умела бы с ним работать. Выбор остановил на NUT — набор утилит, которые обеспечивают общий интерфейс для мониторинга и администрирование UPS.

Устанавливать будем, конечно же, из портов:

# cd /usr/ports/sysutils/nut && make install clean && rehash

Мой набор опций оказался следующим:

Options for nut 2.4.1_3

[X] SERIAL  SERIAL support
[ ] USB     USB support
[X] SNMP    SNMP support
[X] NEON    NEON XML/HTTP support
[ ] PDU     Powerman PDU support
[ ] HAL     HAL support
[ ] IPV6    IPV6 support
[X] CGI     Web CGI interface

Приступаем к настройке. Для начала создадим необходимые каталоги для драйверов и сервера, выставим права:

# mkdir -p /var/state/ups
# chmod 0770 /var/state/ups
# chown uucp:wheel /var/state/ups

Далее необходимо определиться, какой драйвер будет использоваться для данного UPS:

# cat /usr/local/etc/nut/driver.list | grep Powercom«Powercom» «SMK» «» «megatec»
«Powercom» «SXL» «» «megatec»
«Powercom» «ULT» «» «megatec»
«Powercom» «Trust 425/625» «» «powercom»
«Powercom» «Advice Partner/King Pr750» «» «powercom»
«Powercom» «Black Knight PRO» «» «powercom»
«Powercom» «King PRO» «» «powercom»
«Powercom» «Imperial» «» «powercom»
«Powercom» «Vanguard 6000» «» «megatec»

В моем случае нужно использовать драйвер «powercom», поскольку KIN относится к серии King PRO.

Теперь пора ознакомиться с конфигурационными файлами NUT. Все они находятся в директории /usr/local/etc/nut.

Назначение:

ups.conf — настройки UPS драйвера для сбора данных
upsd.conf — настройка основного демона upsd для Network UPS Tools
upsd.users — контроль доступа к UPS демону (профили пользователей)
upsmon.conf — настройки монитора UPS демона

Теперь по порядку займемся настройкой каждого из конфигурационных файлов.

ups.conf

Необходимо добавить в конфигурационный файл UPS и его настроки подключения.

# cd /usr/local/etc/nut && cp ups.conf.sample ups.conf

В результате нехитрых манипуляций, получим следующий результат:

# cat /usr/local/etc/nut/ups.conf
[Powercom]
driver = powercom
port = /dev/cuad0
desc = «KIN-2200AP-RM»
type = KIN

Более детально о каждой из опций:

  • [ups_name] — имя используется как адрес вашего UPS. Вы можете его изменить на любое произвольное имя.
  • driver — драйвер, используемый для работы с UPS.
  • port — порт, на котором висит UPS
  • desc — описание устройства (так, на всякий случай, чтобы не забыть).
  • sdorder — необязательный элемент. При наличии нескольких UPS подключенных к серверу можно выключать в определенном порядке. используя upsdrvctl можно выключить все 0s или 1s, 2s и тд. Для исключения последовательной остановки используйте -1.
  • nolock — необязательный элемент, его не рекомендуется использовать в его этом конфиге. Он служит для отключения блокировки порта при пользовании утилитой.
  • maxstartdelay — необязательный элемент. Может быть, заданна как глобальная переменная выше вашего первого UPS. Это значение определяет, сколько upsdrvctl будет ожидать окончания запуска драйвера. Данная возможность предоставляет стабильность в работе. Значение по умолчанию равно 45 секундам.
  • cable — Если драйвер UPS требует дополнительных параметров, вы можете указать их здесь. Это индекс вашего кабеля и вы можете посмотреть его тут. Вы можете не указывать это значение, если ваше подключение к UPS стандартно.

Допускается использование дополнительных опций, исходя из специфики оборудования (необходимо смотреть маны по конкретно используемому драйверу). В моем случае не совпадал тип с тем, который используется по умолчанию, соответственно пришлось конкретизировать. Значения по умолчанию для драйвера Powercom:

  • linevoltage = 230
  • manufacturer = PowerCom
  • modelname = Unknown
  • serialnumber = Unknown
  • type = Trust

upsd.conf

upsd отвечает за передачу данных от драйвера клиентским программам в сети. upsd должен находится под управлением и по возможности, как единственный источник состояния и мониторинга клиентов, таких как upsmon. upsd использует этот файл для контроля доступа к серверу и для установки других значений различных конфигурации. Этот файл содержит подробные сведения об управлении доступом, таким образом, обеспечивается безопасность.

Создание файла:

# cp upsd.conf.sample upsd.conf

Редактируем до следующего состояния:

# cat upsd.conf
LISTEN 127.0.0.1 3493
LISTEN 195.3.159.250 3493

Доступные опции:

  • MAXAGE — по умолчанию 15 секунд. Это частота обновления данных клиентов после остановки драйвера UPS. Следует использовать только в том случае, если у вас трудности с обновлением данных.
  • LISTEN

    [ ]

    — здесь указывается адрес и порт 3493 (по умолчанию) для прослушивания подключений.

  • MAXCONN — по умолчанию используется 1024 подключений. Каждый UPS, каждого LISTEN адреса и каждого клиента считается как одно подключение. Если на сервере заполнятся количество подключений, он больше не будет принимать новых входящих клиентских подключений.

upsd.users

Контроль доступа до UPS-демона (профили пользователей). Именно в этом файле вы указываете, кто и в какой мере будет контролировать и работать с утилитой. Для начала создадим этот файл:

# cp upsd.users.sample upsd.users

Правим конфиг до следующего состояния:

# cat upsd.users
[admin]
password = adminpass
actions = SET
instcmds = ALL[monmaster]
password = masterpass
upsmon master[monslave]
password = slavepass
upsmon slave

Теперь более подробно о доступных опциях.

Значения:

  • password — пароль пользователя
  • allowfrom — откуда разрешено подключатся

Каждый UPS монитор может определяться как один из трех возможных типов:

  • upsmon master — полные полномочия управлением питания подключенных к системе UPS под управлением upsmon, эта система отвечает за выключение разряженного аккумулятора. Выключение происходит после безопасного выключения всех Slave систем. Если ваш UPS подключен непосредственно к системе через последовательный порт, то для upsmon системы следует определить этот UPS как Master.
  • upsmon slave — эта система, под управлением upsmon и она не выключается непосредственно. Операционная система будет выключена перед отключением питания Master. Используйте этот режим при запуске монитора на других компьютерах работающих на том же UPS. И очевидно, что только один сервер может быть подключен к последовательному порту на UPS, коим будет является Master. Все остальные сервера будут Slave.
  • upsmon monitor-only — при этом режиме будут создаваться уведомления о состоянии или изменении работы батареи, переключении на линию и т.д., но не завершать работу системы.
  • actions — Действия пользователя с применением upsd.
    •  SET — изменить значения определенных переменных в UPS
    •  FSD — установка флага «принудительного выключения» для UPS
  • instcmds — разрешения пользователю на инициирование конкретных команд. Применяя «ALL» вы разрешаете использовать все команды, Существует множество команд выполните ‘upscmd -l’ чтобы увидеть, что ваше оборудование поддерживает. Вот, к примеру, несколько команд.
    • test.panel.start — старт теста передней панели
    • test.battery.start — старт теста батареи
    • test.battery.stop — остановка теста батареи
    • calibrate.start — запуск калибровки батареи
    • calibrate.stop — остановка калибровки батареи

upsmon.conf

upsmon предоставляет основные функции, которая собирается найти в программе мониторинга UPS, например это безопасное завершений работы при сбое питания. В многоуровневой схеме утилиты NUT это клиент. Создадим файл конфигурации:

# cp upsmon.conf.sample upsmon.conf

Редактируем конфиг до следующего состояния:

# cat upsmon.conf
MONITOR Powercom@localhost 1 monmaster masterpass master
MINSUPPLIES 1
SHUTDOWNCMD «/sbin/shutdown -p now»
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
NOTIFYFLAG ONLINE SYSLOG+WALL
NOTIFYFLAG ONBATT SYSLOG+WALL
NOTIFYFLAG LOWBATT SYSLOG+WALL
NOTIFYFLAG SHUTDOWN SYSLOG+WALL
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5

Итак, мы добавили monitir, формат записи которого следующий:

MONITOR system powervalue username password type

Значение опций:

  • MINSUPPLIES — указываем количество блоков питания которые должны получать мощность сохраняя систему запущенной. Большинство систем имеют один БП. Но мощные сервера, например HP NetServer LH4, могут работать с 2 из 4 БП и ему нужно ставить 2.
  • SHUTDOWNCMD — upsmon выполняет эту команду, когда системе необходимо выключить.
  • NOTIFYCMD — upsmon отправляет сообщение при происшествиях.
  • POLLFREQ — опрос мониторами с частотой (измеряется в секундах) для обычной деятельности. Вы можете отрегулировать это частоту опроса, чтобы upsmon не “зашумлял” вашу сеть, но не вносите слишком большие значения тк. оно может пропустить отключение питания.
  • POLLFREQALERT — опрос UPS с частотой в секундах. Можно сделать значение поменьше, чем POLLFREQ для лучшей чувствительности работы батареи.
  • HOSTSYNC — как долго upsmon будет ждать перед переходом к следующему upsmon. master upsmon использует это число при ожидании slaves чтобы отключиться после того как он установил флаг принудительное завершение работы (FSD). И если slaves не отключаться после этого тайм аута, то выключение продолжится без них.
  • DEADTIME — интервал ожидания перед объявлением статуса UPS как «мертвый». upsmon требует, чтобы UPS предоставлял свою статус информацию, каждые несколько секунд (см. POLLFREQ и POLLFREQALERT). Если статус загрузки, UPS помечен fails. И если оно остается fails более чем DEADTIME секунд, то UPS помечается «мертвый».
  • POWERDOWNFLAG — флаг файла для форсирования завершения работы UPS в master системе.
  • NOTIFYMSG — изменение сообщения, отправленные upsmon при возникновении определенных событий.
  • NOTIFYFLAG — изменение поведения upsmon при возникновении событий NOTIFY.
  • RBWARNTIME — предупреждение замены аккумулятора в секундах.
  • NOCOMMWARNTIME — предупреждение по времени при не общении к UPS в секундах.
  • FINALDELAY — процент батареи, при котором происходит завершение работы системы.

С конфигурационными файлами разобрались. Теперь проверим права на файлы и каталоги. Владельцем /var/db/nut должен быть пользователь uucp, права на выставлены на 0750:

# ls -ld /var/db/nut/
drwxr-x— 2 uucp uucp 512 24 апр 04:50 /var/db/nut/

Потом устанавливаем необходимые права на конфигурационные файлы. Условия — пользователь uucp должен иметь доступ на чтение:

# chown uucp:uucp upsd.conf upsd.users upsmon.conf
# chmod 0640 upsd.conf upsd.users upsmon.conf

Кажется ничего не забыли… Пробуем запустить сервис. Добавляем NUT в /etc/rc.conf и даем команду запуска для сервисов:

# echo ‘### Network UPS Tools’ >> /etc/rc.conf
# echo ‘nut_enable=»YES»‘ >> /etc/rc.conf
# echo ‘nut_upsmon_enable=»YES»‘ >> /etc/rc.conf
# echo ‘nut_upslog_enable=»YES»‘ >> /etc/rc.conf
# /usr/local/etc/rc.d/nut start
Network UPS Tools — UPS driver controller 2.4.1
Network UPS Tools — PowerCom protocol UPS driver 0.12 (2.4.1)
Starting nut.
Network UPS Tools upsd 2.4.1
listening on 195.3.159.250 port 3493
listening on 127.0.0.1 port 3493
Connected to UPS [Powercom]: powercom-Powercom
# sh /usr/local/etc/rc.d/nut_upsmon start
Starting nut_upsmon.
Network UPS Tools upsmon 2.4.1
UPS: Powercom@localhost (master) (power value 1)
Using power down flag file /etc/killpower
# sh /usr/local/etc/rc.d/nut_upslog start
Starting nut_upslog.
Network UPS Tools upslog 2.4.1
logging status of myups@localhost to /var/log/ups.log (300s intervals)

Кажется все в порядке. На всякий случай, проверим:

# ps -ax | grep nut
85110 ?? Ss 0:01,53 /usr/local/libexec/nut/powercom -a Powercom
# ps -ax | grep ups
90340 ?? Ss 0:00,02 /usr/local/sbin/upsd
90534 ?? Is 0:00,00 /usr/local/sbin/upsmon localhost
90535 ?? S 0:00,00 /usr/local/sbin/upsmon localhost
90551 ?? Is 0:00,00 /usr/local/bin/upslog -s myups@localhost -l /var/log/ups.log -i 300

Все замечательно, сервисы запущены, работают и ведутся логи. Теперь подключимся к UPS для проверки его статуса:

# upsc Powercom@localhost
battery.charge: 100.0
driver.name: powercom
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/cuad0
driver.parameter.type: KIN
driver.version: 2.4.1
driver.version.internal: 0.12
input.frequency: 50.07
input.voltage: 234.0
input.voltage.nominal: 220
output.frequency: 50.07
output.voltage: 234.0
ups.load: 22.0
ups.mfr: PowerCom
ups.model: KIN-2200AP
ups.model.type: KIN
ups.serial: Unknown
ups.status: OL

Вот и отлично, все необходимые параметры снимаются. Для проверки только режима работы UPS можно воспользоваться следующей командой (по аналогии можно запрашивать и другие параметры):

# upsc Powercom@localhost ups.status
OL

Переменная может принимать следующие значения:

  • OL — система работает на линии (on line power)
  • OB — система работает от батареи (on battery)
  • LB — система работает от севшей батареи (low battery)

Теперь посмотрим монитором:

# upsmon
Network UPS Tools upsmon 2.4.1
UPS: Powercom@localhost (master) (power value 1)
Using power down flag file /etc/killpower

Когда upsmon необходимо быстро выключить локальную систему, она устанавливает флаг «FSD» (forced shutdown — принудительное отключение) для любых UPS, на котором она выполняется в master режиме. Данная возможность используется и для синхронизации slaves компьютеров в том случае,если master UPS передает событие и всем рассылается сообщение о немедленном прекращении работы.Можно вручную вызвать этот режим на master upsmon, запустив другой экземпляр с флагом ‘-c fsd ‘. Это полезно, когда вы хотите инициировать shutdown перед критическим этапом. Эмулируем падение мощности:

# upsmon -c fsd

Система должна корректно завершить работу.

upsstats

На этом настройку Network UPS Tools можно считать оконченой. Но есть еще порох в пороховицах, а ягоды в ягодицах! В комплекте с NUT идет web-интерфейс проверки статуса UPS — upsstats. Посмотрим что это за штука.

Скопируем необходимые для работы файлы из предложеных примеров:

# cp upsset.conf.sample upsset.conf
# cp upsstats.html.sample upsstats.html
# cp upsstats-single.html.sample upsstats-single.html
# cp hosts.conf.sample hosts.conf

В конфигурационный файл apache добавим еще один virtualhost (надеюсь он у вас настроен с поддержкой виртуалхостов):

        ServerName powercom.muff.kiev.ua
ServerAdmin apache@muff.kiev.ua

DocumentRoot /usr/local/www/nut/

Options Indexes FollowSymlinks MultiViews +ExecCGI
AllowOverride All
Order allow,deny
Allow from all

Alias /cgi-bin/ «/usr/local/www/cgi-bin/»
Order allow,deny
Allow from all

 

Перезапускаем apache, чтобы изменения вступили в силу:

# apachectl graceful

Далее в файле upsset.conf необходимо расскоментировать строку I_HAVE_SECURED_MY_CGI_DIRECTORY:

# cat upsset.conf | grep HAVE
I_HAVE_SECURED_MY_CGI_DIRECTORY

Потом добавлям наш UPS в список хостов:

# echo ‘MONITOR powercom@localhost «Powercom KIN-2200AP-RM»‘ >> hosts.conf

Пора проверять, что же у нас получилось в результате. При переходе на ваш адрес, должна отобразится страница Network UPS Tools с вкладками Statistics и Settings.

  • Settings – тут вы можете настроит UPS (пользователя берете согласно содержимому upsd.users)
  • Statistics – здесь вы можете просмотреть статус вашего UPS, а так же посмотреть текущее состояние в графическом виде.

Добавляю скриншоты того, что у нас получилось.

Web Network UPS Tools

Web Network UPS Tools

Web Network UPS Tools

По материалам : muff.kiev.ua

Запись опубликована в рубрике FreeBSD. Добавьте в закладки постоянную ссылку.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не спамер This plugin created by Alexei91