Современные ИБП поддерживают подключение через последовательный порт или USB, чтобы сообщать о своем состоянии, чтобы любые подключенные компьютеры могли безопасно выключаться, когда батарея разряжается. Сюда входят такие показатели, как текущий заряд, напряжение, ожидаемое время работы и т. д., которые мы будем хранить и визуализировать с помощью нашего стека мониторинга.
Как установить и настроить Telegraf, InfluxDB и Grafana можно посмотреть тут.
Подключаем ИБП к серверу, далее
apt install nut
Добавим директиву, указывающую, что ИБП подключен к данному компьютеру, а не к удаленному
nano /etc/nut/nut.conf
Изменим на standalone
MODE=standalone
Добавим в конце файла nano /etc/nut/ups.conf
[ippon]
driver = blazer_usb
port = auto
desc = "IPPON BACK Basic 650"
Настройка адресов и портов прослушивания подключений к NUT, дописываем строки в конец файла nano /etc/nut/upsd.conf или создаем новый с таким содержимым
LISTEN 127.0.0.1 3493
Имейте в ввиду что LISTEN должно быть написано именно большими буквами, или работать ничего не будет
Настройка профиля пользователя для доступа к NUT Добавим в nano /etc/nut/upsd.users
[upsmon]
password = 123456
actions = SET FSD
instcmds = ALL
upsmon master
Дописываем строки в конец файла nano /etc/nut/upsmon.conf
MONITOR ippon@localhost 1 upsmon 123456 master
Перезагружаем NUT
service nut-server restart
service nut-client restart
Проверка ИБП
upsc ippon@localhost
Настраиваем Telegraf в nano /etc/telegraf/telegraf.conf добавляем
[[inputs.upsd]]
## A running NUT server to connect to.
server = "127.0.0.1"
port = 3493
username = "upsmon"
password = "123456"
## Force parsing numbers as floats
## It is highly recommended to enable this setting to parse numbers
## consistently as floats to avoid database conflicts where some numbers are
## parsed as integers and others as floats.
force_float = true
## Collect additional fields if they are available for the UPS
## The fields need to be specified as NUT variable names, see
## https://networkupstools.org/docs/developer-guide.chunked/apas02.html
## Wildcards are accepted.
# additional_fields = []
Перезагружаем Telegraf
systemctl reload telegraf
Все теперь Telegraf будет передавать данные ИБП в InfluxDB Осталось только создать панель мониторинга в Grafana
Пример запроса из скриншота выше "Зарядка батареи ИБП"
from(bucket: "pve")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["ups_name"] == "ippon")
|> filter(fn: (r) => r["_field"] == "battery_charge_percent")
|> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)
|> yield(name: "last")
Коды состояний ИБП отображаются в поле ups.status и могут принимать значения
- OL — система работает от сети;
- OB — система работает от батареи;
- LB — система работает от разряженной батареи.
Настройка nut для управления на нескольких компьютерах:
на сервере:
nano /etc/nut/upsd.conf
LISTEN ип сервера : 3493
LISTEN 127.0.0.1 : 3493
далее
nano /etc/nut/nut.conf
MODE=netserver
далее
nano /etc/nut/upsd.users
[upsmon2]
password = 123456
upsmon slave
перезагружаем
/etc/init.d/nut-server restart
на клиенте:
устанавливаем клиент
apt install nut-client
редактируем
nano /etc/nut/upsmon.conf
MONITOR ippon@ип сервера 1 upsmon2 123456 slave
далее
nano /etc/nut/nut.conf
MODE=netclient
перезагружаем
/etc/init.d/nut-client restart
проверяем
upsc ippon@ип сервера