Как использовать UPS с nut

Инструменты nut (Network UPS tools) - это демоны управления и мониторинга UPS, которые могут быть использованы для различных UPS. Этот документ описывает, как использовать nut пакет из AltLinux Мастер 2.4 на примере подключения Powerman BackPro Plus по RS-232 для отдельной машины.

Инсталляция пакета nut

В AltLinux M2.4 nut входит как три пакета "nut","nut-server" и "nut-driver". Необходимо установить все. Их можно инсталлировать с помощью apt-get:
# apt-get install nut-server

Конфигурирование nut

Конфигурационные файлы Nut'а должны находятся в каталоге /etc/nut. При установке nut этот каталог создается RPM пакетом и там должны находится следующие файлы:. Для запуска сервиса необходимо изменить некоторые установки в этих конфигурационных файлах. Демон upssched не будет использоваться и upssched.conf не редактируется.
Переходим в каталог /etc/nut и смотрим, что мы имеем:

# ls -l

drwx--x--- 2 root upsmon <skip> certs
lrwxrwxrwx 1 root root   <skip> cmdvartab -> ../../var/lib/nut/etc/nut/cmdvartab
-rw-r--r-- 1 root root   <skip> driver.list
-rw-r----- 1 root upsdrv <skip> ups.conf
lrwxrwxrwx 1 root root   <skip> upsd.conf -> ../../var/lib/nut/etc/nut/upsd.conf
lrwxrwxrwx 1 root root   <skip> upsd.pem -> ../../var/lib/nut/etc/nut/upsd.pem
lrwxrwxrwx 1 root root   <skip> upsd.users -> ../../var/lib/nut/etc/nut/upsd.users
-rw-r----- 1 root upsmon <skip> upsmon.conf
-rw-r----- 1 root upsmon <skip> upssched.conf

<skip> - обозначает удаленную незначимую информацию.


Как видно из вывода часть файлов перенесена в chroot, поэтому смотрим, что находится в /var/lib/nut/etc/nut/:
-rw-r----- 1 root upsd   <skip> cmdvartab
-rw-r----- 1 root upsdrv <skip> ups.conf
-rw-r----- 1 root upsd   <skip> upsd.conf
-rw-r----- 1 root upsd   <skip> upsd.pem
-rw-r----- 1 root upsd   <skip> upsd.users
-rw-r----- 1 root upsmon <skip> upsmon.conf

Выявлена проблема наличия двух файлов (upsmon.conf, ups.conf) в двух местах. Править конфигурационные файлы необходимо в /etc/nut.

Конфигурирование ups.conf

Настройки UPS-специфического драйвера должны определятся в ups.conf. Какие драйверы поддерживают определенные типы UPS описано в файле /etc/ups/driver-list. Powerman BackPro Plus не имеет собственного драйвера и поэтому необходимо использовать драйвер genericups с указанием upstype. Процедура подбора драйвера описана в man genericups. Там же смотрим и параметры необходимые для настройки драйвера.
Установки в нашем случае приведены ниже (выделены жирным шрифтом):
#
# To find out if your driver supports any extra settings, start it with
# with the -h option and/or read the driver's documentation.
[myups]
    driver = genericups
    port = /dev/ttyS0
    upstype = 4 Запускаем драйвер для нашего оборудования:
#/etc/init.d/upsdrv start
Успешный старт будет выглядеть так:
Starting UPS drivers: [DONE]
Отсутствие сообщения говорит об ошибке и необходимо проверить установки в ups.conf, возможно, нужны дополнительные установки для обнаружения UPS.

Конфигурирование upsd.conf

