Network ups tools настройка windows

Мозаика системного администрирования

Инструменты пользователя

Инструменты сайта

Network UPS Tools (NUT)

Содержание

Network UPS Tools (NUT) — комплект программ для мониторинга ИБП .

Сервер — upsd

upsd отвечает за передачу данных от драйверов к клиентским программам по сети. Его следует запускать сразу после upsdrvctl в сценариях запуска вашей системы.

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

upsd.conf

upsd.users

ups.conf

Нужно обязательно дать права на файл устройства (порта), иначе будет ошибка:

Для того, чтобы после перезагрузки были правильные права на файл, нужно создать файл:

upsdrvctl

UPS driver controller

Клиент мониторинга — upsmon

upsmon предоставляет важную функцию, которую вы ожидаете найти в ПО для мониторинга ИБП — это безопасное отключение при сбое питания.

В иерархии ПО NUT это клиент. Он отдельно описан в документации, так как он очень важен. Вы настраиваете его, указывая все ИБП, информацию о которых необходимо получать, это делается в файле в upsmon.conf .

В файле nut.conf нужно указать режим:

СИСТЕМА ИМЯ_ИБП @СЕРВЕР
PV Целое число, равное числу блоков питания, которые ИБП питает в этой системе. Большинство обычных компьютеров имеют один блок питания, и ИБП питает его, поэтому это значение будет 1.
Если нужно только контролировать ИБП , который на самом деле не подаёт питание на эту систему нужно использовать значение 0. Это полезно, когда вы хотите, чтобы upsmon только оправлял уведомления об изменениях статуса ИБП
ПОЛЬЗОВАТЕЛЬ Имя пользователя
ПАРОЛЬ Пароль пользователя
ТИП Тип: master или slave

Клиент MS Windows

WinNUT

WinNUT — The Windows Network UPS Tools

WinNUT is currently being replaced by a full port to Windows, part of the official NUT distribution. MSI packages are available too.

Windows NUT client

Графический интерфейс к WinNUT

Windows NUT client is a partial port of KNutClient to Windows using AutoIt scripting language.

Другие клиенты

Клиенты общаются с upsd по сети и делают полезные вещи с данными из драйверов. Существуют инструменты для доступа к командной строке и несколько специальных клиентов, которые можно запускать через ваш веб-сервер как программы CGI.

upsc — это быстрый способ узнать, правильно ли работают ваши драйверы и upsd .

upsc -L список всех настроенных ИБП
upsc ИМЯ_ИБП список всех доступных переменных с их текущими значениями
upsc ИМЯ_ИБП ИМЯ_ПЕРЕМЕННОЙ текущее значение переменной

Для подавления сообщения:

Нужно использовать следующую конструкцию:

upslog

upslog будет записывать информацию о состоянии из upsd в файл через заданные промежутки времени. Вы можете использовать это для создания графиков или отчетов с помощью других программ.

Пример вывода протокола в файл с помощью upslog

upsrw

upsrw требует прав администратора для изменения настроек оборудования. Обратитесь к upsd.users для получения информации об определении пользователей в upsd .

upscmd

upscmd требует прав администратора для запуска мгновенных команд. Чтобы определить пользователей и пароли в upsd , см. upsd.users

Веб мониторинг

Настройка

Zabbix

Мониторинг через Zabbix, работает через Zabbix агент.

Параметр Имя переменной Примечания
Имя драйвера NUT driver.name
Модель ИБП ups.model
Нагрузка (%) ups.load
Напряжение батарей (В) battery.voltage
Напряжение на входе (В) input.voltage
Напряжение на выходе (В) output.voltage
Номинальная нагрузка (ВА) ups.power.nominal
Производитель ИБП ups.mfr
Расчётное время работы от батарей (Мин.) battery.runtime
Состояние ups.status Эта переменная может содержать несколько значений, вот пример:

для этого введены переменные ups.status-2 … ups.status-5 , если эти переменные не содержат значений то возвращается 0

Состояние, значение №2 ups.status-2 Состояние, значение №3 ups.status-3 Состояние, значение №4 ups.status-4 Состояние, значение №5 ups.status-5 Тревога ups.alarm Эта переменная получает значение только при возникновении тревоги (alarm) поэтому для при ошибке:

возвращается 0 , также она может содержать несколько значений, для этого введены переменные ups.alarm-2 … ups.alarm-10

