Nut linux ups настройка

Обновлено: 08.07.2024

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

Contents

Установка

Настройка

У NUT есть 3 связанных с ним демона:

Идея состоит в том, что если существует несколько систем, подключенных к ИБП, одна может сообщать о состоянии ИБП по сети, а другие могут отслеживать это состояние, запуская свои собственные действия upsmon. У NUT есть обширная документация по конфигурации, здесь же будет рассказано о простой настройке USB-ИБП, а также соответствующего сервера и монитора в одной системе (обычная конфигурация рабочего места).

Настройка драйвера

Конфигурация зависит от типа используемого ИБП. Обратитесь к ранее упомянутому списку совместимого оборудования (Hardware Compatibility List), чтобы узнать, какой драйвер, скорее всего, будет работать с вашим ИБП. Также можно запустить утилиту nut-scanner(8) для обнаружения подключённых устройств, совместимых с NUT.

Для многих ИБП, подключенных по USB, используется драйвер usbhid-ups(8) . Для ИБП с последовательным портом используйте port=/dev/ttySX , где X — номер последовательного порта (например: /dev/ttyS1). Для ИБП с USB-портом используйте port=auto .

Назвать ИБП можно любым удобным именем. ups.conf(5)

Если же драйвер запускается с ошибками, убедитесь, что выбран правильный вариант для вашего оборудования. Возможно, вам придется попробовать другие драйверы, изменив значение "driver .D0.9E.D1.88.D0.B8.D0.B1.D0.BA.D0.B0_.22Can.27t_claim_USB_device.22"> Ошибка "Can't claim USB device"

Или менее конкретное:

Где idVendor и idProduct — производитель устройства и идентификатор продукта. Данную информацию можно найти в выводе ошибки [XXXX:YYYY] или с помощью lsusb .

Примечание: SYMLINK — необязательное правило для добавление символической ссылки на устройство для удобства (в данном случае оно отобразиться как /dev/ups0 при подключении).

После этого обновите и перезагрузите правила udev, выполнив следующую команду:

Настройка upsd

По умолчанию upsd слушает только localhost, что отлично подходит для наших целей. Хотя это необязательно, также можно настроить upsd под свои задачи, отредактировав файл /etc/nut/upsd.conf . Смотрите upsd.conf(5) для получения более подробной информации.

На этом этапе должна быть возможность запустить и включить службу nut-server.service , которая автоматически запустит nut-driver.

При успешном запуске можно выполнить команду upsc <upsname> для получения информации от ИБП. Пример вывода:

Настройка upsmon

Последний шаг — настроить upsmon для прослушивания upsd и выполнения действий при наступлении определённых событий.

Добавьте следующую строку в файл /etc/nut/upsmon.conf :

Также можно настроить, какие оповещения отправляются и куда, какие действия предпринимаются при разряженном аккумуляторе и многое другое. Смотрите upsmon.conf(5) для получения более подробной информации.

Затем запустите и включите службу nut-monitor.service .

В логах должен отобразиться запуск upsmon и мониторинг ИБП.

NUT-Monitor

NUT-Monitor — графический пользовательский интерфейс для мониторинга и управления устройствами, подключенными к серверу Network UPS Tools.

В данном HOWTO мы подробно рассмотрим как поднять Nut в современных версиях ОС GNU/Linux на примере дистрибутива Fedora 17 и UPS Ippon Smart Power Pro (Smart Winner).

KNutClient, запущенный в KDE 4

KNutClient, запущенный в KDE 4

Четыре года назад я уже писал как поднять Ippon в Linux, но та статья безнадёжно устарела, поэтому написана данная полностью с нуля.

Шаг 1. Подготовка к установке

Для работы UPS под Linux нам потребуется установить пакет nut (Network UPS Tools), а также клиент для него (консольный или с графическим интерфейсом).

Мы рассмотрим подробно как установить и настроить nut в дистрибутиве Fedora, а в конце данного руководства приведём полные листинги конфигов.

Шаг 2. Загрузка и установка Nut

Для загрузки и установки пакета nut и всех зависимостей выполните в консоли команду:

Пакет был успешно установлен и готов к дальнейшей настройке.

Шаг 3. Загрузка и установка Midnight Commander

Установите мощный файловый менеджер Midnight Commander консольной командой:

