APC ИБП LINUX через APCUPSD

Питание: Измерение распределение блоки питания
Источники Бесперебойного Питания ИБП
Измерительный блок распределения питания БРП
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 523
Стаж: 3 года 7 месяцев
Откуда: Вологодская область
Поблагодарили: 23 раза
Контактная информация:

APC ИБП LINUX через APCUPSD

Сообщение Артём Мамзиков »

СКАЧАТЬ
APCUPSD.zip
APCUPSD.zip
(28.35 КБ) 0 скачиваний
Пример Конфигов на русском apcupsd.zip
Пример Конфигов на русском apcupsd.zip
(16.42 КБ) 0 скачиваний
Описание шаблона в 3 сообщении
Отличия в 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.

Проверим подключение: В ответе получаем:
Bus 002 Device 004: ID 051d:0002 American Power Conversion Uninterruptible Power Supply

Устанавливаем из репозитория apcupsd и документацию

Код: Выделить всё

apt-get install apcupsd apcupsd-doc
После установки настраиваем конфигурации:

Код: Выделить всё

nano /etc/default/apcupsd 
ставим параметр «yes» в строке ISCONFIGURED=yes

Код: Выделить всё

nano /etc/apcupsd/apcupsd.conf
apcupsd.conf
Показать
## apcupsd.conf v1.1 ##
#
# "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
hosts.conf
Показать
# Сетевые инструменты ИБП - 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.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 "Влажность окружающей среды" "%"
Перевод других файлов
apccontrol
Показать
#!/bin/sh
#
# Авторское право (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
apcupsd.css
Показать
body {
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;
}
changeme
Показать
#!/bin/sh
#
# Этот сценарий оболочки, если он помещен в /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
commfailure
Показать
#!/bin/sh
#
# Этот сценарий оболочки, если он помещен в /etc/apcupsd
# будет вызван /etc/apcupsd/apccontrol, когда apcupsd
# теряется контакт с ИБП (т.е. последовательное соединение не отвечает).
# Мы отправляем root сообщение по электронной почте, чтобы уведомить его.
#

HOSTNAME=`hostname`
MSG="$HOSTNAME Связь с ИБП $1 потеряна"
#
(
echo "$MSG"
) | $APCUPSD_MAIL -s "$MSG" $SYSADMIN
exit 0
commok
Показать
#!/bin/sh
#
# Этот сценарий оболочки, если он помещен в /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
killpower
Показать
#!/bin/sh
#
# Этот сценарий оболочки, если он помещен в /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
offbattery
Показать
#!/bin/sh
#
# Этот сценарий оболочки, если он помещен в /etc/apcupsd
# будет вызван /etc/apcupsd/apccontrol, когда....
# # ИБП возвращается к электросети после сбоя питания.
# Мы отправляем root сообщение по электронной почте, чтобы уведомить его.
#

HOSTNAME=`hostname`
MSG="$HOSTNAME ИБП $1 Питание восстановлено"
#
(
echo "$MSG"
echo " "
/sbin/apcaccess status
) | $APCUPSD_MAIL -s "$MSG" $SYSADMIN
exit 0
onbattery
Показать
#!/bin/sh
#
# Этот сценарий оболочки, если он помещен в /etc/apcupsd
# будет вызван /etc/apcupsd/apccontrol, когда ИБП
# работает от батареек.
# Мы отправляем root сообщение по электронной почте, чтобы уведомить его.
#

HOSTNAME=`hostname`
MSG="$HOSTNAME ИБП $1 Сбой питания !!!"
#
(
echo "$MSG"
echo " "
/sbin/apcaccess status
) | $APCUPSD_MAIL -s "$MSG" $SYSADMIN
exit 0
ups-monitor
Показать
#!/bin/sh