Тревога, значение №2 ups.alarm-2 Тревога, значение №3 ups.alarm-3 Тревога, значение №4 ups.alarm-4 Тревога, значение №5 ups.alarm-5 Тревога, значение №6 ups.alarm-6 Тревога, значение №7 ups.alarm-7 Тревога, значение №8 ups.alarm-8 Тревога, значение №9 ups.alarm-9 Тревога, значение №10 ups.alarm-10 Температура (°C) ups.temperature Уровень заряда батарей (В) battery.charge Частота на входе (Гц) input.frequency

Если переменная не поддерживается, возникает ошибка:

Сервис управления бесперебойным питанием в сети (NUT)

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

Решение обычно — это развертывание некой системы, которая обеспечит управление мягким отключением питания нашего оборудования. Как правило, производители систем бесперебойного питания (ИБП) имеют свою системы, но не всегда они бесплатны и доступны, например для простых моделей.

Для реализации подобной задачи развернем NUT в локальной сети.

NUT — NetworkUPSTools программа мониторинга и управления различными ИБП. Состоит из сервера и клиента. Сервер мониторит состояние ИБП и передает команды на клиентов.

В качестве сервера выбран Linux Debian 10, тут нет сильных отличий при установке. Клиентами будут выступать Linux и Windows машины.

Сервер NUT

Установим NUT на сервер:

Список поддерживаемых ИБП (драйвера) можно посмотреть тут — /usr/share/nut/driver.list или выбрать драйвер для устройства на сайте — https://networkupstools.org/stable-hcl.html

Какое именно устройства подключено и на каком порту смотрим командой:

Посмотрим подробно информацию про наш ИБП:

Настройки NUT

Определим драйвер, в данном примере — usbhid-ups и настроим параметры:

Настройка драйвера NUT для работы с нашим ИБП

Чтобы NUT мог управлять ИБП через USB, необходимо разрешить данные действия в системе. Для этого пропишем правила в udev.
udev — это подсистема управления устройствами, в псевдо-файловой системе /dev находятся активные подключенные устройства к системе.

Создаем файл с правилом для udev:

Перезапустим сервис udev:

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

Если вывод похож на этот, то настроено правильно.

Настройка адресов и портов прослушивания подключений к NUT

В /etc/nut/upsd.conf раскомментируем или добавим:

Теперь настроим пользователей и пароли для подключения клиентских устройств к серверу NUT:

Пользователю upsadm разрешили управлять NUT через утилиту upscmd, менять все параметры ИБП (строка actions = SET и instcmds = ALL). Если нужно разрешить менять только определенные параметры, то их нужно описать в опции instcmds, например:

Запустим сервер NUT и проверим статус:

Проверим слушает ли NUT настроенные порты:

Сервер наш готов.

Протестируем соединение с ИБП, должно сообщить о своем состоянии:

Настройка клиентов NUT

Подготовим пользователей клиентов от имени которых будет подключение к NUT. В /etc/nut/upsd.conf добавим секции с пользователями:

  • local_mon — пользователь локального (серверного) клиента
  • linux_mon — пользователь linux клиента
  • win_mon — пользователь windows клиента

/etc/nut/upsmon.conf и приведем его к виду:

Разберем значения MONITOR:

  • apc@localhost — имя и адрес ИБП (берется из /etc/nut/ups.conf)
  • 1 — количество ИБП
  • srv_mon srv_passwd — логин и пароль
  • master — опция которая определяет, что данный сервер будет выключен после отключения всех slave серверов

Настройка клиента NUT на сервере под управлением Linux

Для разнообразия в качестве клиента будет выступать Linux CentOS 7, по сути клиента для Debian систем мы настроили на сервере.

/etc/ups/upsmon.conf и приведем к виду:

Перезапустим сервис и включим автостарт при загрузке:

Проверим подключение к серверу NUT:

Настройка клиента Windows

Скачиваем NUT клиент для Windows — и устанавливаем.

В папку где установили NUT в bin находим и кладем библиотеки OpenSSL, о которых предупреждал при установке, ssleay32.dll, libssl32.dll и libeay32.dll. Библиотеки входят в дистрибутив openssl или просто находим отдельными файлами.

NUT\etc\nut.conf.sample переименовываем в NUT\etc\nut.conf и правим:

Аналогично upsmon.conf.sample в upsmon.conf и правим:

Далее через Пуск — Программы — NUT:

Или через консоль:

Еще один рабочий вариант — это использовать приложение WinNUT с GUI. Настройки более понятны и просты, есть подробный readme.

