Debian Jessie: Мониторинг UPS через NUT

Мониторинг UPS, предварительное отключение сервера при рязряде батарей. Инструкция по настройке, все по порядку.

1. Установка

Первый шаг установка пакета Network UPS Tools :

# apt-get install nut

2. Подключение вашего UPS

Когда Ваш UPS включен и подключен к порту USB сервера, мы должны его обнаружить в выводе команды:

# lsusb
 Bus 004 Device 010: ID 0463:ffff MGE UPS Systems UPS

Эта команда дает нам код разработчика и код устройства.

Vendor ID : 0463
Device ID : ffff

Это важные значения, которые пригодятся нам в процессе настройки.

3.Настройка

Самое время указать демону nut нашу UPS.

Так как UPS подключена через USB, мы будем использовать USB драйвер.

Нам нужно добавить новую секцию в файл /etc/nut/ups.conf:

/etc/nut/ups.conf
 ...
 [eaton]
 driver = blazer_ups
 port = auto
 desc = "Eaton 3S 550"

4. Запускаем USB драйвер

Теперь nut знает про нашу UPS, время запустить драйвер USB для UPS upsdrvctl:

# upsdrvctl start
 Network UPS Tools - UPS driver controller 2.6.4
 Network UPS Tools - Generic HID driver 0.37 (2.6.4)
 USB communication driver 0.32
 Can't claim USB device [0463:ffff]: could not detach kernel driver from interface 0: Operation not permitted
 Driver failed to start (exit status=1)

Это выглядит как будто что-то не так.

Ошибка оттого, что демон nut работает из-под пользователя nut, которому не разрешен доступ к USB интерфейсу (доступ есть только у root)

Лучшее решение это добавить пользователю nut доступ к этому USB устройству, через определение нового правила для udev.

Правила для udev потребуют Vendor ID and Device ID вашего USB UPS.

Мы разрешим пользователям с группы nut доступ с правами 660 вместо 666, это будет более безопасно.

Для обьявления правила, необходимо создать файл /etc/udev/rules.d/90-nut-ups.rules :

/etc/udev/rules.d/90-nut-ups.rules
 # Eaton 3S 550
 ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0463", ATTR{idProduct}=="ffff", MODE="0660", GROUP="nut"

Теперь нужно перезапустить udev для того, чтобы правило применилось:

 # service udev restart

Вам необходимо отключить и подключить USB кабель для того, чтобы применилось новое правило к устройству.

Теперь если вы запустите драйвер upsdrvctl UPS, вы не должны увидеть ошибки

 # upsdrvctl start
 Network UPS Tools - UPS driver controller 2.6.4
 Network UPS Tools - Generic HID driver 0.37 (2.6.4)
 USB communication driver 0.32
 Using subdriver: MGE HID 1.31

5. Настройка режима работы NUT

nut может работать в нескольких режимах:

none (default)
standalone
netserver
netclient

Нам нужно настроить, чтобы nut работал в standalone режиме, для обслуживания одной UPS на локальной системе. Эта конфигурация подуразумевает 3 уровня nut : драйвер, демон upsd и upsmon

Правим в файле /etc/nut/nut.conf :

/etc/nut/nut.conf
 ...
 MODE=standalone

Следующий шаг это настройка upsd и upsmon:

upsd подключается к UPS драйверу, который мы только что запустили.

upsmon подключаеся к upsd и выключает машину если проблема с электропитанием.

Зачем этот дополнительный уровень выведен?

Прочто потому что несколько копий upsmon могут быть запущены на нескольких машинах и обращаться к одному upsd который контролирует физическое USB устройство.

6. Настройка демона UPS

Так как upsd используется на сервере локально, мы настроим его слышать на локальной систтеме порт 3493. Конфигурация будет работать для IPv4 и IPv6.

Правим следующий конфигурационный файл /etc/nut/upsd.conf :

/etc/nut/upsd.conf
 ...
 # LISTEN


[]
 LISTEN 127.0.0.1 3493
 LISTEN ::1 3493
 ...

Далее, мы должны создать локального пользователя upsmonitor для upsd

Он будет использоваться upsmon для общения с upsd

Локальный пользователь объявляется в файле /etc/nut/upsd.users :

/etc/nut/upsd.users
[upsmonitor]
 password = YOUR_PASSWORD
 upsmon master

Замените YOUR_PASSWORD нас свой пароль

7. Настройка мониторинга UPS

Как только пользователь был создан в upsd, он должен стать доступен в upsmon

Правим файл /etc/nut/upsmon.conf :

/etc/nut/upsmon.conf
 # Commands for shutdown on power loss
 MONITOR eaton@localhost 1 upsmonitor YOUR_PASSWORD master
 POWERDOWNFLAG /etc/killpower
 SHUTDOWNCMD "/sbin/shutdown -h now"

eaton это имя данное вашей UPS в файле /etc/nut/ups.conf и YOUR_PASSWORD ваш пароль который стоит в /etc/nut/upsd.users

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

8. Secure configuration

Так как конфигурация мониторинга UPS критична в плане безопасности (вы можете выключить сервер), мы должны изменить права доступа и разрешить только root и группе nut доступ к ним.

# chown root:nut /etc/nut/*
# chmod 640 /etc/nut/*

9. Тестируем подключение

Теперь все должно быть готово для тестирования подключения.

Для теста нам нужно запустить upsd демон и запросить статус вашей UPS через клиента upsc

 # upsd
 Network UPS Tools upsd 2.6.4
 fopen /var/run/nut/upsd.pid: No such file or directory
 listening on ::1 port 3493
 listening on 127.0.0.1 port 3493
 Connected to UPS [eaton]: usbhid-ups-eaton
 # upsc eaton@localhost
 battery.charge: 89
 battery.charge.low: 20
 ...

Теперь сервис работает, можете перезагрузить ваш сервер.

При следующей загрузке nut-server будет запущен.

Вы сможете обрабатывать эти данные:

 # upsc eaton@localhost
 battery.charge: 89
 battery.charge.low: 20
 ...

Теперь ваш сервер защищен

Как только заряд батареи вашей UPS станет менее чем 20%, Ваш сервер получит сигнал отключения.

Надеюсь вам это помогло!

Оставьте комментарий