Настройка apcupsd debian 10

Обновлено: 07.07.2024

После установки пакет запускается автоматически с настройками по умолчанию.

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

Конфигурационные файлы пакета хранятся в каталоге /etc/apcupsd .

После установки пакет запускается автоматически с настройками по умолчанию,
а именно в предположении, что ИБП подключен через интерфейс USB.
Параметры конфигурации сервиса задаются в файле /etc/apcupsd/apcupsd.conf .
Файл снабжен подробными комментариями по значениям параметров.
После изменения файла конфигурации служба должна быть перезапущена:

Настройка реакции на события

Стандартная реакция сервиса apcupsd на события, о которых сообщает ИБП, определяется в файле /etc/apcupsd/apccontrol .

Файл представляет собой сценарий для интерпретатора /bin/sh.

В файле предусмотрены общепринятые действия на стандартные ситуации с ИБП.

Изменять файл /etc/apcupsd/apccontrol не рекомендуется, так как он может быть перезаписан при обновлении пакета.

Для пользовательских сценариев предусмотрены отдельные файлы-сценарии, автоматически вызываемые из основного сценария.

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

Пользовательские сценарии так же, как и основной сценарий, представляют собой обычные сценарии /bin/sh.

По умолчанию предусмотрены следующие сценарии:

  • changeme — пользовательский сценарий реакции на необходимость замены батареи ИБП
  • commfailure - пользовательский сценарий реакции на потерю связи с ИБП
  • commok - пользовательский сценарий реакции на восстановление связи с ИБП
  • killpower - пользовательский сценарий реакции на аварийное отключение ИБП. Вызывается перед тем, как ИБП отключит питание компьютера.
  • offbattery - пользовательский сценарий реакции восстановление основного электропитания
  • onbattery - пользовательский сценарий реакции на потерю основного электропитания

В пакет apcupsd входят:

    инструмент командной строки apcaccess, позволяющий получать информацию о состоянии ИБП;

инструмент командной строки apctest, позволяющий выполнять настройки ИБП. Перед использованием этого инструмента необходимо остановить службу apcupsd, после использования - запустить:

sudo systemctl stop apcupsd
sudo apctest
sudo systemctl start apcupsd

В пакете apcupsd имеется встроенная возможность получения информации о состоянии ИБП по сети.

  1. осуществляется с помощью сценариев CGI;
  2. осуществляется без авторизации;
  3. при использовании в Astra Linux SE сервер apache2 должен быть переключен в режим "AstraMode off".

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

Установка агента ИБП APC для автоматического выключения ОС Debian GNU/Linux 10 (Buster) - APC PowerChute Network Shutdown 4.3


В случае если физические серверы на базе Debian GNU/Linux 10 «Buster» подключены к ИБП APC, и эти ИБП имеют контроллеры управления APC Network Management Card (NMC), мы можем настроить автоматическое штатное выключение ОС Linux в случае проблем с электропитанием. Для этого на стороне Linux-сервера нам потребуется установить и настроить специального программного агента, управляемого о стороны ИБП - APC PowerChute Network Shutdown (PCNS). Здесь приведён пример установки последней актуальной версии агента APC PCNS 4.3 for Linux на сервер Debian Linux 9.3.

Устанавливаем поддержку Java

Программный пакет PCNS для своей работы требует предустановленной среды Java Runtime Environment (JRE). Хотя устанавливать его предварительно и не обязательно, так как JRE имеется в составе основного дистрибутива PCNS, однако стоит учесть то обстоятельство, что поставляемая в составе PCNS версия JRE не будет в дальнейшем автоматически обновляться в системе (например на неё не будут накладываться исправления безопасности), что само по себе не всегда допустимо. Поэтому мы установим сводобный аналог JRE - OpenJDK Runtime Environment из официальных репозиториев Debian. Это позволит нам в дальнейшем получать обновления безопасности для данного ПО из репозиториев Debian.

Посмотрим текущую установленную версию Java:

Посмотрим какой путь к исполняемым файлам Java используется в системе на данный момент:

Как видим, фактический путь к исполняемым файлам java: /usr/lib/jvm/java-11-openjdk-amd64/bin/java . Запомним этот путь, так как он потребуется нам в дальнейшем при установке PCNS.

Устанавливаем APC PowerChute Network Shutdown

Загружаем пакет pcns430Linux-x86-64.tar.gz с официального сайта APC и распаковываем во временный каталог.

В распакованном каталоге ../Linux_x64 можем найти несколько файлов, в числе которых скрипт установки install.sh .

Этот скрипт установки в рассматриваемой нами версии PCNS 4.3 устроен таким образом, что в случае, если установка выполняется на Linux-системе, то скриптом будет предпринята попытка использовать JRE из поставляемого архива ( jre-11.0.1_linux-x64_bin.tar.gz ), который расположен рядом со скриптом установки. Даже не смотря на то, что в Linux-системе уже установлена такая же или более новая версия JRE.