Проверка системы

Протестируем нашу систему. Отправим сигнал отключения, наши сервера поочередно пойдут выключаться и в конце выключится сервер NUT.

Настройка мониторинга состояния ИБП SNR серии Element в Windows

Решаем задачу по мониторингу ИБП SNR серии Element, 1000 VA, 24VDC. В комплекте с ним шла утилита хх-летней давности UPSilon 2000, которая кроме как через email (и пейджер ;)) оповещать о событиях не умеет.

Network UPS Tools

Установка

Скачиваем msi пакет для Windows Windows (complete port, Beta) и устанвливаем. Входе установки у меня возникла ошибка установки NUT UPS драйвера . Пришлось скачивать этот: http://sourceforge.net/projects/libusb-win32/. В составе этого драйвера есть утилита inf-wizard.exe с помощью которой можно легко определить какое из usb устройств наш ИБП и установить драйвер в систему, особенно актуально для установки в режиме Windows Server Core.

Дальше нужно найти недастующие библиотеки (которые отсутствуют в инсталяторе), а именно:

  • libeay32.dll
  • ssleay32.dll
  • msvcr71.dll
  • libgcc_s_dw2-1.dll

Их можно скачать у меня в составе архива или найти самостоятельно.

Настройка

Минимальная настройка конфигурации в моем случае.

runtimecal — Для подсчета этого параметра нужно тестировать сам ИБП. Нужно разредить полностью с определенным процентом нагрузки и замерить время. Например в приведенном верху примере при 86% нагрузке ИБП разряжается за 900 секунд, а при 42% нагрузке за 1960 секунд.

Проверить правильность настроек (после запуска службы) можно так:

Запустить NUT для отладки как консольную программу можно так:

Обязательно нужно проверить настройки брандмаэура, открыть TCP порт 3493.

На Windows Server Core, NUT на отрез отказывался корректно запускаться как служба. Пришлось в планировщике задач прописать следующий powershell скрипт выполняющийся при старте системы:

Мониторинг

Мониторить будем с помощью icinga2 .

Вариант опроса ИБП из Linux

Подключаем плагин check_nut_plus как CheckCommand:

Настройка NUT для управления ИБП с нескольких серверов

NUT — это Network UPS Tools или набор программных компонентов, предназначенных для мониторинга силовых устройств, таких как источники бесперебойного питания (ИБП), блоки распределения питания, солнечные контроллеры и блоки питания серверов.

В среде Linux — NUT — это стандарт де-факто для управления ИБП, который позволяет производить мониторинг ИБП не только с сервера к которому подключен ИБП, но и по сети, а так же выполнят ряд действий при наступлении определенных условий. Например, в случае когда заряд батарей ИБП истощается NUT может произвести корректное завершение работы серверов и уведомить об этом системного администратора.

Как настроить NUT на Linux и Windows серверах ? Читаем ниже.

Исходные данные:
1. В локальной сети организации есть 2 сервера под управлением Debian 8.9 (jessie) и 1 сервер под управлением Windows Server 2012 R2;
2. Есть ИБП компании APC, модель Smart-UPS 1000. ИБП подключен по USB к одному из серверов Debian 8.9 (jessie);

Задача:
На сервере Debian 8.9 к которому подключен ИБП установить серверную часть NUT и настроить клиентскую часть NUT на этом сервере и других серверах. В случае перехода питания серверов на ИБП и истощения заряда батарей ИБП нужно произвести корректное завершение работы всех серверов.

Распределение IP адресов во внутренней сети компании между серверами:
192.168.100.1 (srv1.mycompany.ru) — Сервер Debian 8.9 (jessie) к которому подключен APC Smart-UPS 1000 по USB — на нем будет серверная часть NUT и клиентская;
192.168.100.2 (srv2.mycompany.ru) — Сервер Debian 8.9 (jessie) — на нем будет клиентская часть NUT;
192.168.100.3 (srv3.mycompany.ru) — Сервер Windows 2012 R2 — на нем будет клиентская часть NUT;

Настройка серверной части NUT.

1. Проверим факт обнаружения нашего ИБП ядром Linux с помощью утилиты lsusb:

Для ИБП марки APC Smart-UPS значения idVendor и idProduct будут 051d и 0002 соответственно.

2. Установка NUT (серверной части на хосте 192.168.100.1):

Далее отредактируем файл /etc/nut/ups.conf и приведем его к виду:

