Попробовал воспользоваться переходником USB-RS232 (COM-порт поддерживается драйвером apcsmart), но после подключения к компьютеру ИБП пискнул и отключился вместе со всей нагрузкой. Собственно, можно было ожидать чего-то подобного, т.к. в конфигурации драйвера apcsmart есть не один вариант кабеля RS232. Стало понятно, что переходник на USB, по всей видимости, не поможет.
Я знал о существовании apcupsd, но пользоваться им не хотелось из-за его специализированности на ИБП только одного производителя. Но тут деваться стало некуда и я решил всё-таки настроить его.
Настройка apcupsd
Итак, перво-наперво, установим apcupsd:
# apt-get install apcupsdОткрываем файл /etc/apcupsd/apcupsd.conf и редактируем, выставляя следующие настройки:
UPSCABLE usb UPSTYPE usb DEVICE POLLTIME 10 # По умолчанию 60 BATTERYLEVEL 0 # По умолчанию 5% MINUTES 3 TIMEOUT 0 BEEPSTATE N # Отключаем писк ИБПapcupsd выключает компьютер при наступлении одного из условий:
- уровень заряда батареи в процентах упал до значения меньше указанного в BATTERYLEVEL,
- расчётное время работы от батареи в минутах стало меньше значения, указанного в MINUTES,
- время непрерывной работы от батареи в минутах превысило значение, указанное в TIMEOUT.
Теперь откроем файл /etc/default/apcupsd и включим демон, вписав в файл настройку:
ISCONFIGURED=yesТеперь можно включить и запустить демона через systemd:
# systemctl enable apcupsd.service # systemctl start apcupsd.serviceПоскольку мы не меняли сетевые настройки, демон запустится и будет ожидать подключений на TCP-порту 3551 на локальном IP-адресе 127.0.0.1.
Узнать состояние ИБП можно с помощью программы-клиента apcaccess. Можно запускать её и от имени обычного пользователя, ведь для установки сетевого подключения не нужно обладать особыми правами, но стоит учитывать, что программа лежит в каталоге /sbin, поэтому для обычного пользователя доступна только при указании полного пути:
$ /sbin/apcaccessПрограмма выводит различные данные ИБП в виде списка имён параметров и их значений. У программы есть опция -u, отключающая отображение единиц измерения. С помощью опции -p можно вывести значение только одного параметра, указав после опции имя параметра. Воспользуемся этим чтобы наблюдать за состоянием ИБП при помощи системы мониторинга Zabbix.
Настройка Zabbix
Предполагается, что на компьютере уже установлен и настроен Zabbix-агент. Добавим в конфигурацию агента "пользовательский параметр". Сделать этом можно либо напрямую отредактировав файл /etc/zabbix/zabbix_agentd.conf, либо создав новый файл в каталоге /etc/zabbix/zabbix_agentd.d/ специально для этого пользовательского параметра. Впишем строчку:
UserParameter=ups[*],/sbin/apcaccess -u -p $1Перезапустим Zabbix-агента, чтобы новые настройки вступили в силу:
# systemctl restart zabbix-agent.serviceЯ подготовил два варианта шаблонов - один с элементами данных "Zabbix-агент", а второй - с элементами данных "Zabbix-агент (активный)".
Фрагмент страницы истории:
Фрагмент шаблона со списком триггеров:
Состав триггеров и приоритеты соответствуют моим нуждам, вы можете настроить их по-другому.
В ИБП предусмотрен режим "байпас" (более привычное название - шунт), то есть режим передачи напряжения со входа на выход напрямую. Если с напряжением в розетке всё в порядке, то ИБП работает именно в этом режиме, выполняя лишь функцию сетевого фильтра. При выходе напряжения за установленные пределы включается режим стабилизации. Если напряжение пропадает полностью, то ИБП начинает работать от батареи. Работа от батареи сопровождается довольно заметным шумом вентиляторов, с чем можно смириться, т.к. эта ситуация является аварийной, а в нормальном режиме "байпас" вентиляторы не работают.
12 комментариев:
Я уперся в настройку узла. Я не понимаю, как в шаблон попадают данные в этом случае, когда на сервер присылается(?) простыня(?) с параметрами.
И в моем случае
apcaccess [status [ [][:] ] ]
И на выходе только список значений.
Ведь не сервер с шаблоном его разбирают?
В приложенных мной шаблонах дело обстоит так. В случае пассивного агента:
1. Zabbix-сервер запрашивает у Zabbix-агента значение ups[STATUS].
2. Zabbix-агент находит UserParamter=ups[*],/sbin/apcaccess -u -p $1 и вместо * подставляет все аргументы, которые указаны в квадратных скобках в ups[STATUS]. Указан только один аргумент - STATUS. Этот единственный аргумент имеет номер 1 и поэтому подставляется в команде на место шаблона $1. Получается, что надо выполнить команду /sbin/apcaccess -u -p STATUS.
3. После выполнения команды Zabbix-агент отправляет на Zabbix-сервер в качестве результата то, что команда вывела.
В случае активного агента дело обстоит похожим образом.
1. Zabbix-агент запрашивает у сервера список всех параметров, которые интересуют сервер и для каждого из параметров узнаёт периодичность, с которой нужно отправлять значения на Zabbix-сервер. Эти запросы в дальнейшем периодически повторяются, чтобы при изменении настроек на Zabbix-сервере эти настройки обновились на Zabbix-агенте. При обновлении настроек снимаются с контроля более не нужные данные и добавляются нужные, а у каких-то изменяется периодичность контроля.
2. Как и в случае пассивного Zabbix-агента, ключ ups[STATUS] преобразуется в команду /sbin/apcaccess -u -p STATUS. Команда выполняется Zabbix-агентом с указанной периодичностью, а результаты отправляются на Zabbix-сервер по инициативе Zabbix-агента.
Как строчку UserParameter=ups[*],/sbin/apcaccess -u -p $1 для windows клиента сделать?
>В винде делаю так ... UserParameter=ups[*],/sbin/apcaccess -u -p %1. Но не робит. Что за место * писать?
Про винду ничего сказать не могу. Почему возник вопрос именно про *? У вас в винде есть /sbin/apcaccess?
Оооойй...Это всё Пятница виновата)) Вот так делаю. UserParameter=ups[*],c:\apcupsd\bin\apcaccess -u -p %1. В %1 значение подставляется. Но в * не хочет.
Ну или можно статейку, про то как мониторить несколько UPS c одного хоста.
Установил apcupsd на Centos 7. Почему то в директории /etc/default/apcupsd оный файл отсутствует. В чём может быть дело? Сервер APC видит, но управления (инициализации выключения)нетю
Наверное дело в том, что это Centos, а в нём нет каталога /etc/default/ Попробуйте поискать что-нибудь похожее в каталоге /etc/sysconfig/ Вообще, если вы настраиваете Centos по статье про Debian, то всю специфику своего дистрибутива вам нужно учитывать самому - тут я не помощник.
Не получилось все настроить по данной статье, решил написать, как сделал.
Версия: apcupsd 3.14.10 (13 September 2011) debian
Из-за того, что “/sbin/apcaccess -u -p STATUS” не работает (выдает сообщение с ошибкой, что нет параметров -u и -p), пришлось грепать вывод:
/sbin/apcaccess status 127.0.0.1:3550 | grep -w STATUS | sed s/[^,.0-9]//g
1. status 127.0.0.1:3550 - порт указан из-за того, что к серверу подключено два бесперебойника на разных портах (его передаем вторым параметром с сервера).
2. grep -w STATUS - через переменную $1 передаем значение ups[STATUS] (значения передаются с сервера)
3. sed s/[^,.0-9]//g - убираем лишние символы из вывода
Строчка из конфига агента: UserParameter=ups[*],/sbin/apcaccess status 127.0.0.1:$2 | grep -w $1 | sed s/[^,.0-9]//g
Спасибо за статью!
Не получилось все настроить по данной статье, решил написать, как сделал.
Версия: apcupsd 3.14.10 (13 September 2011) debian
Из-за того, что “/sbin/apcaccess -u -p STATUS” не работает (выдает сообщение с ошибкой, что нет параметров -u и -p), пришлось грепать вывод:
/sbin/apcaccess status 127.0.0.1:3550 | grep -w STATUS | sed s/[^,.0-9]//g
1. status 127.0.0.1:3550 - порт указан из-за того, что к серверу подключено два бесперебойника на разных портах (его передаем вторым параметром с сервера).
2. grep -w STATUS - через переменную $1 передаем значение ups[STATUS] (значения передаются с сервера)
3. sed s/[^,.0-9]//g - убираем лишние символы из вывода
Строчка из конфига агента: UserParameter=ups[*],/sbin/apcaccess status 127.0.0.1:$2 | grep -w $1 | sed s/[^,.0-9]//g
Спасибо за статью!
Спасибо за статью. Очень помогли.
На Debian 10, 64 bit, такой вывод:
r@prime:~$ sudo apcaccess
[sudo] пароль для r:
APC : 001,017,0421
DATE : 2019-09-14 08:42:59 +0300
HOSTNAME : prime
VERSION : 3.14.14 (31 May 2016) debian
CABLE : USB Cable
DRIVER : USB UPS Driver
UPSMODE : Stand Alone
STARTTIME: 2019-09-14 08:41:40 +0300
STATUS : COMMLOST
MBATTCHG : 0 Percent
MINTIMEL : 0 Minutes
MAXTIME : 60 Seconds
NUMXFERS : 0
TONBATT : 0 Seconds
CUMONBATT: 0 Seconds
XOFFBATT : N/A
STATFLAG : 0x05000100
END APC : 2019-09-14 08:43:16 +0300
r@prime:~$
Перед этим проделывал:
ISCONFIGURED=yes
и:
# systemctl enable apcupsd.service
# systemctl start apcupsd.service
а также перезагрузку делал.
Есть идеи?
rulet, идей у меня много, но я подозреваю что спросить вы хотели не об этом. Попытаюсь догадаться. Подозреваю, что вас интересует строка STATUS: COMMLOST. COMMLOST расшифровывается как communication lost - потеря связи. Проверьте связь с ИБП через кабель USB.
Отправить комментарий