Для того, чтобы использовать вместо этой старой версии JRE более свежую, установленную нами ранее версию Java 11.0.3, достаточно просто произвольно переименовать архив со старой бандловой версией JRE, например, следующим образом:


Теперь можем запускать скрипт установки:

На первый запрос скрипта установки жмём любую клавишу, например Enter, чтобы ознакомиться с лицензионным соглашением:


Просмотрев лицензионное соглашение набираем yes, чтобы принять его положения:


Соглашаемся с установкой в каталог по умолчанию /opt/APC/PowerChute

Далее скрипт установки предложит нам указать путь к исполняемым файлам Java, так как ранее мы изменили имя файла с архивом JRE из поставки и скрипт не обнаружил предопределённое в его константах имя. Укажем путь к каталогу согласно ранее установленной нами версии Java: /usr/lib/jvm/java-11-openjdk-amd64/bin .


Если бы в нашей системе не было установленной версии Java и мы не меняли бы имя файла с архивом JRE ( jre-11.0.1_linux-x64_bin.tar.gz ), то скрипт установки PowerChute не стал бы задавать лишних вопросов и сразу бы выполнил установку PCNS с привязкой к собственной версии JRE 11.0.1, которую он автоматически распаковал бы из архивного файла в подкаталог /opt/APC/PowerChute/jre-11.0.1 .

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


В процессе установки в систему будет установлена и запущена служба systemd c именем PowerChute.service. Эта служба будет использоваться для автоматического запуска службы PowerChute в процессе запуска системы.

Проверим текущий статус службы и убедимся в том, что она работает, настроена на автоматический запуск, а также то, что используется указанная нами версия Java:


Убедимся в том, что в нашей Linux-системы появились TCP-прослушиватели, созданные процессом java:

Теперь нам нужно добавить правила в брандмауэр Debian Buster, разрешающие доступ к портам PowerChute.

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

Как минимум, доступ к портам PowerChute TCP/UDP 3052 необходимо открыть из сети, в которой находятся контроллеры управления ИБП APC NMC. Кроме того, может потребоваться открыть доступ к веб-странице PowerChute TCP 6547 для сети администраторов, которые будут выполнять удалённую настройку PowerChute на нашем сервере.

В случае, если управление брандмауэром выполняется через «модный» фреймворк nftables, то разрешающие правила могут выглядеть следующим образом:

В том случае, если управление брандмауэром выполняется через iptables, то разрешающие правила могут выглядеть следующим образом

Мы должны увидеть приглашение мастера первоначальной настройки PCNS:


Пройдём шаги мастера по подключению PCNS к контроллерам управления NMC от источников бесперебойного питания, к которым подключен наш Linux-сервер. В нашем примере выполнено отказоустойчивое подключение (Redundant) сразу к двум контроллерам NMC с разных ИБП, к которым подключен сервер разными блоками питания:


Обратите внимание на то, что если ранее не были открыты порты TCP/UDP 3052, то попытки подключения контроллеров NMC к агенту PCNS будут завершаться ошибками.

По завершению процедуры первичного подключения к контроллерам управления ИБП мы получим доступ к основному веб-интерфейсу ПО PowerChute Network Shutdown, где сможем произвести дополнительные настройки реагирования на события связанные с изменением режима электропитания:


Перезагрузим сервер, чтобы убедиться в том, что автоматический запуск службы PowerChute успешно работает после запуска ОС.

Удаление APC PowerChute Network Shutdown

В случае возникновения необходимости удаления APC PowerChute Network Shutdown из Linux-системы, можно воспользоваться вызовом скрипта:


Дополнительные источники информации:

Проверено на следующих конфигурациях:


Автор первичной редакции:
Алексей Максимов
Время публикации: 19.06.2019 17:01

Благодаря Курбан-байраму на этой неделе появилось немного времени попробовать разобраться с ошибкой сегментации памяти в драйвере usbhid-ups из системы NUT.

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

Ставим nut-server и nut-client из репозитория:
На странице руководства usbhid-ups описаны настройки, позволяющие привязать драйвер к строго определённому устройству. Можно указать настройки vendor, vendorid, product, productid, bus, serial.

Ищем идентификатор производителя и модели нашего ИБП при помощи lsusb . У меня ИБП в выводе этой программы выглядит так:
Теперь при помощи команды lsusb -vd 051d:0002 посмотрим другую информацию об ИБП. Я нашёл там серийный номер - он полезен, если к компьютеру подключено два ИБП одной и той же модели.