Этой минимальной конфигурации хватит для нашего ИБП.

Как Вы уже догадались в файле /etc/nut/ups.conf описываются все наши ИБП, а так же драйвер и их параметры для работы с NUT.

Нашему ИБП мы присвоили имя apc и будем использовать драйвер usbhid-ups.
Драйвер usbhid-ups гарантировано работает с ИБП Smart-UPS компании APC.
Более детально со списком драйверов и списком ИБП каких фирм может работать NUT описано на этой странице. Список параметров драйвера usbhid-ups можно посмотреть на этой странице.

3. Настройка драйвера NUT для работы с нашим ИБП.

Далее нам нужно установить права на наше USB устройство чтобы драйвер NUT смог работать с ним.

Для этого создадим правило /etc/udev/rules.d/90-nut-ups.rules для udev со следующим содержимым:

Далее нужно перечитать все правила, для этого выполним:

Для тех кто хочет понять в чем тут дело, объясняю:

При выводе информации по нашему ИБП с помощью lsusb мы можем увидеть строку «Bus 004 Device 003»:

Она говорит, что ядро Linux при подключении нашего ИБП по USB присвоило ему номер шины обмена данными 4 и id устройства 3, само наше устройство соответственно будет находится по такому пути /dev/bus/usb/004/003 а владельцем будут пользователь root и группа root с правами 664 (crw-rw-r—), но для работы драйвера NUT этого не достаточно, драйвер в таком случае не сможет управлять устройством.

С помощью файла /etc/udev/rules.d/90-nut-ups.rules и утилиты udevadm мы задали правило для сервиса udev который управляет периферией, получая от Linux ядра разного рода уведомления. По этому правилу для нового устройства с определенным idVendor и idProduct владельцем будет назначаться группа nut.

Если интересно, то запросить информацию у udev по нашему устройству можно так:

4. Теперь запустим все драйвера NUT описанные в /etc/nut/ups.conf с помощью команды:

Если в файле /etc/nut/ups.conf у Вас описаны несколько ИБП, то остановить конкретный драйвер или запустить его можно так:

5. Теперь опишем права доступа к нашему серверу NUT для доступа клиентских ОС по сети, за это отвечает файл /etc/nut/upsd.conf

Директива LISTEN задает адрес и порт на котором будет принимать соединения демон upsd (Сервер NUT).

ВНИМАНИЕ! Директивы ACL, ACCEPT, REJECT в файле /etc/nut/upsd.conf больше не используется и является устаревшей.

6. Теперь опишем пользователей и пароли для подключения клиентских устройств к серверу NUT, за это отвечает файл /etc/nut/upsd.users:

В секции [admin] мы описали пользователя для управления NUT через утилиту upscmd, а так же разрешили менять все параметры самого ИБП (строка actions = SET и instcmds = ALL).
Если нужно разрешить пользователю admin менять только определенные параметры, то их нужно описать в опции instcmds, например так:

Секции [local_mon] [srv2_mon] и [srv3_mon] описывают пользователей для клиентских ОС, на них будет стоять клиентская часть NUT.
В этих секциях мы указали индивидуальные пароли (опция password) и статус этих пользователей (опция upsmon).

Для пользователя local_mon мы указали в опции upsmon значение master, это сделано не спроста, дело в том что на том же ПК, где у нас будет работать сервер NUT мы настроим и клиентскую часть NUT и когда сервер NUT отправит всем клиентам сигнал о критическом состоянии батарей ИБП, то master должен выключиться самым последним из серверов, дождавшись выключения всех slave серверов.

ВНИМАНИЕ! Директива allowfrom в файле /etc/nut/upsd.users больше не используется и является устаревшей.

7. Настроим режим работы NUT на сервере 192.168.100.1 (работа в режиме сервера), для этого в файле /etc/nut/nut.conf напишем:

8. Запустим сервер NUT:

И проверим его статус:

Проверим открытые порты:

Настройка клиентской части NUT на серверах.

1. Настроим клиент мониторинга (upsmon), который будет заниматься слежением за состоянием ИБП и правильным завершением работы сервера при отсутствии электричества и полном разряде батарей. (Первый клиент у нас будет на том же хосте, что и сервер NUT, то есть на 192.168.100.1):

Для этого отредактируем файл /etc/nut/upsmon.conf и приведем его к виду:

