UPS monitoring on Linux and Synology (XPEnology)
1.0K
В конфиг файл не вносились изменения, в связи с этим Вам необходимо внести собственные правки для подключения к Вашему ИБП.
Установите Docker
apt update
apt install docker
Загрузите образ на свой сервер
docker pull rzolotuhin/apcupsd
Создайте на сервере каталог в котором будут лежать примонтрованные файлы для apcupsd, в том числе и Ваш файл конфигурации apcupsd.conf
mkdir -p /srv/docker/apcupsd/
Создайте и заполните файл конфигурации apcupsd.conf
cd /srv/docker/apcupsd/
touch apcupsd.conf
nano apcupsd.conf
Вот пример файла конфигурации apcupsd.conf который я использую у себя для подключения к ИБП APC Smart-UPS 1500 через Network Management Card по протоколу SNMP. На мой взгляд это лучший способ подключения, позволяющий не держать ИБП в непосредственной близости от сервера.
UPSNAME apc1500
UPSTYPE snmp
DEVICE 192.168.0.5:161:APC:public
POLLTIME 30
LOCKFILE /var/lock
SCRIPTDIR /etc/apcupsd
PWRFAILDIR /etc/apcupsd
NOLOGINDIR /etc
ONBATTERYDELAY 6
BATTERYLEVEL -1
MINUTES 0
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
Обратите внимание на параметры:
UPSTYPE snmp - Способ подключения к ИБПDEVICE 192.168.0.5:161:APC:public - hostname:port:vendor:communityСледующие параметры гарантируют, что apcupsd не будет пытаться выключить сервер (в нашем случае это контейнер)
BATTERYLEVEL -1MINUTES 0TIMEOUT 0Также необходимо поднять сетевую службу позволяющую других участникам сети получать ифнормацию о состоянии ИБП
NETSERVER onNISIP 0.0.0.0NISPORT 3551Запустите контейнер
docker run -d --name="apcupsd" -p 3551:3551 -v /srv/docker/apcupsd/apcupsd.conf:/etc/apcupsd/apcupsd.conf rzolotuhin/apcupsd
В параметрах мы указали, что из контейнера необходимо пробросить сетевой порт 3551, а также путь для монтирования файла конфигурации apcupsd.conf из Вашего сервера в контейнер.
После запуска можно проверить работу контейнера.
docker ps
В выводе мы получим список запущенных контейнеров. Найдите контейнер rzolotuhin/apcupsd и его NAMES, это уникальное значение мы будем использовать для доступа к контейнеру
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e65d8bc12075 rzolotuhin/apcupsd "/sbin/apcupsd -b" About an hour ago Up About an hour 0.0.0.0:3551->3551/tcp apcupsd
Запросим статус у apcupsd выполнив команду /etc/init.d/apcupsd status внутри контейнера с именем apcupsd которое мы задали при запуске через параметр --name="apcupsd"
docker exec -i -t apcupsd /etc/init.d/apcupsd status
В ответ мы должны получить информацию о состоянии ИБП
APC : 001,046,1056
DATE : 2020-03-09 13:50:05 +0000
HOSTNAME : e65d8bc12075
VERSION : 3.14.14 (31 May 2016) debian
UPSNAME : apc
CABLE : Ethernet Link
DRIVER : SNMP UPS Driver
UPSMODE : Stand Alone
STARTTIME: 2020-03-09 12:35:55 +0000
MODEL : Smart-UPS 1500
STATUS : ONLINE
LINEV : 239.0 Volts
LOADPCT : 24.0 Percent
BCHARGE : 100.0 Percent
TIMELEFT : 40.0 Minutes
MBATTCHG : 0 Percent
MINTIMEL : 0 Minutes
MAXTIME : 0 Seconds
MAXLINEV : 240.0 Volts
MINLINEV : 230.0 Volts
OUTPUTV : 240.0 Volts
SENSE : High
DWAKE : 0 Seconds
DSHUTD : 180 Seconds
DLOWBATT : 2 Minutes
LOTRANS : 208.0 Volts
HITRANS : 253.0 Volts
RETPCT : 15.0 Percent
ITEMP : 37.0 C
ALARMDEL : No alarm
BATTV : 27.0 Volts
LINEFREQ : 50.0 Hz
LASTXFER : Automatic or explicit self test
NUMXFERS : 0
TONBATT : 0 Seconds
CUMONBATT: 0 Seconds
XOFFBATT : N/A
SELFTEST : OK
STESTI : 336
STATFLAG : 0x05000008
MANDATE : 01/27/07
SERIALNO : AS0704212043
BATTDATE : 11/14/18
NOMOUTV : 220 Volts
EXTBATTS : 0
FIRMWARE : 653.13.I
END APC : 2020-03-09 13:50:14 +0000
Если Вам нужно подключить ИБП через USB, то в команде запуска контейнера можно явно указать какое устройство прокинуть
--device=/dev/ttyUSB0
Первым делом необходимо установить Docker на Ваше файловое хранилище

В разделе Образ загружаем образ apcupsd по прямой ссылке с Docker HUB https://hub.docker.com/r/rzolotuhin/apcupsd

После загрузки выбираем контейнер и жмем Запустить в верхнем меню. Откроется диалоговое окно, в котором можно указать желаемое имя контейнера и выставить дополнительные параметры

Включаем автоматический запуск контейнера

Обязательно указываем где находится файл конфигурации и куда он будет монтироваться внутри контейнера. Лично я, для файлов конфигурации различных контейнеров создал отдельную сетевую папку docker с ограниченным доступом. В ней содержатся подкаталоги соответствующие каждому из запущенных контейнеров, например, /docker/apcupsd/

Если требуется получать доступ к сетевым службам контейнера, то обязательно выбираем в разделе Сеть параметр Использовать ту же сеть, что и сеть хоста Docker. В данном случае это позволит получить доступ к apcupsd по фдресу сетевого хранилища и порту 3551, по сути это простой проброс порта

Применяем настройки. Проверить состояния контейнера можно в разделе Контейнер

На этом все
Content type
Image
Digest
Size
48.7 MB
Last updated
over 6 years ago
docker pull rzolotuhin/apcupsd