### 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
Добавляем apcupsd в автозагрузку в зависимости от ОС:
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
Существует четыре программы CGI (multimon.cgi, upsstats.cgi, upsfstats.cgi и upsimage.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 ./cgi-bin
chmod -R 775 ./cgi-bin
Начало установки Apache php было тут
Далее нам необходимо включить 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
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<------><------><Directory "/usr/lib/cgi-bin">
<------><------><------>AllowOverride None
<------><------><------>Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
<------><------><------>Require all granted
AddHandler cgi-script .cgi
<------><------></Directory>
Описание
Показать
ПРИМЕЧАНИЕ: если у вас несколько CGI, каждый из которых находится в разных каталогах, вам следует использовать
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.cgi
multimon.cgi
контроль над цветами, шрифтами и размерами вывода multimon, вы можете просто отредактировать файл /etc/apcupsd/apcupsd.css, указав предпочтительные стили.
http://192.168.175.111/cgi-bin/apcupsd/upsstats.cgi
upsstats.cgi
upsstats.cgi
http://192.168.175.111/cgi-bin/apcupsd/upsfstats.cgi
upsfstats.cgi
upsfstats.cgi
Данные можем получить:
командой apcaccess status 127.0.0.1:3551 (заббикс агент, внешний скрипт, shh и другими вариантами),
Либо HTTP агентом http://192.168.175.111/cgi-bin/apcupsd/upsfstats.cgi

Переходим к созданию шаблона.
количество слов: 1899
Партнёрская ссылка на Хостинг Beget https://beget.com/p937243
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 523
Стаж: 3 года 7 месяцев
Откуда: Вологодская область
Поблагодарили: 23 раза
Контактная информация:

APC ИБП LINUX через APCUPSD

Сообщение Артём Мамзиков »

Несколько ИБП APC к одному LINUX взято с интернета

apcupsd и несколько UPS
Posted on February 17, 2013 by kirby

Иногда возникает необходимость управлять несколькими UPS на одном сервере даже когда есть несколько серверов и все они запитаны от тех же бесперебойников. Когда-то давно на сервере под RHEL5 я уже настраивал мониторнг нескольких UPS через apcupsd. Так как времена RHEL5 давно минули, то аналогичную конфигурацию я настроил на более современном RHEL6 в виде Scientific Linux 6.4 и apcupsd-3.14.10, последней достуной версии из сторонних пакетов на текущий момент.
Имеем три бесперебойника: Smart-UPS 3000 RM XL, Smart-UPS SC1500 и Smart-UPS SMC1500I-2U.
3000 и SMC подключены через “стандартный” USB кабель, а к SC1500 в комплекте шли кабели RS232-RS232 и RS232-USB, который при проверке оказался обычным Prolific 2303 usb2serial. SC1500 была подключена через usb2serial кабель.
Основной фокус при использовании нескольких бесперебойников заключается в указании apcupsd конфига под конкретную железку. Чтобы было нагляднее, я стандартный apcupsd.conf скопировал в три конфига соответственно: apcupsd-rm3000.conf, apcupsd-cs1500.conf и apcupsd-smc1500.conf.
Из очевидных вещей в каждом каждом конфиге указываем соответствующие UPSNAME исходя из имени бесперебойника. А вот с UPSCABLE, UPSTYPE и DEVICE предстоит заняться более внимательно. С SC1500 всё просто – надо прописать обычные для подключения по последовательному порту параметры UPSCABLE smart и UPSTYPE apcsmart и DEVICE /dev/ttyUSB0. С USB подключением одного ИБП тоже всё просто – параметр DEVICE нужно закоментировать или значение оставить пустым и apcupsd сама найдёт бесперебойник. В случае с двумя ИБП параметр DEVICE надо будет использовать, чтобы “объяснить” apcupsd где какой ИБП.
dmesg в Linux всегда для меня выглядел хаосом (в сравнении с *BSD), так что “поиск” нужного устройства делался распространённым “научным” методом.
Вот что пишет ядро:
# dmesg|grep generic-usb
generic-usb 0003:0557:2221.0001: input,hidraw0: USB HID v1.00 Mouse [Winbond Electronics Corp Hermon USB hidmouse Device] on usb-0000:00:1a.0-1.2/input0
generic-usb 0003:0557:2221.0002: input,hidraw1: USB HID v1.00 Keyboard [Winbond Electronics Corp Hermon USB hidmouse Device] on usb-0000:00:1a.0-1.2/input1
generic-usb 0003:051D:0002.0003: hiddev96,hidraw2: USB HID v1.10 Device [American Power Conversion Smart-UPS 3000 RM XL FW:691.19.I USB FW:7.4] on usb-0000:00:1d.0-1.5/input0
generic-usb 0003:051D:0003.0004: hiddev97,hidraw3: USB HID v1.00 Device [American Power Conversion Smart-UPS C 1500 FW:UPS 09.7 / ID=1005] on usb-0000:00:1d.0-1.4/input0
Итого на сервере 4 generic-usb устройства – мышь, клавиатура и два бесперебойника. Про оба бесперебойника ядро пишет hiddev9?,hidraw?.
Устройство /dev/hiddevXX можно не искать – его нет. Зато есть /dev/usb/hiddev?. Найти взаимосвязь между /dev/usb/hiddev? и hiddev??,hidraw? я так и не смог. Продолжая использовать “научный” метод тыка, в конфигурационные файлы для ИБП, подключенных по USB добавил DEVICE /dev/usb/hiddev?.
Помимо этого все три конфигурационных файла отличаются портом, NISPORT на котором висит демон, чтобы можно было получать статус с определённой UPS. Дефолтовый NISIP 0.0.0.0 (привет безопасности по умолчанию) поменял на 127.0.0.1, так как мониторинг apcupsd будет вестись локально. Подправил пути на файлы сообщений и статуса (EVENTSFILE и STATFILE), чтобы у каждого запущенного демона был свой собственный набор файлов.
Окинем взором различие в конфигурационных файлах:
diff3 apcupsd-smc1500.conf apcupsd-cs1500.conf apcupsd-rm3000.conf
====
1:15c
UPSNAME CS1500
2:15c
UPSNAME SMC1500I-2U
3:15c
UPSNAME RM3000
====
1:29c
UPSCABLE smart
2:29c
UPSCABLE usb
3:29c
UPSCABLE usb
====
1:79,80c
UPSTYPE apcsmart
DEVICE /dev/ttyUSB0
2:79,80c
UPSTYPE usb
DEVICE /dev/usb/hiddev1
3:79,80c
UPSTYPE usb
DEVICE /dev/usb/hiddev0
====
1:202c
NISPORT 3552
2:202c
NISPORT 3553
3:202c
NISPORT 3551
====
1:206c
EVENTSFILE /var/log/apcupsd-cs1500.events
2:206c
EVENTSFILE /var/log/apcupsd-smc1500.events
3:206c
EVENTSFILE /var/log/apcupsd-rm3000.events
====
1:241c
STATFILE /var/log/apcupsd-cs1500.status
2:241c
STATFILE /var/log/apcupsd-smc1500.status
3:241c
STATFILE /var/log/apcupsd-rm3000.status

Для мониторинга вручную всё готово. Достаточно запустить /sbin/apcupsd -f /etc/apcupsd/config_name.conf. Для проверки работоспособности запустил apcaccess:
[root@mail apcupsd]# apcaccess
APC : 001,043,1074
DATE : 2014-02-04 14:20:12 +0400
HOSTNAME : **********
VERSION : 3.14.10 (13 September 2011) redhat
UPSNAME : RM3000
CABLE : USB Cable
DRIVER : USB UPS Driver
UPSMODE : Stand Alone
STARTTIME: 2014-02-03 17:25:12 +0400
MODEL : Smart-UPS 3000 RM XL
STATUS : ONLINE
LINEV : 233.2 Volts
LOADPCT : 0.0 Percent Load Capacity
BCHARGE : 100.0 Percent
TIMELEFT : 137.0 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME : 0 Seconds
OUTPUTV : 233.2 Volts
SENSE : High
DWAKE : -01 Seconds
DSHUTD : 090 Seconds
LOTRANS : 208.0 Volts
HITRANS : 253.0 Volts
RETPCT : 000.0 Percent
ITEMP : 24.7 C Internal
ALARMDEL : 30 seconds
BATTV : 55.1 Volts
LINEFREQ : 50.0 Hz
LASTXFER : Automatic or explicit self test
NUMXFERS : 0
TONBATT : 0 seconds
CUMONBATT: 0 seconds
XOFFBATT : N/A
SELFTEST : NO
STESTI : 14 days
STATFLAG : 0x07000008 Status Flag
MANDATE : 2010-12-17
SERIALNO : XXXXXXXXXXX
BATTDATE : 2010-12-17
NOMOUTV : 230 Volts
NOMBATTV : 48.0 Volts
FIRMWARE : 691.19.I USB FW:7.4
END APC : 2014-02-04 14:20:56 +0400
В данном случае apcaccess выводит информацию, которую по умолчанию берёт на 127.0.0.1 и стандартном порту 3551. Для получения информации о двух других бесперебойниках надо указать соответствующие порты (3552 и 3553):
[root@mail apcupsd]# apcaccess status 127.0.0.1:3552
APC : 001,048,1181
DATE : 2014-02-04 14:23:51 +0400
HOSTNAME : **********
VERSION : 3.14.10 (13 September 2011) redhat
UPSNAME : CS1500
CABLE : Custom Cable Smart
DRIVER : APC Smart UPS (any)
UPSMODE : Stand Alone
STARTTIME: 2014-02-03 12:36:35 +0400
MODEL : Smart-UPS SC1500
STATUS : ONLINE
LINEV : 230.0 Volts
LOADPCT : 9.1 Percent Load Capacity
BCHARGE : 100.0 Percent
TIMELEFT : 121.0 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME : 0 Seconds
MAXLINEV : 230.0 Volts
MINLINEV : 230.0 Volts
OUTPUTV : 230.0 Volts
SENSE : High
DWAKE : 000 Seconds
DSHUTD : 060 Seconds
DLOWBATT : 02 Minutes
LOTRANS : 208.0 Volts
HITRANS : 253.0 Volts
RETPCT : 000.0 Percent
ALARMDEL : 5 seconds
BATTV : 26.9 Volts
LINEFREQ : 50.0 Hz
LASTXFER : Line voltage notch or spike
NUMXFERS : 0
TONBATT : 0 seconds
CUMONBATT: 0 seconds
XOFFBATT : N/A
SELFTEST : NO
STESTI : 336
STATFLAG : 0x07000008 Status Flag
REG1 : 0x00 Register 1
REG2 : 0x00 Register 2
REG3 : 0x00 Register 3
MANDATE : 05/31/12
SERIALNO : XXXXXXXXXXX
BATTDATE : 05/31/12
NOMOUTV : 230 Volts
NOMBATTV : 24.0 Volts
FIRMWARE : 738.3.I
END APC : 2014-02-04 14:24:07 +0400

Осталось самое весёлое – подправить rc.d скрипты чтобы все три демона стартовали автоматически при запуске системы. Идём в /etc/rc.d/init.d/, где объектом изменений будет скрипт apcupsd. Его так же копирую, в соответствии с вышеописанными именами файлов конфигурации: apcupsd-rm3000, apcupsd-smc1500 и apcupsd-cs1500, а затем редактирую новые стартовые скрипты с учётом имён файлов конфигурации и параметров в них указанных. В скриптах интересуют значения APCPID, указание корректных флагов запуска apcupsd, изменение поведения killproc, чтобы он не убивал одним махом все запущенные процессы apcupsd и имена lock-файлов. Это что касается запуска демона. Для проверки статуса необходимо указать соответствующий демону NISPORT в параметрах запуска apcaccess.
После всех необходимых изменений в стартовых скриптах, эти стартовые скрипты надо “зарегистрировать”, а стандартный скрипт apcupsd наоборот – отключить. Для этого имена новых скриптов передаём в качестве параметра chkconfig:
chkconfig --add apcupsd-rm3000
и отключаем стандартный скрипт:
chkconfig --del apcupsd
Теперь в ntsysv доступны новые скрипты и нет стандартного. Ставим на них * и радуемся результатам содеянного:
[root@mail apcupsd]# service apcupsd-rm3000 start
Starting UPS monitoring: [ OK ]
[root@mail apcupsd]# ps ax|grep apc
5750 ? Ssl 0:00 /sbin/apcupsd -f /etc/apcupsd/apcupsd-rm3000.conf -P /var/run/apcupsd-rm3000.pid
5781 ? Ssl 0:00 /sbin/apcupsd -f /etc/apcupsd/apcupsd-smc1500.conf -P /var/run/apcupsd-cs1500a.pid
5810 ? Ssl 0:00 /sbin/apcupsd -f /etc/apcupsd/apcupsd-cs1500.conf -P /var/run/apcupsd-cs1500b.pid
5851 pts/5 S+ 0:00 grep apc

Целиком файлы конфигов я выкладывать не буду ни в этот раз, ни в последующие, дабы предотвратить бездумный copy-paste. Для всех файлов максимум будут diff относительно оригинального файл
количество слов: 878
Партнёрская ссылка на Хостинг Beget https://beget.com/p937243
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 523
Стаж: 3 года 7 месяцев
Откуда: Вологодская область
Поблагодарили: 23 раза
Контактная информация:

APC ИБП LINUX через APCUPSD

Сообщение Артём Мамзиков »

2 Варианта шаблонов: 1.Обычный, 2. Обнаружением LLD
в 1. нужно деактивировать элементы которых нет в ответе на запрос либо они будут Не поддерживаемые.
в 2. создаются только поддерживаемые но в правиле обнаружения висит ошибка это так и есть.
Шаблон ИБП Apcupsd-LLD
Шаблон ИБП Apcupsd-LLD
На основе Apcupsd
Через apcaccess status

В Узле заполнить макросы
{$PORTAPCUPS} - Порт
{$WATTSAPCUPS} - Указать Ватты (взять из характеристики 1кВт=1000Вт)
{$NUMOFAKBVAPC} - Кол-во АКБ (подключено последовательно увеличение Вольт)
{$NUMOFAKBAHAPC} - Кол-во АКБ (подключено параллельно увеличение Ач)
{$APCUPSAH} - Ач ампер-час (для 1 АКБ если последовательно)
{$APCUPSKPD} - КПД ИБП (0.92)
Не используются
{$LOGINAPCUPS} - Логин
{$PASSAPCUPS} - Пароль

Пример для APC-Smart-UPS-2200 (8акб 5.8Ач 12В)
{$APCUPSAH} 5.8
{$NUMOFAKBAHAPC} 2
{$NUMOFAKBVAPC} 4
{$WATTSAPCUPS} 2200

Веб интерфейс состояния ИБП (после установки apcupsd-cgi)
http://{HOST.CONN}/cgi-bin/apcupsd/multimon.cgi
http://{HOST.CONN}/cgi-bin/apcupsd/upsstats.cgi
http://{HOST.CONN}/cgi-bin/apcupsd/upsfstats.cgi

Группы
Статистика ИБП
ИБП Основные данные
ИБП Инфо о Apcupsd
ИБП Инвентаризационные данные
ИБП-Состояние

Основной элемент данных Запрос состояния (3 варианта)
Через Заббикс агент
Состояние ИБП №1 Триггеры 1 system.run["apcaccess status 127.0.0.1:3551"] 1m 90d Zabbix агент ИБП-Состояние, ИБП Основные данные Активировано
Состояние ИБП №1
Состояние ИБП №1
Через HTTP агента
Состояние ИБП №2 по HTTP upsfstats.cgi 1m 90d HTTP агент ИБП-Состояние, ИБП Основные данные Деактивировано
Состояние ИБП №2
Состояние ИБП №2
пред обработка обрезает лишнее и выводит строками
Через SSH
Состояние ИБП №3 по SSH ssh.run["apcaccess status 127.0.0.1:3551"] 1m 0d SSH агент ИБП-Состояние Деактивировано
Состояние ИБП №3 по SSH
Состояние ИБП №3 по SSH
Элементы данных
Состояние ИБП №1: Проверка На пустое значение Триггеры 1 apcaccess.status.linefreqp 90d 90d Зависимый элемент данных ИБП-Состояние Активировано

Процесс Apcupsd Триггеры 1 proc.num[apcupsd] 4m 90d 90d Zabbix агент ИБП-Состояние Активировано

Вычисляемые элементы данных
Емкость Ач (Ah) обратный подсчет (Примерно) Вычисляемое ups.capacity.ah 5m 90d 90d Вычисляемое ИБП-Состояние Активировано

Нагрузка Ампер Вычисляемое ups.ampers 5m 90d 90d Вычисляемое ИБП-Состояние Активировано

Заряд АКБ Вычисляемый % ups.battery.charge.percentage 5m 90d 90d Вычисляемое ИБП-Состояние, ИБП Основные данные Активировано

Емкость Ач (Ah) обратный подсчет (Примерно более 9-10часв) Вычисляемый ups.capacity 5m 90d 90d Вычисляемое ИБП-Состояние Активировано

Примерное время работы от АКБ Вычисляемое Триггеры 3 ups.working.time.from.battery 5m 90d 90d Вычисляемое ИБП-Состояние Активировано

Нагрузка Вт Вычисляемое ups.watts 5m 90d 90d Вычисляемое ИБП-Состояние Активировано

Подробнее про вычисления можно посмотреть Мониторинг ИБП на основе UPS Assistant расчеты аналогичны.
ИБП Apcupsd-LLD Элементы данных
ИБП Apcupsd-LLD Элементы данных
Триггеры

Высокая UPS Недоступно {HOST.NAME}
Зависит от:
ИБП Apcupsd-LLD: Нет процесса UPS Apcupsd не запущен
{UPS-Apcupsd-lld:system.run["apcaccess status 127.0.0.1:3551"].iregexp(no-data-ups)}=1 or {UPS-Apcupsd-lld:system.run["apcaccess status 127.0.0.1:3551"].nodata(25m)}=1 or {UPS-Apcupsd-lld:web.test.error[Проверка Web apcupsd].strlen()}>0 and {UPS-Apcupsd-lld:web.test.fail[Проверка Web apcupsd].min(11m)}>0 Активировано apcupsd

Высокая UPS Нет Значений {HOST.NAME}
Зависит от:
ИБП Apcupsd-LLD: UPS Недоступно {HOST.NAME}
ИБП Apcupsd-LLD: Нет процесса UPS Apcupsd не запущен
{UPS-Apcupsd-lld:apcaccess.status.linefreqp.last()}=0001 Активировано

Информационная Время работы АКБ менее 5 мин на {HOST.NAME}
Зависит от:
ИБП Apcupsd-LLD: UPS Нет Значений {HOST.NAME}
ИБП Apcupsd-LLD: Нет процесса UPS Apcupsd не запущен
{UPS-Apcupsd-lld:ups.working.time.from.battery.last()}<=0.05 Активировано

Информационная Время работы АКБ менее 11 мин на {HOST.NAME}
Зависит от:
ИБП Apcupsd-LLD: Время работы АКБ менее 5 мин на {HOST.NAME}
{UPS-Apcupsd-lld:ups.working.time.from.battery.last()}<=0.10 and {UPS-Apcupsd-lld:ups.working.time.from.battery.last()}>0.05 Активировано

Информационная Время работы АКБ менее 15 мин на {HOST.NAME}
Зависит от:
ИБП Apcupsd-LLD: Время работы АКБ менее 11 мин на {HOST.NAME}
{UPS-Apcupsd-lld:ups.working.time.from.battery.last()}<0.15 and {UPS-Apcupsd-lld:ups.working.time.from.battery.last()}>0.10 Активировано

Внимание/Предупреждение Нет процесса UPS Apcupsd не запущен {UPS-Apcupsd-lld:proc.num[apcupsd].last()}<>1 or {UPS-Apcupsd-lld:proc.num[apcupsd].nodata(11m)}=1 Активировано apcupsd
ИБП Apcupsd-LLD Триггеры
ИБП Apcupsd-LLD Триггеры
Графики
Текущая Нагрузка Вт 900 200 Нормальный
Текущая Нагрузка Ампер 900 200 Нормальный

Правила обнаружения
Обнаружение данных ИБП APC №1 Прототипы элементов данных 63 Прототипы триггеров 16 Прототипы графиков 9 Прототипы узлов сети apcupsd-lld.sh[{HOST.CONN},{$HOST.PORTS},127.0.0.1,3551,discoveryapc] 4h Внешняя проверка Активировано

Веб-сценарии
Проверка Web apcupsd 1 5m 3 Нет Нет ИБП-Состояние Активировано
ИБП Apcupsd-LLD графики правила обнаружения Веб сценарии
ИБП Apcupsd-LLD графики правила обнаружения Веб сценарии
Прототипы элементов данных 63
Зависимые прототипы элементов данных

Состояние ИБП №1: APC версия формата данных, число записей, длина данных в байтах apcaccess.status.[{#ID1}] 90d Зависимый элемент данных ИБП-Состояние, ИБП Инфо о Apcupsd Да

Состояние ИБП №1: Дата производства ИБП apcaccess.status.[{#ID48}] 90d Зависимый элемент данных ИБП-Состояние, ИБП Инвентаризационные данные Да

Состояние ИБП №1: Кол-во переходов на питание от батареи с момента запуска APCUPSd. apcaccess.status.[{#ID35}] 90d 90d Зависимый элемент данных ИБП-Состояние, Статистика ИБП Да

Состояние ИБП №1: Дата, время последней работы от батареи apcaccess.status.[{#ID36}] 90d Зависимый элемент данных ИБП-Состояние, Статистика ИБП Да

Состояние ИБП №1: Текущее время работы от батарей apcaccess.status.[{#ID37}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Основные данные Да

Состояние ИБП №1: Общее (суммарное) время работы от батарей (в секундах) с времени запуска APCUPSd apcaccess.status.[{#ID38}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Основные данные, Статистика ИБП Да

Состояние ИБП №1: Дата, время последнего перехода с батарей apcaccess.status.[{#ID39}] 90d Зависимый элемент данных ИБП-Состояние, Статистика ИБП Да

Состояние ИБП №1: Результат самотестирования ИБП apcaccess.status.[{#ID40}] 90d Зависимый элемент данных ИБП-Состояние, ИБП Основные данные Да

Состояние ИБП №1: Интервал в часах между выполнением самотестирования. apcaccess.status.[{#ID41}] 90d Зависимый элемент данных ИБП-Состояние, ИБП Инфо о Apcupsd, Статистика ИБП Да

Состояние ИБП №1: Время последнего самотестирования. apcaccess.status.[{#ID42}] 90d Зависимый элемент данных ИБП-Состояние, Статистика ИБП Да

Состояние ИБП №1: Флаг состояния. apcaccess.status.[{#ID43}] 90d Зависимый элемент данных ИБП-Состояние, ИБП Основные данные Да

Состояние ИБП №1: Текущие настройки переключателей ИБП (dip switch) apcaccess.status.[{#ID44}] 90d Зависимый элемент данных ИБП-Состояние, ИБП Инфо о Apcupsd Да

Состояние ИБП №1: Значение регистра неисправностей ИБП 1. apcaccess.status.[{#ID45}] 90d Зависимый элемент данных ИБП-Состояние, ИБП Основные данные Да

Состояние ИБП №1: Значение регистра неисправностей ИБП 2. apcaccess.status.[{#ID46}] 90d Зависимый элемент данных ИБП-Состояние, ИБП Основные данные Да

Состояние ИБП №1: Значение регистра неисправностей ИБП 3. apcaccess.status.[{#ID47}] 90d Зависимый элемент данных ИБП-Состояние, ИБП Основные данные Да

Состояние ИБП №1: Серийный номер ИБП apcaccess.status.[{#ID49}] 90d Зависимый элемент данных ИБП-Состояние, ИБП Инвентаризационные данные Да

Состояние ИБП №1: Частота на Входе Гц apcaccess.status.[{#ID33}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Основные данные Да

Состояние ИБП №1: Дата последней замены батарей apcaccess.status.[{#ID50}] 90d Зависимый элемент данных ИБП-Состояние, ИБП Инвентаризационные данные, Статистика ИБП Да

Состояние ИБП №1: Цель Выходного Напряжение при АКБ apcaccess.status.[{#ID51}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Инфо о Apcupsd Да

Состояние ИБП №1: Нормальное напряжение батарей apcaccess.status.[{#ID52}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Основные данные Да

Состояние ИБП №1: Количество внешних батарейных модулей. apcaccess.status.[{#ID53}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Инвентаризационные данные Да

Состояние ИБП №1: Количество неисправных внешних батарейных модулей apcaccess.status.[{#ID54}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Инвентаризационные данные, ИБП Основные данные Да

Состояние ИБП №1: Версия микропрограммы ИБП apcaccess.status.[{#ID55}] 90d Зависимый элемент данных ИБП-Состояние, ИБП Инвентаризационные данные Да

Состояние ИБП №1: Старый идентификатор кода модели APC. apcaccess.status.[{#ID56}] 90d Зависимый элемент данных ИБП-Состояние, ИБП Инвентаризационные данные Да

Состояние ИБП №1: Входное напряжение, на которое рассчитан ИБП. apcaccess.status.[{#ID57}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Инвентаризационные данные, Статистика ИБП Да

Состояние ИБП №1: Максимальная мощность в ваттах, на которую рассчитан ИБП. apcaccess.status.[{#ID58}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Инвентаризационные данные, Статистика ИБП Да

Состояние ИБП №1: Температура снаружи ИБП apcaccess.status.[{#ID59}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Основные данные Да

Состояние ИБП №1: Влажность воздуха, измеренная ИБП. apcaccess.status.[{#ID60}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Основные данные Да

Состояние ИБП №1: Состояние напряжения входной линии. apcaccess.status.[{#ID61}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Основные данные Да

Состояние ИБП №1: Состояние батарей apcaccess.status.[{#ID62}] 90d Зависимый элемент данных ИБП-Состояние, ИБП Основные данные Да

Состояние ИБП №1: Причина последнего перехода на работу от батарей. apcaccess.status.[{#ID34}] 90d Зависимый элемент данных ИБП-Состояние, Статистика ИБП Да

Состояние ИБП №1: Напряжение АКБ apcaccess.status.[{#ID32}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Основные данные Да

Состояние ИБП №1: Дата, время получения данных с ИБП apcaccess.status.[{#ID2}] 90d Зависимый элемент данных ИБП-Состояние, ИБП Инфо о Apcupsd Да

Состояние ИБП №1: Оставшееся время работы от батареи по оценке ИБП. apcaccess.status.[{#ID16}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Основные данные Да

Состояние ИБП №1: Имя хоста к которому подключён ИБП apcaccess.status.[{#ID3}] 90d Зависимый элемент данных ИБП-Состояние, ИБП Инвентаризационные данные Да

Состояние ИБП №1: Имя ИБП apcaccess.status.[{#ID4}] 90d Зависимый элемент данных ИБП-Состояние, ИБП Инвентаризационные данные Да

Состояние ИБП №1: Версия apcupsd apcaccess.status.[{#ID5}] 90d Зависимый элемент данных ИБП-Состояние, ИБП Инфо о Apcupsd Да

Состояние ИБП №1: Тип кабеля указанный в настройках apcaccess.status.[{#ID6}] 90d Зависимый элемент данных ИБП-Состояние, ИБП Инвентаризационные данные Да

Состояние ИБП №1: Название драйвера apcupsd apcaccess.status.[{#ID7}] 90d Зависимый элемент данных ИБП-Состояние, ИБП Инфо о Apcupsd Да

Состояние ИБП №1: Модель ИБП apcaccess.status.[{#ID8}] 90d Зависимый элемент данных ИБП-Состояние, ИБП Инвентаризационные данные Да

Состояние ИБП №1: Режим работы apcupsd заданный в поле UPSMODE apcaccess.status.[{#ID9}] 90d Зависимый элемент данных ИБП-Состояние, ИБП Инфо о Apcupsd Да

Состояние ИБП №1: Дата, время запуска apcupsd apcaccess.status.[{#ID10}] 90d Зависимый элемент данных ИБП-Состояние, ИБП Инфо о Apcupsd Да

Состояние ИБП №1: Текущее состояние (статус) ИБП apcaccess.status.[{#ID11}] 90d Зависимый элемент данных ИБП-Состояние, ИБП Основные данные Да

Состояние ИБП №1: Мастер UPD apcaccess.status.[{#ID12}] 90d Зависимый элемент данных ИБП-Состояние, ИБП Инфо о Apcupsd Да

Состояние ИБП №1: Входящее Напряжение apcaccess.status.[{#ID13}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Основные данные Да

Состояние ИБП №1: Нагрузка ИБП % apcaccess.status.[{#ID14}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Основные данные Да

Состояние ИБП №1: Уровень заряда батареи % apcaccess.status.[{#ID15}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Основные данные Да

Состояние ИБП №1: Заряд ниже % выключение apcaccess.status.[{#ID17}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Основные данные Да

Состояние ИБП №1: Задержка перед выдачей сигнала тревоги apcaccess.status.[{#ID31}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Инфо о Apcupsd Да

Состояние ИБП №1: Минимальное время работы от батарей перед выключением apcaccess.status.[{#ID18}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Инфо о Apcupsd Да

Состояние ИБП №1: Максимальное время работы от батарей перед выключением apcaccess.status.[{#ID19}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Инфо о Apcupsd, Статистика ИБП Да

Состояние ИБП №1: Максимальное Напряжение с момента запуска apcaccess.status.[{#ID20}] 90d 90d Зависимый элемент данных ИБП-Состояние, Статистика ИБП Да

Состояние ИБП №1: Минимальное Напряжение с момента запуска apcaccess.status.[{#ID21}] 90d 90d Зависимый элемент данных ИБП-Состояние, Статистика ИБП Да

Состояние ИБП №1: Выходное Напряжение apcaccess.status.[{#ID22}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Основные данные Да

Состояние ИБП №1: Уровень чувствительности ИБП чувствительность UPS к изменениям входного напряжения apcaccess.status.[{#ID23}] 90d Зависимый элемент данных ИБП-Состояние, ИБП Основные данные Да

Состояние ИБП №1: Время ожидания после возобновления питания до включения нагрузки. apcaccess.status.[{#ID24}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Основные данные Да

Состояние ИБП №1: Задержка после получения ИБП команды на выключение перед отключением нагрузки. apcaccess.status.[{#ID25}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Основные данные Да

Состояние ИБП №1: Отправка сигнала низкого заряда, немедленное аварийное отключение apcaccess.status.[{#ID26}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Основные данные Да

Состояние ИБП №1: AVR -переход на батареи (низкое входное напряжение) apcaccess.status.[{#ID27}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Инфо о Apcupsd, ИБП Основные данные Да

Состояние ИБП №1: AVR -переход на батареи (высокое входное напряжение) apcaccess.status.[{#ID28}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Инфо о Apcupsd, ИБП Основные данные Да

Состояние ИБП №1: Минимальный уровень (%) зарядка батареи до включения нагрузки. apcaccess.status.[{#ID29}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Инфо о Apcupsd, ИБП Основные данные Да

Состояние ИБП №1: Температура ИБП apcaccess.status.[{#ID30}] 90d 90d Зависимый элемент данных ИБП-Состояние, ИБП Основные данные Да

Состояние ИБП №1: Дата, время когда данные полученные с ИБП были записаны в файл apcaccess.status.[{#ID63}] 90d Зависимый элемент данных ИБП-Состояние, ИБП Инфо о Apcupsd, ИБП Основные данные, Статистика ИБП Да
ИБП Apcupsd-LLD Прототипы элемента данных
ИБП Apcupsd-LLD Прототипы элемента данных

Прототипы триггеров 16
Высокая BatteryCharge<25%: {ITEM.LASTVALUE1}{HOST.NAME} {UPS-Apcupsd-lld:apcaccess.status.[{#ID32}].last()}<48.1 Да

Информационная BatteryCharge<50%: {ITEM.LASTVALUE1}{HOST.NAME} {UPS-Apcupsd-lld:apcaccess.status.[{#ID32}].last()}<48.9 and {UPS-Apcupsd-lld:apcaccess.status.[{#ID32}].last()}>=48.1 Да

Информационная BatteryCharge<75%: {ITEM.LASTVALUE1}{HOST.NAME} {UPS-Apcupsd-lld:apcaccess.status.[{#ID32}].last()}<49.7 and {UPS-Apcupsd-lld:apcaccess.status.[{#ID32}].last()}>=48.9 Да

Информационная Версия apcupsd изменена {UPS-Apcupsd-lld:apcaccess.status.[{#ID5}].diff(0)}>0 Да

Информационная Версия микропрограммы ИБП изменена {UPS-Apcupsd-lld:apcaccess.status.[{#ID55}].diff(0)}>0 Да

Информационная Входная частота не 50Гц {UPS-Apcupsd-lld:apcaccess.status.[{#ID33}].last()}<49 or {UPS-Apcupsd-lld:apcaccess.status.[{#ID33}].last()}>51 Да

Информационная Входящее напряжение более 250В {HOST.NAME} {UPS-Apcupsd-lld:apcaccess.status.[{#ID13}].last()}>250 Да

Информационная Входящее напряжение менее 196В {HOST.NAME} {UPS-Apcupsd-lld:apcaccess.status.[{#ID13}].last()}<196 Да

Информационная Выходное напряжение более 247В {HOST.NAME} {UPS-Apcupsd-lld:apcaccess.status.[{#ID22}].last()}>247 Да

Информационная Дата последней замены батарей Изменена {UPS-Apcupsd-lld:apcaccess.status.[{#ID50}].diff(0)}>0 Да

Высокая Заряд АКБ <25%: {ITEM.LASTVALUE1}{HOST.NAME} {UPS-Apcupsd-lld:apcaccess.status.[{#ID15}].last()}<25 Да

Средняя Заряд АКБ <50%: {ITEM.LASTVALUE1}{HOST.NAME} {UPS-Apcupsd-lld:apcaccess.status.[{#ID15}].last()}<50 and {UPS-Apcupsd-lld:apcaccess.status.[{#ID15}].last()}>25 Да

Информационная Заряд АКБ <75%: {ITEM.LASTVALUE1}{HOST.NAME} {UPS-Apcupsd-lld:apcaccess.status.[{#ID15}].last()}<75 and {UPS-Apcupsd-lld:apcaccess.status.[{#ID15}].last()}>50 Да

Информационная Нагрузка выхода>90% {HOST.NAME}
Зависит от:
ИБП Apcupsd-LLD: Нагрузка выхода>95% {HOST.NAME}
{UPS-Apcupsd-lld:apcaccess.status.[{#ID14}].last()}>90 Да

Информационная Нагрузка выхода>95% {HOST.NAME} {UPS-Apcupsd-lld:apcaccess.status.[{#ID14}].last()}>95 Да

Чрезвычайная Аварийная Температура батареи={ITEM.VALUE} на {HOST.NAME} {UPS-Apcupsd-lld:apcaccess.status.[{#ID30}].last()}>40 Да
ИБП Apcupsd-LLD Прототипы триггеров
ИБП Apcupsd-LLD Прототипы триггеров
Прототипы графиков 9
{#ATRUPS} Частота на Входе Гц 900 200 Нормальный
{#ATRUPS} Уровень заряда батареи % 900 200 Нормальный
{#ATRUPS} Температура снаружи ИБП 900 200 Нормальный
{#ATRUPS} Температура ИБП 900 200 Нормальный
{#ATRUPS} Состояние напряжения входной линии 900 200 Нормальный
{#ATRUPS} Напряжение АКБ 900 200 Нормальный
{#ATRUPS} Нагрузка ИБП % 900 200 Нормальный
{#ATRUPS} Выходное Напряжение 900 200 Нормальный
{#ATRUPS} Входящее Напряжение 900 200 Нормальный
ИБП Apcupsd-LLD Прототипы графиков
ИБП Apcupsd-LLD Прототипы графиков
Пришлось сделать на каждый элемент свой график иначе они не создаются.

Пример последних данных по ибп
ИБП Apcupsd-LLD Последние данные
ИБП Apcupsd-LLD Последние данные
количество слов: 1053
Партнёрская ссылка на Хостинг Beget https://beget.com/p937243
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 523
Стаж: 3 года 7 месяцев
Откуда: Вологодская область
Поблагодарили: 23 раза
Контактная информация:

APC ИБП LINUX через APCUPSD

Сообщение Артём Мамзиков »

Скрипт apcupsd-lld.sh

Код: Выделить всё

#!/bin/bash
# 2022.09.07 Артём Андреевич Мамзиков
# URL https://diyit.ru/viewtopic.php
# Скрипт мониторинга ИБП/UPS APC с LLD для Zabbix

# Авто обнаружение ИБП

# Объявим входные переменные(variable) и если входная переменная пустая задаем дефолтные настройки для некоторых переменных
IP=$1
PORT=${2:-10050}
IPAPC=${3:-127.0.0.1}
PORTAPC=${4:-3551}
BLOCSCRIPT=$5

IFS=$'\n'
# (IFS оболочка считает, что пробел является границей слов делает пробелы между слов $* - отбрасывает символы и границы слов \n – это escape-последовательность для новой строки (переводится в новую строку)

if [[ $BLOCSCRIPT = "discoveryapc" ]]; then
# Запускаем команду: apcaccess status 127.0.0.1:3551
get=`zabbix_get -s $IP -p $PORT -k system.run["apcaccess status $IPAPC:$PORTAPC"]|sed 's|:.*||'|sed 's| *$||'`
# Разберем построчно циклом
for atrapc in $get ; do
# Верхний регистр для макроса lld
atrapcup=$(echo $atrapc|tr [:lower:] [:upper:])
# Разбираем по элементам
case $atrapcup in
		APC)
		NUM="1"
		;;
		DATE)
		NUM="2"
		;;
		HOSTNAME)
		NUM="3"
		;;
		UPSNAME)
		NUM="4"
		;;
		VERSION)
        NUM="5"
        ;;
        CABLE)
        NUM="6"
        ;;
        DRIVER)
        NUM="7"
        ;;
        MODEL)
        NUM="8"
        ;;
        UPSMODE)
        NUM="9"
        ;;
        STARTTIME)
        NUM="10"
        ;;
        STATUS)
        NUM="11"
        ;;
        MASTERUPD)
        NUM="12"
        ;;
        LINEV)
        NUM="13"
        ;;
        LOADPCT)
        NUM="14"
        ;;
        BCHARGE)
        NUM="15"
        ;;
        TIMELEFT)
        NUM="16"
        ;;
        MBATTCHG)
        NUM="17"
        ;;
        MINTIMEL)
        NUM="18"
        ;;
        MAXTIME)
        NUM="19"
        ;;
        MAXLINEV)
        NUM="20"
        ;;
        MINLINEV)
        NUM="21"
        ;;
        OUTPUTV)
        NUM="22"
        ;;
        SENSE)
        NUM="23"
        ;;
        DWAKE)
        NUM="24"
        ;;
        DSHUTD)
        NUM="25"
        ;;
        DLOWBATT)
        NUM="26"
        ;;
        LOTRANS)
        NUM="27"
        ;;
        HITRANS)
        NUM="28"
        ;;
        RETPCT)
        NUM="29"
        ;;
        ITEMP)
        NUM="30"
        ;;
        ALARMDEL)
        NUM="31"
        ;;
        BATTV)
        NUM="32"
        ;;
        LINEFREQ)
        NUM="33"
        ;;
        LASTXFER)
        NUM="34"
        ;;
        NUMXFERS)
        NUM="35"
        ;;
        XONBATT)
        NUM="36"
        ;;
        TONBATT)
        NUM="37"
        ;;
        CUMONBATT)
        NUM="38"
        ;;
        XOFFBATT)
        NUM="39"
        ;;
        SELFTEST)
        NUM="40"
        ;;
        STESTI)
        NUM="41"
        ;;
        LASTSTEST)
        NUM="42"
        ;;
        STATFLAG)
        NUM="43"
        ;;
        DIPSW)
        NUM="44"
        ;;
        REG1)
        NUM="45"
        ;;
        REG2)
        NUM="46"
        ;;
        REG3)
        NUM="47"
        ;;
        MANDATE)
        NUM="48"
        ;;
        SERIALNO)
        NUM="49"
        ;;
        BATTDATE)
        NUM="50"
        ;;
        NOMOUTV)
        NUM="51"
        ;;
        NOMBATTV)
        NUM="52"
        ;;
        EXTBATTS)
        NUM="53"
        ;;
        BADBATTS)
        NUM="54"
        ;;
        FIRMWARE)
        NUM="55"
        ;;
        APCMODEL)
        NUM="56"
        ;;
        NOMINV)
        NUM="57"
        ;;
        NOMPOWER)
        NUM="58"
        ;;
        AMBTEMP)
        NUM="59"
        ;;
        HUMIDITY)
        NUM="60"
        ;;
        LINEFAIL)
        NUM="61"
        ;;
        BATTSTAT)
        NUM="62"
        ;;
        "END APC")
        NUM="63"
        ;;
        #)
        #NUM="64"
        #;;
esac
	APCITEM=$APCITEM"$SEP\n{\"{#ID$NUM}\":\"$NUM:$atrapcup\", \"{#ATRUPS}\":\"$atrapcup\"}"
	SEP=", "
	NUM=""
done
echo -e "["$APCITEM"\n]"
fi

if [[ $BLOCSCRIPT = "info" ]]; then
# Запускаем команду: apcaccess status 127.0.0.1:3551
getapc=`zabbix_get -s $IP -p $PORT -k system.run["apcaccess status $IPAPC:$PORTAPC"]`
echo "${getapc}"
fi

Обычный шаблон и LLD
Так как тут все возможные элементы под конкретную ибп часть получаем не поддерживаемые (нужно деактивировать)
ИБП Apcupsd Обычный шаблон
ИБП Apcupsd Обычный шаблон
Обнаружением создаются только рабочие элементы для данной ибп
ИБП Apcupsd LLD шаблон
ИБП Apcupsd LLD шаблон

Шаблон взятый с Мозаика системного администрирования APCUPSd
Он же на share.zabbix
Работает через пользовательские UserParameter параметры заббикс агента, используются только основные данные

Linux

Код: Выделить всё

nano /etc/zabbix/zabbix_agentd.conf.d/userparameter_apcupsd.conf
UserParameter=UPSNAME,cat /var/log/apcupsd.status|awk '/^(UPSNAME).*:/ {print $3}'
UserParameter=STATUS,cat /var/log/apcupsd.status|awk '/^(STATUS).*:/ {print $3,$4,$5}'
UserParameter=ITEMP,cat /var/log/apcupsd.status|awk '/^(ITEMP).*:/ {print $3}'
UserParameter=LOADPCT,cat /var/log/apcupsd.status|awk '/^(LOADPCT).*:/ {print $3}'
UserParameter=NUMXFERS,cat /var/log/apcupsd.status|awk '/^(NUMXFERS).*:/ {print $3}'
UserParameter=BCHARGE,cat /var/log/apcupsd.status|awk '/^(BCHARGE).*:/ {print $3}'
UserParameter=SENSE,cat /var/log/apcupsd.status|awk '/^(SENSE).*:/ {print $3}'
UserParameter=LINEV,cat /var/log/apcupsd.status|awk '/^(LINEV).*:/ {print $3}'

Windows с использованием Gawk
c:\zabbix\conf\userparameter_apcupsd.win.conf

UserParameter=UPSNAME,type c:\apcupsd\etc\apcupsd\apcupsd.status|c:\programs\bin\awk "/^(UPSNAME).*:/ {print $3}"
UserParameter=STATUS,type c:\apcupsd\etc\apcupsd\apcupsd.status|c:\programs\bin\awk "/^(STATUS).*:/ {print $3,$4,$5}"
UserParameter=ITEMP,type c:\apcupsd\etc\apcupsd\apcupsd.status|c:\programs\bin\awk "/^(ITEMP).*:/ {print $3}"
UserParameter=LOADPCT,type c:\apcupsd\etc\apcupsd\apcupsd.status|c:\programs\bin\awk "/^(LOADPCT).*:/ {print $3}"
UserParameter=NUMXFERS,type c:\apcupsd\etc\apcupsd\apcupsd.status|c:\programs\bin\awk "/^(NUMXFERS).*:/ {print $3}"
UserParameter=BCHARGE,type c:\apcupsd\etc\apcupsd\apcupsd.status|c:\programs\bin\awk "/^(BCHARGE).*:/ {print $3}"
UserParameter=SENSE,type c:\apcupsd\etc\apcupsd\apcupsd.status|c:\programs\bin\awk "/^(SENSE).*:/ {print $3}"
UserParameter=LINEV,type c:\apcupsd\etc\apcupsd\apcupsd.status|c:\programs\bin\awk "/^(LINEV).*:/ {print $3}"

Сам шаблон
template_apcupsd.zip
template_apcupsd.zip
(1.79 КБ) 0 скачиваний
Оставлю тут еще скрипт сбора данных из лога

Код: Выделить всё

#!/bin/bash

case $1 in
	"date")  tail -n1 /opt/APC/PowerChuteBusinessEdition/Agent/DataLog | cut -d$'\t' -f1;;
	"linevoltage")  tail -n1 /opt/APC/PowerChuteBusinessEdition/Agent/DataLog | cut -d$'\t' -f4;;
	"outputvoltage")  tail -n1 /opt/APC/PowerChuteBusinessEdition/Agent/DataLog | cut -d$'\t' -f5;;
	"batteryvoltage")  tail -n1 /opt/APC/PowerChuteBusinessEdition/Agent/DataLog | cut -d$'\t' -f6;;
	"outputfreq")  tail -n1 /opt/APC/PowerChuteBusinessEdition/Agent/DataLog | cut -d$'\t' -f7;;
	"load")  tail -n1 /opt/APC/PowerChuteBusinessEdition/Agent/DataLog | cut -d$'\t' -f8;;
	"internaltemp")  tail -n1 /opt/APC/PowerChuteBusinessEdition/Agent/DataLog | cut -d$'\t' -f9;;
	"frequency")  tail -n1 /opt/APC/PowerChuteBusinessEdition/Agent/DataLog | cut -d$'\t' -f14;;
	"batterycapacity")  tail -n1 /opt/APC/PowerChuteBusinessEdition/Agent/DataLog | cut -d$'\t' -f15;;
*) echo "ZBX_UNSUPPORTED";;
esac
количество слов: 697
Партнёрская ссылка на Хостинг Beget https://beget.com/p937243
Ответить Вложения 19 Пред. темаСлед. тема

Вернуться в «Питание: Измерение распределение блоки питания; ИБП»