Всем доброго времени суток.
Небольшая предыстория.
В организации уже несколько лет был установлен и Zabbix и Apcupsd. Apcupsd, как сетевой клиент был установлен на все сервера организации, который реально выручал от крушения файловой системы и долгих ребилдов gmirror, так же слал на почту алерты об отключении энергии. На днях сменили один из UPS АРС Smart 2200, который с одной заменой аккумуляторов проработал ровно 15 лет. В замен него приобрели APC by Schneider Electric Smart-UPS 2200 (SMT2200I) и решили мониторить его через Zabbix-server, тем более, что на днях прикрутили к нему оповещение в вконтакт и телеграмм.
APC by Schneider Electric Smart-UPS 2200 (SMT2200I) комплектуется кабелем 940-0625A для серийного порта RS232 и USB кабелем. По серийному порту не удалось заставить работать Apcupsd, либо не мониторила либо вываливалась в ошибку.
С USB кабелем заработало сразу, мой конфиг apcupsd.conf
UPSNAME 2200 UPSCABLE usb UPSTYPE usb DEVICE LOCKFILE /var/spool/lock SCRIPTDIR /usr/local/etc/apcupsd PWRFAILDIR /var/run NOLOGINDIR /var/run ONBATTERYDELAY 6 BATTERYLEVEL 5« MINUTES 3 TIMEOUT 0 ANNOY 300 ANNOYDELAY 60 NOLOGON disable KILLDELAY 0 NETSERVER on NISIP 0.0.0.0 NISPORT 3551 EVENTSFILE /var/log/apcupsd.events EVENTSFILEMAX 10 UPSCLASS standalone UPSMODE disable LOGSTATS off DATATIME 0 BATTDATE 17/06/07
Итак Apсupsd и Zabbix-server и Zabbix-agent (должен быть установлен на хосте с Apсupsd) у нас настроены и работают. Я делаю все на FreeBSD, но должно подойти и для Linux (после корректировки путей). Мы будем дергать Zabbix-agentd apcaccess и передавать Zabbix-server следующие параметры:
- Статус
- Уровень заряда аккумуляторов
- Напряжение на аккумуляторах
Дернем вывод apcaccess
# apcaccess APC : 001,027,0658 DATE : 2017-06-07 14:41:08 +0300 HOSTNAME : xx.xx.ru VERSION : 3.14.14 (31 May 2016) freebsd UPSNAME : 2200 CABLE : USB Cable DRIVER : USB UPS Driver UPSMODE : Stand Alone STARTTIME: 2017-06-07 11:09:39 +0300 MODEL : Smart-UPS 2200 STATUS : ONLINE BCHARGE : 100.0 Percent TIMELEFT : 26.0 Minutes MBATTCHG : 5 Percent MINTIMEL : 3 Minutes MAXTIME : 0 Seconds ALARMDEL : 30 Seconds BATTV : 54.5 Volts NUMXFERS : 0 TONBATT : 0 Seconds CUMONBATT: 0 Seconds XOFFBATT : N/A STATFLAG : 0x05000008 MANDATE : 2016-10-23 SERIALNO : AS1642145340 NOMBATTV : 48.0 Volts FIRMWARE : UPS 09.3 / ID=18 END APC : 2017-06-07 14:41:24 +0300
Мы будем использовать строки:
- STATUS (Статус)
- BCHARGE (Уровень заряда аккумуляторов)
- BATTV (Напряжение на аккумуляторах)
Создаем в zabbix_agentd.conf нужные нам UserParameter, дописываем в конце файла:
UserParameter=STATUS,/usr/local/sbin/apcaccess -p STATUS UserParameter=BATTV,/usr/local/sbin/apcaccess -p BATTV|cut -f 1 -d " " UserParameter=BCHARGE,/usr/local/sbin/apcaccess -p BCHARGE|cut -f 1 -d " "
Перезапускаем агента:
/usr/local/etc/rc.d/zabbix_agentd restart
На хосте с Zabbix-server проверяем доступность наших параметров, 192.168.99.5 — это хост на котором установлен Apcupsd и Zabbix-agentd с userparameters :
# zabbix_get -s 192.168.99.5 -p 10050 -k STATUS ONLINE # zabbix_get -s 192.168.99.5 -p 10050 -k BCHARGE 100.0 # zabbix_get -s 192.168.99.5 -p 10050 -k BATTV 54.5
Мы получили статус ONLINE, уровень заряда 100%, напряжение аккумуляторов 54.5V.
Теперь нам необходимо в нашем хосте создать три элемента данных, для этого заходим на веб-интерфейс нашего Zabbix-servera, выбираем «Настройка»->»Узлы сети» находим наш хост с Apcupsd и Zabbix-agentd, выбираем его «Элементы данных» , и жмем в правом верхнем углу кнопку «Создать элемент данных»
Заполняем и создаем элемент данных для статуса нашего UPS
Далее клонируем нажав кнопку «Клонировать», меняем ключ на BCHARGE.
Еще раз клонируем для ключа BATTV.
Создадим два триггера для элемента данных Status, будем проверять, что возвращает нам статус, если ONLINE, то ничего не делаем, если возвращает ONBATT, что указывает на работу от аккумуляторов — шлем алерт, так же создаем алерт, если возвращается статус как NOBATT , т.к. это означает, что аккумуляторы не установлены:)
Переходим в триггеры этого хоста и жмем «Создать триггер»
Создаем триггер
Где строка {ИМЯ_ВАШЕГО_ХОСТА:STATUS.regexp(ONBATT)}=1 указывает, как только STATUS вернет вместо ONLINE ONBATT, то сработает этот триггер.
Склонируем его, изменим имя на «UPS без аккумуляторов» изменив строку на {ИМЯ_ВАШЕГО_ХОСТА:STATUS.regexp(NOBATT)}=1.
Так же вы можете создать график, который будет отображать % зараяда и напряжение аккумуляторов в UPS.
Перейдите в графики этого хоста, создать новый график, выбрать наши данные
В предпросмотре получите что-то типа этого
Вроде как все, zabbix радует своей гибкостью.