Директиву NOTIFYCMD в которой как правило задают запуск планировщика upssched, а далее настраивают upssched.conf мы не используем. Если Вам нужно настроить уведомления на email или в мессенджеры и кастомизировать процедуру выключения, то тогда нужно настраивать планировщик. Но нам это пока не нужно.

Самое интересное здесь — это директива

В ней описывается подключение к нашему серверу NUT, формат здесь простой:
MONITOR @

— берется с сервера NUT из файла /etc/nut/ups.conf, в нашем случае apc;
— думаю тут все понятно, для локального клиента это localhost;
— как правило это 1, если Вам нужно контролировать переход на питание от ИБП, но выключать этот сервер по сигналу NUT Вы не хотите, то установите этот параметр в 0;
и — думаю тут тоже все понятно, данные берутся с сервера NUT из файла /etc/nut/upsd.users;
— если указана опция master, то данный сервер будет выключаться после выключения всех slave серверов;

Так же нужно остановиться на директиве POWERDOWNFLAG и разъяснить как происходит отключение системы в случае когда заряд батарей ИБП истощается.
Итак, в режиме работы от батарей, перед самым их истощением, ИБП генерирует сообщение «battery low». Демон upsmon получает это сообщение от сервера NUT (от upsd) и обрабатывает этот сигнал, вызывая команду описанную в опции SHUTDOWNCMD для корректной остановки системы. Более детально данный процесс можно описать следующей последовательностью:
1. ИБП генерирует событие «battery low»;
2. upsmon получает данный сигнал от сервера NUT и инициирует выключение ПК;
3. Создается специальный файл POWERDOWNFLAG, являющийся признаком того, что система находится в режиме отключения в связи с истощением батарей ИБП;
4. Выполняется команда SHUTDOWNCMD;
5. RC-сценарий использует проверку флага POWERDOWNFLAG для предотвращения так называемой «энергетической гонки» (power race);

«Энергетической гонкой» называется ситуация, когда ИБП переходит в режим работы от сети вскоре после генерации сигнала «battery low», в процессе останова системы. В этом случае компьютер, настроенный на автоматическое включение после сбоя электропитания окажется заложником собственной «осторожности», ведь фактически никакого сбоя не произойдет. Многие современные ИБП имеют механизмы разрешения такой ситуации и дополнительного анализа POWERDOWNFLAG флага на стороне ОС как правило не нужно, но знать про это необходимо.

Теперь перезапустим клиента NUT командой

И проверим его статус:

Проверить подключение к серверу и вывести все параметры ИБП можно командой:

Посмотреть значение какого-то конкретного параметра можно указав дополнительно его имя:

Кроме того, как я писал выше есть более сложный клиент (upscmd), который позволяет не только просматривать настройки, но и выполнять команды.
Список доступных команд можно увидеть вот так:

2. Теперь настроим клиент мониторинга NUT (upsmon) на сервере под управлением Debian Linux (хост 192.168.100.2):

Отредактируем файл /etc/nut/upsmon.conf и приведем его к виду:

Отредактируем файл /etc/nut/nut.conf и приведем его к виду:

Теперь перезапустим клиента NUT командой

И проверим подключение к серверу NUT путем вывода всех параметров ИБП командой:

3. Теперь настроим клиента мониторинга NUT (upsmon) на серверe под управлением Windows Server 2012 R2 (хост 192.168.100.3):

Скачиваем инсталлятор NUT под Windows с официального сайта и устанавливаем.

Скачиваем OpenSSL 1.0.2q (x86) или новее, но обязательно x86 версию (Win32 OpenSSL v1.0.2q Light) и устанавливаем, в процессе установки когда нас спросят копировать файлы библиотеки в системную паку — отказываемся, далее копируем 3 файла (ssleay32.dll, libssl32.dll и libeay32.dll) из «C:\OpenSSL-Win32\» в «C:\Program Files (x86)\NUT\bin\»

Переименовываем файл «C:\Program Files (x86)\NUT\etc\nut.conf.sample» в «C:\Program Files (x86)\NUT\etc\nut.conf» и пишем в конце файла:

Далее переименовываем файл «C:\Program Files (x86)\NUT\etc\upsmon.conf.sample» в «C:\Program Files (x86)\NUT\etc\upsmon.conf» и приводим его к виду:

Открываем консоль cmd с правами Администратор и рестартуем службу:

И наконец там же из cmd проверяем подключение к серверу NUT путем вывода всех параметров ИБП командой:

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

Читайте также:  Кубейсик для windows 10
Оцените статью