Поскольку мы не будем использовать сетевые возможности, то нет необходимости изменять upsd.conf. Параметры по умолчанию следующие:
ACL all 0.0.0.0/0
ACL localhost 127.0.0.1/32
ACCEPT localhost
REJECT all
Запускаем сетевой сервер:
#/etc/init.d/upsd start
Успешный старт будет выглядеть так:
Starting UPS information service: [DONE]
Если upsd сообщит, что не может связаться с UPS, это означает, что ups.conf сконфигурирован неверно или выбран неверный драйвер устройства.
Проверим, что UPS сообщает правильные данные о своем состоянии.
#upsc myups@localhost ups.status
Ответ должен быть:
OL
OL означает, что UPS работает от сети. Другие сообщения (OB – от батареи или LB разряженная батарея) говорят о том, что конфигурирование ups.conf неверно. Если выводится сообщение "access denied" это означает, что неверно сконфигурирован upsd.conf. Правим файлы и выполняем reload соответствующих демонов.
Посмотрим, какие данные отслеживаются для UPS выбранным драйвером:
#upsc myups@localhost
Вывод для genericups будет таким:
driver.name: genericups
driver.parameter.port: /dev/ttyS0
driver.parameter.upstype: 4
driver.version: 2.0.0
driver.version.internal: 1.30
ups.mfr: Generic
ups.model: Generic RUPS model
ups.status: OL

Конфигурирование upsd.users

upsd.users разрешает или запрещает доступ к upsd демону клиентам (upsmon демону, upsc команде, ...). Необходимо позволить upsmon демону связываться с upsd. Для этого добавляются 4 строчки:
# The matching MONITOR line in your upsmon.conf would look like this:
#
# MONITOR myups@myhost 1 monuser pass master (or slave)
[monuser]
    password = KJSsaia1
    allowfrom = localhost
    upsmon master Перезагрузим upsd:
#/etc/init.d/upsd reload
Если нет сообщения [DONE] для старта проверяем конфигурационные файлы.

Конфигурирование upsmon.conf

upsmon.conf это установки для upsmon, UPS демона монитора.
#
# MONITOR myups@bigserver 1 monmaster blah master
# MONITOR su700@server.example.com 1 upsmon secretpass slave
MONITOR myups@localhost 1 monuser KJSsaia1 master
# --------------------------------------------------------------------------
# MINSUPPLIES
Необходима только одна MONITOR строчка. Здесь определяется имя UPS ("myups"), имя хоста на котором upsd выполнятся ("localhost"), название доступа ("monuser"), пароль ("KJSsaia1") и "master" или "slave" (обычно "master"). Эти установки соответствуют установкам в upsd.users. Число "1" - значение мощности и устанавливается равной 1.
Запускаем монитор:
#/etc/init.d/upmon start
Starting UPS monotor service: [DONE]
Отсутствие сообщения говорит об ошибке и необходимо проверить установки в upsmon.conf.

Заключительная проверка

Просматриваем сообщения в syslog :
# grep ups /var/log/messages

Сообщения, связанные с UPS должны выглядеть примерно так:
server genericups[14471]: Startup successful
server upsdrvctl: Network UPS Tools - UPS driver controller 2.0.0
server upsdrv: Starting UPS drivers: succeeded
server upsd[14504]: Connected to UPS [myups]: genericups-ttyS0
server upsd: Network UPS Tools upsd 2.0.0
server upsd: Synchronizing...done
server upsd: Connected to UPS [myups]: genericups-ttyS0
server upsd: upsd startup succeeded
server upsd[14505]: Startup successful
server upsmon: UPS: myups@localhost (master) (power value 1)
server upsmon: Using power down flag file /etc/killpower
server upsmon: upsmon startup succeeded
server upsmon[14523]: Startup successful
server upsd[14505]: Connection from 127.0.0.1
server upsd[14505]: Client monuser@127.0.0.1 logged into UPS [myups]

Любые сообщения об ошибках здесь связаны с ошибками конфигурационных файлов, которые должны быть исправлены.

Что необходимо дописать

Конфигурирование ups.conf для случая более сложного, чем genericups. Например, APC.
Конфигурирование upsd.conf Управление по сети.
Конфигурирование  upssched.conf.
Сообщения об проблемах с питанием по e-mail и т.д.