Подключаем UPS по сети с другого хоста к Synology
Итак имеется сервер к которому подключен UPS. На этой же железке как виртуалка запущен Synology (xpenology). Появилась проблема что тогда ups задится батарейка при запуске виртуалки с Synology диски внутри переходят в режим чтения.
Synology имеет несколько вариантов подключения UPS. По проводу, по по сети через SNMP и по сети от другого Synology.
Реализуем это через SNMP. Линукс хост будет отдавать метрики UPS через SNMP.
У меня ubuntu. UPS настроен по usb через apcupsd.
Принцип заключается в том что в snmpd мы положим perl файл, который будет дергать команду apcaccess и преобразовывать все это в SNMP
apt install snmpd libsnmp-perl
Качаем отсюда файл mod_apcupsd.pl и кладем на сервер. Я его положил в /etc/snmp/mod_apcupsd.pl на тот же сервер где стоит snmpd и apcupsd.
Далее настраиваем файл /etc/snmp/snmpd.conf
Изменяем настройки snmpd чтобы он отдавал метрики всем.
agentAddress udp:161,udp6:[::1]:161
Настройки snmpd вы можете дотюнить сами в рамках безопастности, кому и какие метрики отдавать и т.д.
Далее добавляем это, что позволит, выводить нам метрику.
view systemonly included .1.3.6.1.4.1.318.1.1.1
Так же добавляем perl файл который будет преобразовать метрик ups в snmp. Добавляю в конец файла.
perl do "/etc/snmp/mod_apcupsd.pl";
Перезапускаем snmpd (systemctl restart snmpd) и проверяем
snmpwalk -v 2c -c public -On localhost .1.3.6.1.4.1.318.1.1.1
вывод
.1.3.6.1.4.1.318.1.1.1.1.1.1.0 = STRING: "Back-UPS CS 500"
.1.3.6.1.4.1.318.1.1.1.1.1.2.0 = STRING: "mini"
.1.3.6.1.4.1.318.1.1.1.1.2.1.0 = STRING: "808.q7.I USB FW:q7"
.1.3.6.1.4.1.318.1.1.1.1.2.3.0 = STRING: "BB0546007192"
.1.3.6.1.4.1.318.1.1.1.2.1.2.0 = Timeticks: (0) 0:00:00.00
.1.3.6.1.4.1.318.1.1.1.2.1.3.0 = STRING: "2020-04-15"
.1.3.6.1.4.1.318.1.1.1.2.2.1.0 = Gauge32: 100
.1.3.6.1.4.1.318.1.1.1.2.2.2.0 = Gauge32: 29
.1.3.6.1.4.1.318.1.1.1.2.2.3.0 = Timeticks: (188400) 0:31:24.00
.1.3.6.1.4.1.318.1.1.1.2.2.7.0 = INTEGER: 12
.1.3.6.1.4.1.318.1.1.1.2.2.8.0 = INTEGER: 13
.1.3.6.1.4.1.318.1.1.1.3.2.1.0 = Gauge32: 214
.1.3.6.1.4.1.318.1.1.1.3.2.4.0 = Gauge32: 50
.1.3.6.1.4.1.318.1.1.1.3.2.5.0 = INTEGER: 4
.1.3.6.1.4.1.318.1.1.1.4.1.1.0 = INTEGER: 2
.1.3.6.1.4.1.318.1.1.1.4.2.1.0 = Gauge32: 230
.1.3.6.1.4.1.318.1.1.1.4.2.3.0 = Gauge32: 9
.1.3.6.1.4.1.318.1.1.1.5.2.1.0 = INTEGER: 230
.1.3.6.1.4.1.318.1.1.1.5.2.2.0 = INTEGER: 266
.1.3.6.1.4.1.318.1.1.1.5.2.3.0 = INTEGER: 160
.1.3.6.1.4.1.318.1.1.1.5.2.4.0 = INTEGER: 3
.1.3.6.1.4.1.318.1.1.1.5.2.6.0 = INTEGER: 0
.1.3.6.1.4.1.318.1.1.1.5.2.7.0 = INTEGER: 3
.1.3.6.1.4.1.318.1.1.1.5.2.8.0 = Timeticks: (18000) 0:03:00.00
.1.3.6.1.4.1.318.1.1.1.5.2.9.0 = Timeticks: (0) 0:00:00.00
.1.3.6.1.4.1.318.1.1.1.5.2.10.0 = Timeticks: (0) 0:00:00.00
.1.3.6.1.4.1.318.1.1.1.7.2.1.0 = INTEGER: 1
.1.3.6.1.4.1.318.1.1.1.7.2.3.0 = INTEGER: 0
Если вывод отличается и пишет что-то типа .1.3.6.1.4.1.318.1.1.1 = No more variables left in this MIB View (It is past the end of the MIB tree) попробуйте выполнить perl -MCPAN -e ‘install Net::SNMP’ но возможно это лишнее.
Теперь можно идти в Synology и добавлять там UPS