Отличия в 4 сообщении ниже скрипта
Ранее мы разобрали работу и мониторинг Мониторинг APC Smart UPS 2200 через PowerChute Business Edition она так же доступна для Linux но в .rpm - пакете для Debian нужен пакет .deb можно его сконвертировать но при установке он только копирнет файлы в папку opt далее все ручками - поэтому это оставим на потом (разбор установки).
Наиболее распространённые программы под Linux для ИБП APC это APCUPSD и NUT с дополнительными пакетами визуализации, отправки сообщений и т.д. Под них уже есть готовые шаблонных заббикс но через UserParameter, я сделал свои шаблоны для которых дополнительные данные прописывать на проверяемом узле не надо, все запрашивается (доступны разные варианты) и обрабатывается на самом заббикс сервере.
Делаем на основе APCUPSD доступна на Linux и Windows.
Официальная документация APCUPSD объемная с кучей примеров и разборов
Установка будет производится на Debian 10 с подключённой ИБП APC Smart UPS 2200.
Проверим подключение:
Код: Выделить всё
lsusb
Bus 002 Device 004: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Устанавливаем из репозитория apcupsd и документацию
Код: Выделить всё
apt-get install apcupsd apcupsd-doc
Код: Выделить всё
nano /etc/default/apcupsd
Код: Выделить всё
nano /etc/apcupsd/apcupsd.conf
#
# "apcupsd" Конфигурационный файл POSIX
#
# Обратите внимание, что демон apcupsd должен быть перезапущен, чтобы изменения в
# этот файл конфигурации станет активным.
#
#
# ========= Общие параметры конфигурации ============
#
# НАЗВАНИЕ ИБП xxx
# Используйте это, чтобы дать вашему ИБП имя в файлах журналов и т.п. Это
# особенно полезно, если у вас несколько ИБП. Это не
# установить ЭСППЗУ EEPROM. Должно быть 8 символов или меньше.
#UPSNAME
# КАБЕЛЬ ИБП <кабель>
# Определяет тип кабеля, соединяющего ИБП с компьютером.
#
# Возможные общие варианты для <кабель>:
# simple, smart, ether, usb
#
# Или можно использовать конкретный номер модели кабеля:
# 940-0119A, 940-0127A, 940-0128A, 940-0020B,
# 940-0020C, 940-0023A, 940-0024B, 940-0024C,
# 940-1524C, 940-0024G, 940-0095A, 940-0095B,
# 940-0095C, 940-0625A, M-04-02-2000
#
UPSCABLE usb
# Чтобы заставить работать apcupsd, в дополнение к определению кабеля
# выше, вы также должны определить ИБП ТИП UPSTYPE, который соответствует
# тип вашего ИБП (подробности см. в описании).
# Вы также должны указать УСТРОЙСТВО, иногда называемое портом.
# Для USB-ИБП оставьте директиву DEVICE пустой. За
# других типов ИБП необходимо указать соответствующий порт или адрес.
#
# ИБП ТИП УСТРОЙСТВ Описание
# apcsmart /dev/tty** Новое последовательное символьное устройство, подходящее для
# Модели SmartUPS(Умное ИБП), использующие последовательный кабель (не USB).
#
# usb <BLANK> Большинство новых ИБП имеют USB. Пустое УСТРОЙСТВО
# параметр включает автоопределение, т.е.
# лучший выбор для большинства инсталляций.
#
# net hostname:port Сетевая ссылка на главный apcupsd через apcupsd
# Сетевой информационный сервер. Это используется, если
# ИБП, питающий ваш компьютер, подключен к
# другой компьютер для мониторинга.
#
# snmp hostname:port:vendor:community
# Сетевой канал SNMP для ИБП с поддержкой SNMP.
# Имя хоста — это IP-адрес или имя хоста ИБП.
# в сети. Поставщик может быть "APC" или
# "APC_NOTRAP". «APC_NOTRAP» отключит ловушку trap SNMP.
# ловля; обычно вы хотите "APC". Порт обычно
# 161. Сообщество обычно "приватное""private".
#
# netsnmp hostname:port:vendor:community
# УСТАРЕВШИЙ
# То же, что и SNMP выше, но требует использования
# библиотека net-snmp. Если у вас нет особой потребности
# для этого старого драйвера вам следует использовать 'snmp'.
#
# dumb /dev/tty** Старое серийное символьное устройство для использования с
# ИБП с простой сигнализацией.
#
# pcnet ipaddr:username:passphrase:port
# Протокол сетевого отключения PowerChute, который можно
# используется как альтернатива SNMP с AP9617
# семейство смарт-слотов. ipaddr это IP
# адрес платы управления ИБП. имя пользователя и
# фраза-пароль — это учетные данные, для которых карта
# был настроен. port — это номер порта на
# что слушать сообщения от ИБП, обычно
# 3052. Если этот параметр пуст или отсутствует,
# будет использовано значение по умолчанию 3052.
#
# modbus /dev/tty** Серийное устройство для использования с новейшими моделями SmartUPS
# поддержка протокола MODBUS.
# modbus <BLANK> Оставьте параметр DEVICE пустым для MODBUS через USB.
# или установите серийный номер ИБП, чтобы гарантировать
# что apcupsd привязывается к этому конкретному юниту
# (полезно, если у вас более одного ИБП USB).
#
UPSTYPE usb
#DEVICE /dev/ttyS0
# ВРЕМЯ ОПРОСА <int>
# Интервал (в секундах), с которым apcupsd опрашивает состояние ИБП. Это
# настройка применяется как к непосредственно подключенным ИБП (UPSTYPE apcsmart, usb,
# dumb) и сетевых ИБП (UPSTYPE net, snmp). Уменьшение этого параметра
# улучшит реакцию apcupsd на определенные события за счет
# более высокая загрузка процессора. Значение по умолчанию 60 подходит для большинства
# ситуации.
POLLTIME 25
# БЛОКИРОВАТЬ ФАЙЛ <путь к файлу блокировки>
# Путь к файлу блокировки устройства. Это каталог, в который файл блокировки
# будет написано. Каталог должен уже существовать; apcupsd не создаст
# Это. Фактическое имя файла блокировки вычисляется из DEVICE.
# Не используется в Win32.
LOCKFILE /var/lock
# КАТАЛОГ СЦЕНАРИЙ <путь к каталогу скрипта>
# Каталог, в котором расположены сценарии apccontrol и событий.
SCRIPTDIR /etc/apcupsd
# СБОЙ ПИТАНИЯ НАПРАВЛ. <путь к каталогу сбоя питания>
# Каталог для записи файла флага сбоя питания. Этот файл
# создается, когда apcupsd инициирует отключение системы и
# проверено в сценариях остановки ОС, чтобы определить,
# (отключение выходной мощности ИБП) требуется.
PWRFAILDIR /etc/apcupsd
# Каталог БЕЗ ВХОДА в СИСТЕМУ <путь к каталогу без входа в систему>
# Каталог, в который нужно записать файл nologin (без входа). Существование
# этого файла флага сообщает операционной системе запретить новые входы в систему.
NOLOGINDIR /etc
#
# ======== Параметры конфигурации, используемые во время сбоев питания ==========
#
# ЗАДЕРЖКА ВКЛЮЧЕНИЯ БАТАРЕИ - это время в секундах с момента сбоя питания
# обнаруживается до тех пор, пока мы не отреагируем на него событием включения батареи.
#
# Это означает, что управление apc будет вызвано с аргументом об отключении питания
# немедленно при обнаружении сбоя питания. Однако, в
# аргумент на батареи передается элементу управления ПК только после
# ВРЕМЯ ЗАДЕРЖКИ ВКЛЮЧЕНИЯ время. Если вы не хотите, чтобы вас раздражали короткие
# сбои в подаче питания, убедитесь, что отключение питания apc control ничего не делает
# т.е. прокомментируйте строку.
ONBATTERYDELAY 6
#
# Примечание: УРОВЕНЬ ЗАРЯДА БАТАРЕИ(BATTERYLEVEL), МИНУТЫ(MINUTES) и ТАЙМ-АУТ(TIMEOUT) работают совместно, поэтому
# первое, что произойдет, приведет к инициированию завершения работы.
#
# Если во время сбоя питания оставшийся процент заряда батареи
# (# (как сообщает ИБП) ниже или равно УРОВНЮ ЗАРЯДА БАТАРЕИ,
# apcupsd инициирует завершение работы системы.
BATTERYLEVEL 20
# Если во время сбоя питания оставшееся время выполнения в минутах
# (как рассчитывается внутри ИБП) меньше или равно МИНУТАМ,
# apcupsd, инициирует завершение работы системы.
MINUTES 5
# Если во время сбоя питания ИБП работал от батарей в течение ТАЙМ-аута
# через много секунд или дольше apcupsd инициирует завершение работы системы.
# Значение 0 отключает этот таймер.
#
# Обратите внимание, что если у вас есть интеллектуальный ИБП, вы, скорее всего, захотите отключить
# # это время, установив его равным нулю. Таким образом, ваши ИБП будут продолжать
# # работать от батарей до тех пор, пока оставшийся процент заряда не упадет до УРОВНЯ заряда БАТАРЕИ или ниже него.,
# или оставшееся время автономной работы упадет до нескольких МИНУТ или ниже. Конечно,
# если вы проводите тестирование, установка этого значения на 60 приводит к быстрому завершению работы системы
# если вы выдернете вилку из розетки.
# Если у вас более старый немой ИБП, вам нужно будет установить значение меньше, чем
# время, когда вы знаете, что можете работать на батарейках.
TIMEOUT 0
# Время в секундах между выходом раздражающих пользователей из системы до
# завершение работы системы. 0 отключает.
ANNOY 300
# Первоначальная задержка после сбоя питания перед предупреждением пользователей о получении
# выключите систему.
ANNOYDELAY 60
# Условие, определяющее, когда пользователям запрещается
# вход в систему во время сбоя питания.
# # НЕТ ВХОДА В СИСТЕМУ <строка> [ disable | timeout | percent | minutes | always ]
NOLOGON disable
# Если ЗАДЕРЖКА ЗАВЕРШЕНИЯ не равна нулю, apcupsd продолжит работу после
# было запрошено завершение работы, и по истечении указанного времени в
# секундная попытка отключить питание. Это предназначено для использования в системах
# где apcupsd не может восстановить управление после завершения работы.
# # ЗАДЕРЖКА ОТКЛЮЧЕНИЯ <секунды> 0 отключает
KILLDELAY 0
#
# ==== Инструкции по настройке Сервера сетевой информации ====
#
# NETSERVER [ on | off ] on. включает, off. отключает сеть
# информационный сервер. Если состояние сети включено, появится информация о сети
# серверный процесс будет запущен для обслуживания СТАТУСА и
# Данные о событиях по сети (используются программами CGI).
NETSERVER on
# NISIP <пунктирное обозначение ip-адреса>
# IP-адрес, по которому NIS-сервер будет прослушивать входящие соединения.
# # Это полезно, если ваш сервер является многоквартирным (имеет более одного
# сетевого интерфейса и IP-адреса). Значение по умолчанию равно 0.0.0.0, которое
# означает, что любой входящий запрос будет обработан. В качестве альтернативы вы можете
# настроить этот параметр на любой конкретный IP-адрес вашего сервера и
# NIS будет прослушивать соединения только на этом интерфейсе. Используйте
# адрес обратной связи (127.0.0.1) для приема подключений только от
# локальной машины.
NISIP 127.0.0.1
# NISPORT <порт> значение по умолчанию - 3551, зарегистрированное в IANA
# порт, используемый для отправки данных о СОСТОЯНИИ и СОБЫТИЯХ по сети.
# # Он не используется, если не включен СЕТЕВОЙ СЕРВЕР. Если вы измените этот порт,
# вам нужно будет изменить соответствующее значение в каталоге cgi
# и перестроить программы cgi.
NISPORT 3551
# Если вы хотите, чтобы последние несколько СОБЫТИЙ были доступны по сети
# # с помощью сервера сетевой информации вы должны определить ФАЙЛ СОБЫТИЙ.
EVENTSFILE /var/log/apcupsd.events
# EVENTSFILEMAX <килобайт>
# По умолчанию размер ФАЙЛА СОБЫТИЙ не должен превышать
# 10 килобайт. Когда размер файла превысит это ограничение, более старые СОБЫТИЯ будут
# должны быть удалены с начала файла (первый вход - первый выход). То
# параметру EVENTSFILEMAX можно присвоить другое значение в килобайтах или установить
# # к нулю, чтобы позволить ФАЙЛУ СОБЫТИЙ неограниченно расти.
EVENTSFILEMAX 10
#
# ========== Инструкции конфигурации, используемые при совместном использовании =============
# ИБП с несколькими машинами
#
# Остальные элементы предназначены ТОЛЬКО для общих ИБП (плата расширения APC)
#
# UPSCLASS [ standalone | shareslave | sharemaster ]
# Обычно автономный, если только вы не используете общий ИБП с помощью карты APC Share UPS.
UPSCLASS standalone
# UPSMODE [ disable | share ]
# Обычно отключается, если вы не используете общий доступ к ИБП с помощью карты APC Share UPS.
UPSMODE disable
#
# ===== Инструкции конфигурации для управления протоколированием системы apcupsd ========
#
# Интервал времени в секундах между записью файла СОСТОЯНИЯ; 0 отключает
STATTIME 0
# Расположение файла СОСТОЯНИЯ (записывается только в том случае, если ВРЕМЯ НАЧАЛА не равно нулю)
STATFILE /var/log/apcupsd.status
# LOGSTATS [ on | off ] on включено, off отключено
# Обратите внимание! Это генерирует много выходных данных, поэтому, если
# вы включаете это устройство, убедитесь, что
# файл, определенный в syslog.conf для LOG_NOTICE, является именованным каналом.
# Вы, вероятно, не хотите, чтобы это было включено.
LOGSTATS off
# Интервал времени в секундах между записью записей ДАННЫХ в файл журнала. 0 отключает.
DATATIME 0
# СРЕДСТВО определяет средство ведения журнала (класс) для ведения журнала в системный журнал.
# Если не указано, по умолчанию используется значение "демон". Это полезно
# если вы хотите отделить данные, регистрируемые apcupsd, от других программ.
#FACILITY DAEMON
#
# ========== Инструкции по настройке, используемые при обновлении EPROM ИБП =========
#
#
# Эти инструкции используются только apctest при выборе "Установить EEPROM с конфигурацией
# значения файла" из меню EEPROM. ЭТИ ЗАЯВЛЕНИЯ НЕ ОКАЗЫВАЮТ НИКАКОГО ВЛИЯНИЯ НА APCUPSD.
#
# Имя ИБП, не более 8 символов
#UPSNAME UPS_IDEN
# Дата заряда батареи - 8 символов
#BATTDATE mm/dd/yy
# Чувствительность к качеству сетевого напряжения (H вызывает более быструю передачу на батареи)
# SENSITIVITY H M L (по умолчанию = H)
#SENSITIVITY H
# Задержка ИБП после возврата питания (секунды)
# ПРОБУЖДЕНИЕ 000 060 180 300 (по умолчанию = 0)
WAKEUP 5
# Льготный период ИБП после запроса на отключение питания (секунды)
# СПАТЬ 020 180 300 600 (по умолчанию = 20)
#SLEEP 180
# Низкое напряжение в сети, вызывающее передачу на батареи
# Допустимые значения зависят от вашей модели, как определено в последней букве
# # ПРОШИВКИ или МОДЕЛИ APC. Некоторыми репрезентативными значениями являются:
# D 106 103 100 097
# M 177 172 168 182
# A 092 090 088 086
# I 208 204 200 196 (значение по умолчанию = 0 => недопустимо)
LOTRANSFER 208
# Высокое напряжение в сети, вызывающее передачу на батареи
# Допустимые значения зависят от вашей модели, как определено в последней букве
# # ПРОШИВКИ или МОДЕЛИ APC. Некоторыми репрезентативными значениями являются:
# D 127 130 133 136
# M 229 234 239 224
# A 108 110 112 114
# I 253 257 261 265 (значение по умолчанию = 0 => недопустимо)
HITRANSFER 253
# Зарядное устройство, необходимое для восстановления питания
# Процент заряда батареи, необходимый ИБП для восстановления питания подключенного оборудования.
# # ПЛАТА ЗА ВОЗВРАТ 00 15 50 90 (по умолчанию = 15)
RETURNCHARGE 1
# Задержка сигнала тревоги
# 0 = нулевая задержка после сбоя pwr, T = сбой питания + 30 сек, L = низкий заряд батареи, N = никогда
# BEEPSTATE 0 T L N (по умолчанию = 0)
#BEEPSTATE T
# Задержка предупреждения о низком заряде батареи в минутах
# LOWBATT 02 05 07 10 (по умолчанию = 02)
#LOWBATT 2
# Выходное напряжение ИБП при работе от батарей
# Допустимые значения зависят от вашей модели, как определено в последней букве
# # ПРОШИВКИ или МОДЕЛИ APC. Некоторыми репрезентативными значениями являются:
# D 115
# M 208
# A 100
# I 230 240 220 225 (значение по умолчанию = 0 => недопустимо)
OUTPUTVOLTS 230
# Интервал самопроверки в часах 336=2 недели, 168=1 неделя, ON=при включении питания, OFF=Никогда
# SELFTEST 336 168 ON OFF (по умолчанию = 336)
SELFTEST 336 ON
Код: Выделить всё
nano /etc/apcupsd/hosts.conf
#
# Этот файл выполняет двойную функцию - в нем перечислены системы, которые multimon будет
# # отслеживать, а также указывает системы, к которым разрешен доступ upstarts.
# часы. Среди прочего, это удерживает людей от отправки случайных адресов в северную
# часть штата. изображение ups также использует этот файл, чтобы узнать, кто это.
# может также поговорить с . upsfstats.
#
# Использование: список систем, использующих upsd, которые вы хотите отслеживать
#
# МОНИТОР <адрес> "<описание хоста>"
#
# Пожалуйста, обратите внимание, что МОНИТОР должен начинаться с столбца 1 (пробелы не допускаются)
#
# Пример:
# MONITOR 10.64.1.1 "Финансовый отдел"
# MONITOR 10.78.1.1 "Комната данных средней школы Сьерра №1"
#
MONITOR 127.0.0.1 "Local Host"
#MONITOR 192.168.175.111 "Local Host IP"
Код: Выделить всё
nano /etc/apcupsd/multimon.conf
#
# Этот файл не требуется. Без этого multimon будет использовать макет поля по умолчанию.
#
# Выбор температуры
#
# Выберите "TEMP" для градуса Цельсия или "TEMP" для градуса Фаренгейта. Это переопределит
# параметр --enable-celsius из компиляции. ТЕМПЕРАТУРА ИБП (ниже) будет.
# используйте этот параметр по умолчанию.
TEMPC
# Формат:
# ПОЛЕ <переменная> "<имя поля>" "<суффикс поля>"
# FIELD battpct "Battery Chg" "%"
#
# <переменная> это либо слово из протокола ИБП, например battchg (см.
# таблицу в src/cgi/upsfetch.c), либо специальное слово в верхнем регистре.
#
# Специальные слова - это:
# MODEL - Показать название модели для этой системы голубым цветом
#
# STATUS - Проанализируйте статус для этой системы, используя соответствующий цвет
#
# UPSTEMP Температура ИБП и температура AMB используют шкалу по умолчанию. Это значение равно C, если вы используете
# --enable-celsius во время компиляции *or* * или *, если вы используете "TEMPS" выше.
#
# UPSTEMP - Отображение температуры ИБП в шкале по умолчанию (суффикс игнорируется)
# AMBTEMP - Отображение температуры окружающей среды в шкале по умолчанию (суффикс игнорируется)
#
# UPSTEMPC - Отображение температуры ИБП в градусах C (суффикс игнорируется)
# UPSTEMPF - Отображение температуры ИБП в градусах по Фаренгейту (суффикс игнорируется)
# AMBTEMPC - Отображение температуры окружающей среды в градусах C (суффикс игнорируется)
# AMBTEMPF - Отображение температуры окружающей среды в градусах по Фаренгейту (суффикс игнорируется)
#
# Их называют "особенными", поскольку они действительно понимают
# печатаемый контент и делают другие вещи, основываясь на том, что там есть
#
# <имя поля> - это то, как вы хотели бы, чтобы этот столбец назывался на странице.
# Помните, что это HTML, поэтому вы действительно можете встроить сюда разметку.
# Это означает, что вы даже можете включить сюда изображения. Вы можете включить цитаты
# (и обратная косая черта!) в строке, экранируя их с помощью обратной косой черты (\).
#
# <суффикс поля> обычно представляет собой что-то вроде % или VAC. Это полезно, если
# вы хотите передать единицы измерения, которые применяются к значению.
#
# Пример конфигурации
FIELD SYSTEM "System" ""
FIELD MODEL "Model" ""
FIELD STATUS "Status" ""
FIELD battpct "Battery Chg" "%"
FIELD utility "Utility" "VAC"
FIELD loadpct "UPS Load" "%"
FIELD UPSTEMP "UPS Temp" ""
FIELD runtime "Batt. Run Time" "min."
FIELD DATA "Data" "All data"
# Они полезны только в том случае, если у вас есть модель Smart-UPS с функцией Measure-UPS II
# измерительная карта. В настоящее время никакие другие модели не поддерживают эти функции.
#
# FIELD AMBTEMP "температура окружающей среды" ""
# FIELD HUMIDITY "Влажность окружающей среды" "%"
#
# Авторское право (C) 1999-2002 Риккардо Факкетти <riccardo@master.oasi.gpa.it >
#
# платформы/apccontrol. Генерируется из apccontrol.in путем настройки.
#
# Обратите внимание, что это универсальный файл, который может использоваться большинством
# систем. Если конкретная система должна иметь что-то
# специальное, начните с этого файла и поместите копию в подкаталог платформы.
#
#
# Эти переменные необходимы для настройки других переменных autoconf.
#
prefix=/usr
exec_prefix=${prefix}
APCPID=/var/run/apcupsd.pid
APCUPSD=/sbin/apcupsd
SHUTDOWN=/sbin/shutdown
SCRIPTSHELL=/bin/sh
SCRIPTDIR=/etc/apcupsd
WALL=wall
export SYSADMIN=root
export APCUPSD_MAIL="mail"
if [ -f $SCRIPTDIR/config ]; then . $SCRIPTDIR/config ; fi
#
# Объедините все выходные данные этого скрипта в файл событий
# Обратите внимание, что следующее убивает сценарий в ситуации сбоя питания
# где диски монтируются только для чтения.
# exec >>/var/log/apcupsd.events 2>&1
#
# Эта часть предназначена для замены поведения по умолчанию вашим собственным сценарием,
# perl или программа на языке Си.
# Вы можете настроить каждую отдельную команду, создающую исполняемый файл (может быть
# скрипт или скомпилированная программа) и вызывая его так же, как параметр $1
# передается apcupsd этому скрипту.
#
# После выполнения вашего скрипта apc control продолжит выполнение действия по умолчанию.
# Если вы не хотите, чтобы apccontrol продолжался, выйдите из своего скрипта с помощью exit.
# код 99. Например, "выход 99".
#
# ПРЕДУПРЕЖДЕНИЕ: файл управления apc будет перезаписываться при каждом обновлении вашего
# apcupsd, выполняем `make install". Ваши собственные настроенные скрипты не будут
# перезаписано. Если вы хотите внести изменения в этот файл (не рекомендуется), вы
# # следует изменить apc control.sh.in а затем повторно запустите процесс настройки.
#
if [ -f ${SCRIPTDIR}/${1} -a -x ${SCRIPTDIR}/${1} ]
then
${SCRIPTDIR}/${1} ${2} ${3} ${4}
# код выхода 99 означает, что он не хочет, чтобы мы выполняли действие по умолчанию
if [ $? = 99 ] ; then
exit 0
fi
fi
case "$1" in
killpower)
echo "Управление Apc выполняется: ${APCUPSD} --отключение питания ИБП ${2}" | (${WALL} 2>/dev/null || cat)
sleep 10
${APCUPSD} --killpower
echo "Управление Apc выполнило: ${APCUPSD} --отключение питания ИБП ${2}" | (${WALL} 2>/dev/null || cat)
;;
commfailure)
echo "Предупреждение о потере связи с ИБП ${2}" | ${WALL}
;;
commok)
echo "Связь восстановлена с ИБП ${2}" | ${WALL}
;;
#
# отключение питания, включение батареи, выключение батареи, повторное подключение к сети происходят события
# в таком порядке.
#
powerout)
;;
onbattery)
echo "Сбой питания ИБП ${2}. Работает на батарейках." | ${WALL}
;;
offbattery)
echo "Питание ИБП вернулось ${2}..." | ${WALL}
;;
mainsback)
if [ -f /etc/apcupsd/powerfail ] ; then
printf "Продолжение работы с выключением." | ${WALL}
fi
;;
failing)
echo "Разряженный аккумулятор ИБП ${2}. Выполнение выключения." | ${WALL}
;;
timeout)
echo "Превышен лимит времени автономной работы ИБП ${2}. Выполнение выключения." | ${WALL}
;;
loadlimit)
echo "Оставшийся заряд батареи ниже предельного значения для ИБП ${2}. Выполнение выключения." | ${WALL}
;;
runlimit)
echo "Оставшееся время автономной работы ИБП ниже предельного значения ${2}. Выполнение выключения." | ${WALL}
;;
doreboot)
echo "ИБП ${2} инициирующая Последовательность Перезагрузки" | ${WALL}
${SHUTDOWN} -r now "apcupsd ИБП ${2} инициированная перезагрузка"
;;
doshutdown)
echo "ИБП ${2} инициированная Последовательность Выключения" | ${WALL}
${SHUTDOWN} -h now "apcupsd ИБП ${2} инициированное завершение работы"
;;
annoyme)
echo "Проблемы с питанием ИБП ${2}. Пожалуйста, выйдите из системы." | ${WALL}
;;
emergency)
echo "Аварийное Отключение. Возможный отказ батареи ИБП ${2}." | ${WALL}
;;
changeme)
echo "Чрезвычайная ситуация! В ИБП вышли из строя батареи ${2}. Замените их СЕЙЧАС на новые" | ${WALL}
;;
remotedown)
echo "Удаленное выключение. Начало Последовательности Выключения." | ${WALL}
;;
startselftest)
;;
endselftest)
;;
battdetach)
;;
battattach)
;;
*) echo "Использование: ${0##*/} команд"
echo " предупреждение: этот скрипт предназначен для запуска с помощью"
echo " apcupsd и никогда не должны запускаться пользователями."
exit 1
;;
esac
color: black;
background: white;
}
div.Center {
text-align: center;
}
img {
border-style: none;
}
pre {
text-align: left;
}
strong {
color: red;
}
table.Outer {
color: black;
background: #60a0a0;
empty-cells: show; border: solid #60a0a0
}
th.Outer {
color: black;
background: #60b0b0
}
.Title {
font-size: 18pt;
}
.SubTitle {
font-size: 12pt;
}
.Empty {
color: black;
background: aqua;
}
.Fault {
color: black;
background: red;
}
.Label {
color: black;
background: aqua;
}
.Normal {
color: black;
background: lime;
}
.Warning {
color: black;
background: yellow;
}
#
# Этот сценарий оболочки, если он помещен в /etc/apcupsd
# будет вызван /etc/apcupsd/apccontrol, когда apcupsd
# определяет, что аккумулятор необходимо заменить.
# Мы отправляем root сообщение по электронной почте, чтобы уведомить его.
#
HOSTNAME=`hostname`
MSG="$HOSTNAME ИБП $1 аккумулятор нужно заменить ПРЯМО СЕЙЧАС."
#
(
echo "$MSG"
echo " "
/sbin/apcaccess status
) | $APCUPSD_MAIL -s "$MSG" $SYSADMIN
exit 0
#
# Этот сценарий оболочки, если он помещен в /etc/apcupsd
# будет вызван /etc/apcupsd/apccontrol, когда apcupsd
# теряется контакт с ИБП (т.е. последовательное соединение не отвечает).
# Мы отправляем root сообщение по электронной почте, чтобы уведомить его.
#
HOSTNAME=`hostname`
MSG="$HOSTNAME Связь с ИБП $1 потеряна"
#
(
echo "$MSG"
) | $APCUPSD_MAIL -s "$MSG" $SYSADMIN
exit 0
#
# Этот сценарий оболочки, если он помещен в /etc/apcupsd
# будет вызван /etc/apcupsd/apccontrol, когда apcupsd
# теряется контакт с ИБП (т.е. последовательное соединение не отвечает).
# Мы отправляем root сообщение по электронной почте, чтобы уведомить его.
#
HOSTNAME=`hostname`
MSG="$HOSTNAME Связь с ИБП $1 восстановлена"
#
(
echo "$MSG"
echo " "
/sbin/apcaccess status
) | $APCUPSD_MAIL -s "$MSG" $SYSADMIN
exit 0
#
# Этот сценарий оболочки, если он помещен в /etc/apcupsd
# будет вызван /etc/apcupsd/apccontrol перед
# apcupsd отключает питание ИБП. Вы, вероятно,
# необходимо отредактировать это, чтобы смонтировать /usr и /var, доступные только для чтения,
# в противном случае apcupsd не запустится.
# Выберите одно из этих решений
#mount -n -o ro /usr
#mount -n -o ro /var
#
#mount | awk '/ext2/ { print $3 }' | while read line; do
# mount -n -o ro,remount $line
#done
#mount | awk '/ext3/ { print $3 }' | while read line; do
# mount -n -o ro,remount $line
#done
#mount | awk '/reiserfs/ { print $3 }' | while read line; do
# mount -n -o ro,remount $line
#done
exit 0
#
# Этот сценарий оболочки, если он помещен в /etc/apcupsd
# будет вызван /etc/apcupsd/apccontrol, когда....
# # ИБП возвращается к электросети после сбоя питания.
# Мы отправляем root сообщение по электронной почте, чтобы уведомить его.
#
HOSTNAME=`hostname`
MSG="$HOSTNAME ИБП $1 Питание восстановлено"
#
(
echo "$MSG"
echo " "
/sbin/apcaccess status
) | $APCUPSD_MAIL -s "$MSG" $SYSADMIN
exit 0
#
# Этот сценарий оболочки, если он помещен в /etc/apcupsd
# будет вызван /etc/apcupsd/apccontrol, когда ИБП
# работает от батареек.
# Мы отправляем root сообщение по электронной почте, чтобы уведомить его.
#
HOSTNAME=`hostname`
MSG="$HOSTNAME ИБП $1 Сбой питания !!!"
#
(
echo "$MSG"
echo " "
/sbin/apcaccess status
) | $APCUPSD_MAIL -s "$MSG" $SYSADMIN
exit 0
### BEGIN INIT INFO
# Provides: ибп-монитор
# Required-Start:
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start:
# Default-Stop:
# Short-Description: Стоп ибп-монитор
# Description: apcupsd обеспечивает управление питанием ИБП для продуктов APC.
### END INIT INFO
# Мартин Митчелл <martin@debian.org>
# модификации Гордона Морхауса <spambox@evernex.com> Апрель 2001 года
#
# Изменено на "неблокирующее" Бьорном Вибергом <bjorn.wiberg@home.se> 2004-10-21
# Поместите этот скрипт в /etc/init.d/ups-monitor, чтобы /etc/init.d/halt мог его найти!
case "$1" in
poweroff | killpower)
if [ -f /etc/apcupsd/powerfail ]; then
echo ""
echo -n "apcupsd: Заказ ИБП на отключение питания... "
/etc/apcupsd/apccontrol killpower
echo "Выполнено."
echo ""
echo "Пожалуйста, убедитесь, что ИБП выключен перед перезагрузкой."
echo "В противном случае ИБП может отключить питание во время перезагрузки!"
echo ""
fi
;;
*)
;;
esac
exit 0
/etc/init.d/apcupsd start или stop или restart
Код: Выделить всё
service apcupsd start
chkconfig --add apcupsd
chkconfig apcupsd on
или
update-rc.d apcupsd defaults
update-rc.d apcupsd defaults
или
systemctl enable apcupsd.service
systemctl enable apcupsd.service
Проверка состояния ИБП:
apcaccess
Код: Выделить всё
apcaccess status
apcaccess status 127.0.0.1:3551 - 1я ИБП
apcaccess status 127.0.0.1:3552 - 2я ИБП
apcaccess status 127.0.0.1:3553 - 3я ИБП
Пример максимального ответа с описанием:
APC : 001,043,1019 (Заголовок: версия формата данных, число записей, длина данных в байтах.)
DATE : 2022-09-02 16:18:34 +0300 (Дата, время получения данных с ИБП.)
HOSTNAME : ZABBIXSERVER (Имя хоста к которому подключён ИБП.)
UPSNAME : ZABBIXSERVER (Имя ИБП, записанное EEPROM или заданное в поле UPSNAME файла настройки.)
VERSION : 3.14.14 (31 May 2016) debian (Версия, дата сборки apcupsd, платформа (ОС).)
CABLE : USB Cable (Тип кабеля, заданный в поле UPSCABLE файла настройки.)
DRIVER : USB UPS Driver (Название драйвера apcupsd)
MODEL : Smart-UPS 2200 RM (Модель ИБП)
UPSMODE : Stand Alone (Режим работы apcupsd заданный в поле UPSMODE файла настройки)
STARTTIME: 2022-09-02 16:11:11 +0300 (Дата, время запуска apcupsd.)
STATUS : ONLINE (Текущее состояние (статус) ИБП.)
MASTERUPD: (Последний раз, когда мастер отправлял обновление ведомому)
LINEV : 221.7 Volts (Напряжение на входе ИБП)
LOADPCT : 26.6 Percent (Уровень нагрузки ИБП (%))
BCHARGE : 100.0 Percent (Уровень заряда батареи (%).)
TIMELEFT : 7.0 Minutes (Оставшееся время работы от батареи по оценке ИБП.)
MBATTCHG : 5 Percent (Уровень заряда батареи (BCHARGE) опустится ниже уровня который задан в файле настройки переменной BATTERYLEVEL то тогда будет начато выключение системы.)
MINTIMEL : 3 Minutes (Время работы от батарей (в минутах) перед началом отключения системы. Задаётся в файле настроек, в переменной MINUTES.)
MAXTIME : 0 Seconds (Время работы от батарей (в минутах) перед началом отключения системы. Задаётся в файле настроек, в переменной TIMEOUT.)
MAXLINEV : 227.5 Volts (Максимальное линейное напряжение с момента запуска ИБП, согласно отчету ИБП.)
MINLINEV : 224.6 Volts (Минимальное линейное напряжение с момента запуска ИБП, согласно отчету ИБП.)
OUTPUTV : 221.7 Volts (Напряжение на выходе ИБП (В))
SENSE : High (Уровень чувствительности ИБП чувствительность UPS к изменениям входного напряжения (LINEV): Low (низкая), Medium (средняя), High (высокая))
DWAKE : -1 Seconds (Время ожидания (в секундах) после возобновления питания до включения нагрузки.)
DSHUTD : 180 Seconds (Задержка после получения ИБП команды на выключение перед отключением нагрузки.)
DLOWBATT : 02 Minutes (Оставшееся время работы, ниже которого ИБП отправляет сигнал низкого заряда батареи. В этот момент apcupsd вызовет немедленное аварийное отключение.)
LOTRANS : 208.0 Volts (Нижняя граница допустимого напряжения до перехода на батареи.)
HITRANS : 253.0 Volts (Верхняя граница допустимого напряжения до перехода на батареи.)
RETPCT : 0.0 Percent (Минимальный уровень (%) зарядка батареи после возобновления питания для включения нагрузки.)
ITEMP : 13.5 C (Температура внутри ИБП.)
ALARMDEL : 30 Seconds (Задержка перед выдачей сигнала тревоги.)
BATTV : 55.1 Volts (Напряжение батареи.)
LINEFREQ : 50.0 Hz (Частота переменного тока (Гц) на входе ИБП.)
LASTXFER : No transfers since turnon (Причина последнего перехода на работу от батарей.)
NUMXFERS : 0 (Количество переходов на питание от батареи с момента запуска APCUPSd.)
XONBATT : 2016-08-19 09:41:42 +0300 (Дата, время последнего перехода на работу от батарей. Если недоступно тогда N/A.)
TONBATT : 0 Seconds (Текущее время работы от батарей. Если нет, то 0.)
CUMONBATT: 0 Seconds (Общее (суммарное) время работы от батарей (в секундах) с времени запуска APCUPSd.)
XOFFBATT : N/A (Дата, время последнего перехода с батарей. Если недоступно тогда N/A.)
SELFTEST : NO (Результат самотестирования: OK: всё в порядке; BT: тест не прошёл из-за недостаточной ёмкости батарей; NG: тест не прошёл из-за перегрузки; NO: Нет данных)
STESTI : 14 days (Интервал в часах между выполнением самотестирования.)
LASTSTEST: 2016-08-19 09:41:42 +0300 (Время последнего самотестирования.)
STATFLAG : 0x05000008 (Флаг состояния.)
DIPSW : (Текущие настройки переключателей ИБП (dip switch).)
REG1 : (Значение регистра неисправностей ИБП 1.)
REG2 : (Значение регистра неисправностей ИБП 2.)
REG3 : (Значение регистра неисправностей ИБП 3.)
MANDATE : 2010-01-07 (Дата производства ИБП.)
SERIALNO : JS1002028188 (Серийный номер ИБП.)
BATTDATE : 2010-01-07 (Дата последней замены батарей. Формат: ММ/ДД/ГГ Необходимо менять значение вручную)
NOMOUTV : 230 Volts (Выходное напряжение, которое ИБП будет пытаться обеспечить при питании от батареи.)
NOMBATTV : 48.0 Volts (Нормальное напряжение батарей)
EXTBATTS : (Количество внешних батарейных модулей.)
BADBATTS : (Количество неисправных внешних батарейных модулей)
FIRMWARE : 665.6.I USB FW:7.4 (Версия микропрограммы ИБП.)
APCMODEL : (Старый идентификатор кода модели APC.)
NOMINV : (Входное напряжение, на которое рассчитан ИБП.)
NOMPOWER : (Максимальная мощность в ваттах, на которую рассчитан ИБП.)
AMBTEMP : (Температура снаружи ИБП)
HUMIDITY : (Влажность воздуха, измеренная ИБП.)
LINEFAIL : (Состояние напряжения входной линии.)
BATTSTAT : (Состояние батарей)
END APC : 2022-09-02 16:18:41 +0300 (Дата, время когда данные полученные с ИБП были записаны в файл.)
Дополнительная информация
Поля о Состоянии ИБП
Поля отчета о состоянии Оф.
apcaccess(8) — справочная страница
Ответ от Smart-UPS 2200 RM :
APC : 001,043,1019
DATE : 2022-09-06 09:00:06 +0300
HOSTNAME : ZABBIXSERVER
VERSION : 3.14.14 (31 May 2016) debian
UPSNAME : ZABBIXSERVER
CABLE : USB Cable
DRIVER : USB UPS Driver
UPSMODE : Stand Alone
STARTTIME: 2022-09-02 16:11:11 +0300
MODEL : Smart-UPS 2200 RM
STATUS : ONLINE
LINEV : 218.8 Volts
LOADPCT : 29.2 Percent
BCHARGE : 100.0 Percent
TIMELEFT : 6.0 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME : 0 Seconds
OUTPUTV : 218.8 Volts
SENSE : High
DWAKE : -1 Seconds
DSHUTD : 180 Seconds
LOTRANS : 208.0 Volts
HITRANS : 253.0 Volts
RETPCT : 0.0 Percent
ITEMP : 17.5 C
ALARMDEL : 30 Seconds
BATTV : 55.1 Volts
LINEFREQ : 50.0 Hz
LASTXFER : No transfers since turnon
NUMXFERS : 0
TONBATT : 0 Seconds
CUMONBATT: 0 Seconds
XOFFBATT : N/A
SELFTEST : NO
STESTI : 14 days
STATFLAG : 0x05000008
MANDATE : 2010-01-07
SERIALNO : JS1002028188
BATTDATE : 2010-01-07
NOMOUTV : 230 Volts
NOMBATTV : 48.0 Volts
FIRMWARE : 665.6.I USB FW:7.4
END APC : 2022-09-06 09:00:39 +0300
Для отправки оповещений на почту например:
Код: Выделить всё
apt-get install s-nail
Дополнительно можно установить документацию и APC UPS Power Management (web interface):
Код: Выделить всё
apt-get install apcupsd-cgi
/usr/lib/cgi-bin/apcupsd/multimon.cgi
Тестировать /usr/lib/cgi-bin/apcupsd/multimon.cgi
На многих сайтах сервер Apache работает не от имени root, поэтому вы должны убедиться, что файлы /etc/apcupsd/hosts.conf и /etc/apcupsd/multimon.conf доступны для чтения всем.
Меняем права для Apache2
Код: Выделить всё
chown -R www-data:www-data /usr/lib/cgi-bin
chmod -R 775 /usr/lib/cgi-bin
Далее нам необходимо включить CGI (кому интересно почитайте более подробно и о безопасности использования разрешает выполнять скрипты!)
Конфиг
Код: Выделить всё
a2enconf serve-cgi-bin
a2disconf serve-cgi-bin - Выключить
Модуль
Код: Выделить всё
a2enmod cgi
a2dismod cgi - Отключить модуль
Сайта
Код: Выделить всё
a2ensite 000-default.conf
a2dissite 000-default.conf -Отключить
Немного подправим конфиг, чтоб открывался из другой директории, а не скачивался как файл
По умолчанию для Apache/2.4.25 (Debian)
Код: Выделить всё
nano /etc/apache2/conf-available/server-cgi-bin.conf
<------><------><Directory "/usr/lib/cgi-bin">
<------><------><------>AllowOverride None
<------><------><------>Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
<------><------><------>Require all granted
AddHandler cgi-script .cgi
<------><------></Directory>
AddHandler cgi-script .cgi
внутри <IfModule>
перечисление расширений .pl .py .sh
Если вы хотите указать cgi-binподкаталог каталога пользователя, где все будет рассматриваться как программа CGI, вы можете использовать следующее.
SetHandler cgi-script
Код: Выделить всё
systemctl reload apache2
systemctl restart apache2 - Если не сработало перезапускаем
Проверяем:
http://ваш-сайт/cgi-bin/apcupsd/multimon.cgi
http://192.168.175.111/cgi-bin/apcupsd/multimon.cgi контроль над цветами, шрифтами и размерами вывода multimon, вы можете просто отредактировать файл /etc/apcupsd/apcupsd.css, указав предпочтительные стили.
http://192.168.175.111/cgi-bin/apcupsd/upsstats.cgi http://192.168.175.111/cgi-bin/apcupsd/upsfstats.cgi Данные можем получить:
командой apcaccess status 127.0.0.1:3551 (заббикс агент, внешний скрипт, shh и другими вариантами),
Либо HTTP агентом http://192.168.175.111/cgi-bin/apcupsd/upsfstats.cgi
Переходим к созданию шаблона.