Используя полученную информацию, настроим драйвер в файле /etc/nut/ups.conf:
Теперь драйвер можно попробовать запустить вручную следующей командой:
В Debian Jessie программа завершается ошибкой сегментации. В Debian Stretch эта ошибка уже исправлена, поэтому в случае Debian Jessie можно сразу перейти к разделу "Исправление прав доступа к устройству" ниже.

Поиск неисправности в драйвере NUT

Исправление неисправности

Исправление прав доступа к устройству

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

Простейший клиент позволяет просматривать текущие параметры ИБП:
Посмотреть значение какого-то одного конкретного параметра можно указав дополнительно его имя:
Кроме того, имеется более сложный клиент, который позволяет не только просматривать настройки, но и выполнять команды. Список доступных команд можно увидеть вот так:
Например, вот так можно отключить на ИБП звуковой сигнал:
Можно убедиться в том, что звуковой сигнал действительно отключен:
Кроме поддержки моделей ИБП разных производителей, NUT выгодно отличается от apcupsd именно возможностью выполнять команды на ИБП. Можно, например, с помощью соответствующей команды протестировать всю процедуру отключения системы.

Однако, мы отклонились от темы. Настроим клиент мониторинга, который будет заниматься слежением за состоянием ИБП и правильным завершением работы при отсутствии электричества и полном разряде батарей. Откроем файл /etc/nut/upsmon.conf и впишем в него следующие настройки:
Команда нужна именно такая, чтобы компьютер включился при подаче питания. Для этого в BIOS выставляется соответствующая настройка, которая либо всегда при появлении электричества подаёт его на блок питания, либо помнит последнее состояние и подаёт питание, если до пропадания электричества компьютер был включен. Если вам интересно узнать назначение остальных настроек, можете почитать одну из моих прошлых заметок NUT и Eaton Powerware 5110, в которой система NUT разобрана досконально.

Осталось включить и запустить клиента мониторинга NUT:
Так же, как и в случае с NUT-сервером, можно проверить состояние клиента мониторинга:
Настройка Zabbix

Предполагается, что на компьютере уже установлен и настроен Zabbix-агент. Добавим в конфигурацию агента "пользовательский параметр". Сделать этом можно либо напрямую отредактировав файл /etc/zabbix/zabbix_agentd.conf, либо создав новый файл в каталоге /etc/zabbix/zabbix_agentd.d/ специально для этого пользовательского параметра. Впишем строчку:
Перезапустим Zabbix-агента, чтобы новые настройки вступили в силу:
Я подготовил два варианта шаблонов - один с элементами данных "Zabbix-агент", а второй - с элементами данных "Zabbix-агент (активный)".

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

Снимаемые с ИБП данные выглядят следующим образом:

Наконец, в шаблоне имеются следующие триггеры:

Дополнительно на узле Zabbix, соответствующем компьютеру, к которому подключены ИБП, можно поставить на контроль наличие работающих процессов upsd и upsmon.

Примеры использования графического клиента NUT и настройки веб-клиента NUT можно посмотреть в прошлой заметке, посвящённой настройке NUT: NUT и Eaton Powerware 5110.

APCUPSd (APC UPS Daemon) — пакет программ для управления ИБП фирмы APC.

Работ под управлением Linux и MS Windows (в том числе 64-битные версии 1) ), MacOS X.

В пакет входят следующие программы:

Дополнительно можно установить документацию и APC UPS Power Management (web interface):

BATTERYLEVEL

Уровень заряда батарей в процентах (%).

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

Значение по умолчанию: 5

Значение для отключения этого параметра: -1

MINUTES

Время работы от батарей, в минутах.

Если указано значение MINUTES, то во время отключения электроэнергии, apcupsd выдаст команду на завершение выключение системы, когда оставшиеся время работы от батарей (рассчитанное ИБП ) будет меньше заданного времени.

Значение по умолчанию: 3

Расчетное время работы от батарей TIMELEFT может быть получено в результате выполнения команды apcaccess

Если значение равно нулю или неправдоподобное, то ИБП , вероятно, сломан.

Значение для отключения этого параметра: -1

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

TIMEOUT

Время в секундах.

После отключения электропитания, apcupsd будет остановить систему, когда заданное в этом параметре время в секундах, уже истекло.

Чтобы отключить этот параметр установите его значение -1

Для получения дополнительной информации см. apctest.

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

TIMEOUT, BATTERYLEVEL, and MINUTES can be set together without problems. apcupsd will react to the first case or test that is valid. Normally SmartUPS users will set TIMEOUT to zero so that the system is shutdown depending on the percentage battery charge remaining (BATTERYLEVEL) or the remaining battery runtime (MINUTES).

ANNOY

Время в секундах.

Этот счётчик запускается только тогда, когда ИБП работает от батареи.

Значение по умолчанию это 300 секунд (5 минут).

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