Мониторинг 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%, Ваш сервер получит сигнал отключения.
Надеюсь вам это помогло!