NUT - Network UPS Tools

Версия для печатиОтправить другуPDF version

Наконец-то установил более-менее приличный 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 <seconds> - по умолчанию 15 секунд. Это частота обновления данных клиентов после остановки драйвера UPS. Следует использовать только в том случае, если у вас трудности с обновлением данных.
  • LISTEN <address> [<port>] - здесь указывается адрес и порт 3493 (по умолчанию) для прослушивания подключений.
  • MAXCONN <connections> - по умолчанию используется 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 (надеюсь он у вас настроен с поддержкой виртуалхостов):

<VirtualHost *:80>
 
        ServerName powercom.muff.kiev.ua
        ServerAdmin apacheapache [at] muff [dot] kiev [dot] ua (@muff.kiev.ua)
 
        DocumentRoot /usr/local/www/nut/
        <Directory /usr/local/www/nut>
                Options Indexes FollowSymlinks MultiViews +ExecCGI
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
 
        Alias /cgi-bin/ "/usr/local/www/cgi-bin/"
 
        <Directory /usr/local/www/cgi-bin/nut>
                Order allow,deny
                Allow from all
        </Directory>
 
</VirtualHost>

Перезапускаем 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

 

Дополнительные возможности:

Используемые материалы:

 

Ваша оценка: Нет Средняя: 5 (2 голоса)

а почему не указываете

а почему не указываете автора? Не красиво!! (с) Raven2000  http://www.lissyara.su/articles/freebsd/programms/network_ups_tools/

Извините, но автором даной

Извините, но автором даной статьи считаю все таки себя.

А ссылки на используемые материалы добавил.

Re: а почему не указываете

попробуйте по указанной статье настроить веб морду. эта статья - опыт настройки конкретного упса

а есть опыт настройки

а есть опыт настройки powercom usb?
у меня так и не получилось =(

Через USB стараюсь по

Через USB стараюсь по возможности не включать. По привычке использую RS-232. Так что пока нету такого опыта.

# echo 'MONITOR

# echo 'MONITOR powercom@localhost "Powercom KIN-2200AP-RM"' >> hosts.conf

не совсем ясно где находится этот hosts.conf

Все конфигурационные файлы

Все конфигурационные файлы находятся в /usr/local/etc/nut/

Вопрос возник, недавно

Вопрос возник, недавно батарея сдохла на UPS, и он когда она полностью села, выключился, а комп выдал разок предупреждение в консоль low battery и продолжил работать. Как его заставить выключаться при севшей батарее, но наличии сети?

Немножко не понял вопрос...

Немножко не понял вопрос... Как мог работать компьютер, если УПС выключился?

Предлагаю перенести вопрос на форум. Спасибо.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Вставай, Україно!

Литература