Данный менеджер нам понадобится для быстрого редактирования конфигов и операций с ними. Можно обойтись и без него, запуская например Krusader, Gnome Commander, Nautilus, Dolphin или другой ФМ с графическим интерфейсом. Выбор остаётся за вами, но я рекомендую всё-таки MC, тем более в большинстве дистрибутивов он установлен по умолчанию.

Шаг 4: Подготовка конфигов

Сразу после установки в каталоге /etc/ups/ вы увидите примеры файлов конфигурации с расширением *.conf.sample. Для дальнейшей работы с ними нам необходимо переименовать их в *.conf, отбросив sample. Проще всего это сделать следующей командой в консоли:

Конфиги подготовлены. Можно приступать к редактированию.

Шаг 5: Редактирование nut.conf и ups.conf

Запустите MC с правами root:

Перейдите в каталог /etc/ups/ и откройте файл nut.conf во встроенном редакторе (клавишей F4). В самом конце файла укажите:

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

Откройте в редакторе файл ups.conf. Здесь задаются параметры вашего источника бесперебойного питания. Пример для IPPON, подключённого по USB:

Пример для IPPON, подключённого по RS-232 (COM):

Рассмотрим директивы более подробно:

Шаг 6. Редактирование upsd.conf

В файле upsd.conf задаются параметры доступа к службе UPS. Откройте его в редакторе и в конце пропишите следующие директивы:

Это включит доступ к сервису только для локальных IP-адресов и заставит upsd слушать порт 3493 одновременно на IPv4 и IPv6. Если вы не используете в ЛВС IPv6, то последнюю строку можете закомментировать, либо вообще не прописывать в файле.

Шаг 7. Создание пользователя для службы UPS

Служба UPS, а равно как и монитор, должны запускаться от отдельного пользователя, находящегося в группе nut. Группа nut создаётся автоматически при установке пакета.

Создадим пользователя upsmaster:

Зададим пользователю пароль:

Введите и запомните новый пароль для пользователя upsmaster два раза. Он нам потребуется далее при настройке nut client.

Добавим пользователя upsmaster в группу nut:

Пользователь успешно создан и ему выданы необходимые права.

Шаг 8. Указываем пользователей службы

Здесь в качестве пароля pAssW0RD укажите пароль, который вы задали пользователю upsmaster после его создания.

Шаг 9. Настраиваем мониторинг

Шаг 10. Активируем службу upsd

Включаем службу (это активирует её автоматический запуск при старте системы):

Шаг 11. Проверяем работоспособность службы

Чтобы узнать запустилась служба или нет, выполните:

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

Шаг 12. Проверяем работоспособность UPS

Выполните в консоли:

Если всё настроено верно, вы увидите текущий статус UPS и значения всех его переменных.

Шаг 13. Загружаем KNutClient

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

Если у вас 32-битная версия Fedora, выполните:

На этом установка пакета KNutClient завершена. Перейдём к его настройке.

Шаг 14. Настройка KNutClient

Запустите KNutClient, выберите в меню Settings пункт Configure KNutClient, перейдите на страницу UPS, нажмите кнопку Add.

Настройки KNutClient

Настройки KNutClient

В открывшемся окне пропишите параметры настроенного UPS:

Обязательно поставьте флажок в чекбоксе Store NUT password in configuration file, что заставит KNutClient сохранить пароль в своём файле конфигурации.

В этом же окне выберите датчики, которые будут отображаться на панели KNutClient. Для IPPON Smart Power Pro (Smart Winner) гарантированно работают следующие:

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

Сервис Linux NUT (Network UPS Tools) — это комплекс программ мониторинга и управления различными блоками бесперебойного питания (далее ИБП). Полный список поддерживаемых моделей можно получить, посмотрев список драйверов в файле /usr/share/nut/driver.list.

В руководстве описана настройка отключения ПК агентом NUT при потере напряжения в сети на примере ИБП Eaton 5E 650iUSB на Ubuntu-подобных дистрибутивах. Для использования под другие дистрибутивы используйте пакетный мененджер своего дистрибутива или соберите из исходных кодов. Новейшую версию Network UPS Tools можно скачать на GitHub по ссылке ссылке.

Установка NUT

Для начала следует установить NUT:

Сделаем резерную копию папки с файлами конфигурации NUT:

Теперь добавим директиву, указывающую, что ИБП подключен к данному компьютеру, а не к удаленному:

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

Ищем, поддерживается ли ИБП сервисом NUT. Можно либо просмотреть его вручную либо вывести строки с упоминанием марки ИБП, например:

Теперь, когда мы определились с драйвером, можно настраивать NUT.

Защита конфигурационных файлов

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

Настройка NUT

Настройка драйвера, способа подключения и времени выключения

Дописываем строки в конец файла /etc/nut/ups.conf или создаем новый с таким содержимым:

Настройка доступа системной группы NUT к ИБП по USB

Чтобы NUT имел право на доступ к USB интерфейсу ИБП, нужно написать правило доступа для udev.

udev — подсистема управления устройствами Linux. Благодаря udev в папке /dev находятся только подключенные в данный момент устройства.

и найдем строку, соответствующую ИБП. В нашем примере это

где после ID идет idVendor:idProduct (0463:ffff)

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

После создания правила следует перезагрузить сервис udev:

После этого следует отключить и заново подключить USB кабель от ИБП. После этого выполним команду для проверки работоспособности udev правила:

Если вывод приблизительно такой, то все настроено правильно.

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

Дописываем строки в конец файла /etc/nut/upsd.conf или создаем новый с таким содержимым:

Имейте в ввиду что LISTEN должно быть написано именно большими буквами, или работать ничего не будет.

Настройка профиля пользователя для доступа к NUT

Создаем пользователя upsmonitor без права логина и домашней папки, с UID меньше 1000, чтобы он считался служебным и его не было на экране входа пользователей в систему, и с GID'ом группы nut.

Узнаем GID группы nut:

Теперь подберем UID для пользователя. Либо выберем такой, какой врядли используется какой либо программой, например, 339, либо выполняем:

и если ничего не выводит, то UID свободен и его можно использовать для создания пользователя upsmonitor:

Настройки мониторинга NUT

Дописываем строки в конец файла /etc/nut/upsmon.conf или создаем новый с таким содержимым:

Тест соединения

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

Все поля более менее очевидны или были определены нами в конфигурационных файлах ранее. Коды состояний ИБП отображаются в поле ups.status: и могут принимать значения:

  • OL — система работает от сети;
  • OB — система работает от батареи;
  • LB — система работает от разряженной батареи.

Внутренние команды и переменные ИБП

ИБП можно давать команды напрямую из консоли, с помощью команды upscmd. Список доступных команд можно получить, выполнив команду:

Настройки beeper.* управляют сигнализацией ИБП в случае потери напряжения в сети, load.off выключает ПК немедленно, load.off.delay задержка в секундах до выключения ПК, shutdown.stop — команда прерывания процесса отключения ПК.

В некоторых ИБП присутствуют и другие опции, например, тест батареи или shutdown.return, в случае использования которой компьютер будет выключен, но ИБП пошлет сигнал включения ПК как только восстановится питание в сети. Чтобы это сработало, в БИОСе ПК дожна быть включена соответствующая функция, которая обычно находится где то в районе настроек питания.

Для примера выключим писк ИБП, когда пропадает питание в сети:

Чтобы включить, замените beeper.disable на beeper.enable.

Настройка планировщика задач NUT upssched

Дописываем строки в конец файла /etc/nut/upssched.conf или создаем новый с таким содержимым:

Теперь теперь нужен скрипт /etc/nut/cmd.sh. Создадим его, выставим права и заполним его:

Заключение

На этом настройка завершена. Можно протестировать, банально выдернув ИБП из розетки.


25 Дек 2017 00:12:40 | 15 комментариев

Настройка 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 на этом сервере и других серверах. В случае перехода питания серверов на ИБП и истощения заряда батарей ИБП нужно произвести корректное завершение работы всех серверов.

Настройка серверной части 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 смог работать с ним.

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

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

Если интересно, то запросить информацию у 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 больше не используется и является устаревшей.

В секции [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 серверов.

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 командой

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

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

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

Кроме того, как я писал выше есть более сложный клиент (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 с официального сайта и устанавливаем.

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

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

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

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

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

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

Сервер NUT

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

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

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

Настройки NUT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Проверим подключение к серверу 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.

Читайте также: