Имея один UPS, подключил на его
нагрузку три сервера - FreeNAS, FreeBSD и Windows XPSP3. Встала задача
организовать их корректное отключение в случае продолжительного
отсутствия электропитания, когда заряд батареи снижается ниже некоторого
порогового значения в %. Для этого я выбрал FreeNAS в роли ведущего,
оповещающего по сети состояние UPS, а в роли клиентов - FreeBSD и
Windows. На FreeNAS запущена и настроена UPS служба, которая реализована
пакетом NUT (Network UPS Tools) и работает в режиме master с удаленным мониторингом. Разберемся сначала с Windows клиентом NUT...
В интернете нашел всего две программы реализующие функции клиента NUT. Первая из них WinNutClient обладает GUI интерфейсом для отображения текущего состояния UPS, вторая WinNUT такой возможностью не обладает, но может работать в качестве службы. Ее и будем юзать...
Скачав установочный пакет WinNUT распакуем и проинсталлируем его выбрав вариант Full instalation. В главном окне программы отметим флажок Install As Service, чтобы задействовать службу как сервис Windows, и флажок Automatic Startup, чтобы сервис стартовал после загрузки Windows.
Теперь перейдем к настройке, которая заключается в правке файла upsmon.conf. Рассмотрим ключевые моменты.
1) Чтобы реагировать на сигналы, надо определить ведущую систему:
MONITOR ups@enconas 1 root freenas slave
Здесь после @ идет сетевое имя компьютера на котором работает NUT сервер. По умолчанию для связи используется порт 3493, но его можно переопределить, задав явное значение через двоеточие (например enconas:5678). Значение 1 указывает на количество батарей UPS. Далее идут логин и пароль на доступ к серверу.
2) После получения от NUT сервера сигнала FSD, необходимо завершить работу Windows:
SHUTDOWNCMD "shutdown -s"
3) Перед отключением Windows желательно об этом сообщить пользователю:
NOTIFYCMD "c:\\Program Files\\WinNUT\\alertPopup.exe"
Закончив этап настройки можно запустить сервис на исполнение. Для этого жмем кнопку "Apply and Start WinNUT". Состояние строки Status: должно измениться с Not Running на Running as Service, а в логе не должно быть ошибок!
В интернете нашел всего две программы реализующие функции клиента NUT. Первая из них WinNutClient обладает GUI интерфейсом для отображения текущего состояния UPS, вторая WinNUT такой возможностью не обладает, но может работать в качестве службы. Ее и будем юзать...
Скачав установочный пакет WinNUT распакуем и проинсталлируем его выбрав вариант Full instalation. В главном окне программы отметим флажок Install As Service, чтобы задействовать службу как сервис Windows, и флажок Automatic Startup, чтобы сервис стартовал после загрузки Windows.
Теперь перейдем к настройке, которая заключается в правке файла upsmon.conf. Рассмотрим ключевые моменты.
1) Чтобы реагировать на сигналы, надо определить ведущую систему:
MONITOR ups@enconas 1 root freenas slave
Здесь после @ идет сетевое имя компьютера на котором работает NUT сервер. По умолчанию для связи используется порт 3493, но его можно переопределить, задав явное значение через двоеточие (например enconas:5678). Значение 1 указывает на количество батарей UPS. Далее идут логин и пароль на доступ к серверу.
2) После получения от NUT сервера сигнала FSD, необходимо завершить работу Windows:
SHUTDOWNCMD "shutdown -s"
3) Перед отключением Windows желательно об этом сообщить пользователю:
NOTIFYCMD "c:\\Program Files\\WinNUT\\alertPopup.exe"
Закончив этап настройки можно запустить сервис на исполнение. Для этого жмем кнопку "Apply and Start WinNUT". Состояние строки Status: должно измениться с Not Running на Running as Service, а в логе не должно быть ошибок!
Дополнительно задайте в файле upsmon.conf:
- Процент заряда батареи, при котором начнется завершение работы системы FINALDELAY;
- Частоту опроса UPS в секундах POLLFREQ и POLLFREQALERT. Общее положение таково, что чем выше частота опроса, тем меньше вероятность пропустить важный сигнал от UPS, но тем выше "зашумление" сети, и наоборот.
Можно эмулировать наступление критического состояния UPS командой # upsmon -c fsd на NUT сервере (выполняющего в режиме master`а).
P.S.
Не хорошо когда доступ к серверу NUT происходит от имени
суперпользователя! Правильно иметь для операций с NUT специально
назначенного пользователя.