Исходные данные:
- сервер под управлением Debian GNU\Linux;
- на сервере работают виртуальные машины (Windows\Linux) под управлением Qemu-KVM;
- APC Smart-UPS 1000 XL подключено к серверу по USB.
Задача:
- чтобы сервера не падали при малейшем скачке напряжения;
- автоматическое корректное завершение работы виртуальных машин и сервера при достижении разряда батареи до 30% или 10 минут оставшегося времени автономной работы;
- возможность предупредить выход из строя ИБП для своевременной замены\ремонта.
Практическая часть:
Демон apcupsd следит за работой ИБП подключенного по USB к хосту с Linux
Для установки из стандартного репозитория (debian\ubuntu) достаточно написать:
~# apt-get update
~# apt-get install apcupsd
Стандартный конфиг для USB подключений (/etc/apcupsd/apcupsd.conf):
## apcupsd.conf v1.1 ##
#
# for apcupsd release 3.14.8 (16 January 2010) — debian
#
# «apcupsd» POSIX config file
UPSNAME LobnyaAPC
UPSCABLE usb
UPSTYPE usb
DEVICE
LOCKFILE /var/lock
SCRIPTDIR /etc/apcupsd
PWRFAILDIR /etc/apcupsd
NOLOGINDIR /etc
ONBATTERYDELAY 6
BATTERYLEVEL 30
MINUTES 10
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
STATTIME 0
STATFILE /var/log/apcupsd.status
LOGSTATS off
DATATIME 0
В файле /etc/default/apcupsd ставим параметр «yes» в строке ISCONFIGURED=yes
Запуск\остановка:
~# /etc/init.d/apcupsd start или stop или restart
Проверка состояния ИБП:
~# apcaccess
пример вывода (интересующие параметры подсвечены):
APC : 001,034,0833
DATE : 2017-01-31 11:31:15 +0300
HOSTNAME : hydrus
VERSION : 3.14.14 (31 May 2016) debian
UPSNAME : LobnyaAPC
CABLE : USB Cable
DRIVER : USB UPS Driver
UPSMODE : Stand Alone
STARTTIME: 2017-01-31 11:23:09 +0300
MODEL : Back-UPS ES 550G
STATUS : ONLINE если не ONLINE, значит что-то не так с ИБП или электричеством.
LINEV : 232.0 Volts
LOADPCT : 3.0 Percent нагрузка в %
BCHARGE : 100.0 Percent заряд батареи в %
TIMELEFT : 40.5 Minutes время работы от батареи
MBATTCHG : 30 Percent процент батареи при достижении которого будет послан сигнал на выключение компьютера
MINTIMEL : 10 Minutes оставшееся время работы от батареи при достижении которого будет послан сигнал на выключение
MAXTIME : 0 Seconds
SENSE : Medium
LOTRANS : 180.0 Volts
HITRANS : 266.0 Volts
ALARMDEL : 30 Seconds
BATTV : 13.6 Volts текущее напряжение батареи (может помочь в диагностике неисправности)
LASTXFER : No transfers since turnon
NUMXFERS : 0
TONBATT : 0 Seconds
CUMONBATT: 0 Seconds
XOFFBATT : N/A
STATFLAG : 0x05000008
SERIALNO : 5B1438T00998
BATTDATE : 2014-09-16 дата производства батареи
NOMINV : 230 Volts
NOMBATTV : 12.0 Volts номинальное напряжение батареи
FIRMWARE : 870.O3 .I USB FW:O3
END APC : 2017-01-31 11:32:01 +0300
План «Б»:
Установка из исходников:
Проверяем новую версию здесь http://www.apcupsd.com/support.html
Установка:
качаем архив wget https://netix.dl.sourceforge.net/project/apcupsd/apcupsd%20-%20Stable/3.14.14/apcupsd-3.14.14.tar.gz
Распаковываем:
~# tar -xzf apcupsd-3.14.14.tar.gz
Заходим в распаковынную папку:
~# cd apcupsd-3.14.14/
Конфигурим:
~# ./configure —enable-usb
Собираем:
~# make
Устанавливаем:
~# make install
Рестартим демон service apcupsd restart и смотрим версию в выводе apcaccess
Бонус:
Для мониторинга заббиксом в /etc/zabbix/zabbix_agentd.conf в конце файла добавляем строки:
UserParameter=apc.temp,apcaccess | awk ‘/ITEMP/ {print int($3)}’
UserParameter=apc.batt,apcaccess | awk ‘/BCHARGE/ {print int($3)}’
UserParameter=apc.status,apcaccess | grep ONLINE > /dev/null 2>&1;echo $?
И в заббиксе заводим шаблон с элементами данных по аналогии:
для заряда батареи
Применяем шаблон к нужным серверам и готово.
Пример графика мониторинга температуры:
Оставить комментарий