Перейти к содержанию

ИБП с NUT

ИБП, подключённый по USB к NAS, Raspberry Pi или серверу, обычно отслеживается через Network UPS Tools (NUT): его демон upsd публикует всё, что сообщает ИБП, на TCP-порту 3493. DumbMonit читает этот сервер как любой клиент NUT: работает ли ИБП от сети или от батареи, разряжена или изношена ли батарея, заряд, оставшееся время работы, нагрузку, входное напряжение и возраст батареи. Один сервер часто публикует несколько ИБП; все они читаются за одно соединение, и каждый ряд данных несёт имя своего ИБП.

Для ИБП с собственной сетевой картой тип устройства SNMP читает стандартную UPS-MIB.

Что отслеживается

Все метрики имеют префикс dumbmonit_nut_ и метку ups — имя ИБП в ups.conf (ups на Synology NAS, qnapups на QNAP). Переменная, которую ИБП не публикует, не создаёт ряда данных.

Метрика Что Метки
ups_on_line, ups_on_battery, ups_low_battery, ups_high_battery, ups_replace_battery, ups_charging, ups_discharging, ups_bypass, ups_calibrating, ups_off, ups_overload, ups_trim, ups_boost, ups_forced_shutdown, ups_alarm Флаги ups.status (OL, OB, LB, HB, RB, CHRG, DISCHRG, BYPASS, CAL, OFF, OVER, TRIM, BOOST, FSD, ALARM): 1, если установлен, иначе 0, все — при каждом чтении ups
ups_status_info значение 1, исходный ups.status ups, status
battery_charge_percent, battery_charge_low_percent заряд и заряд, ниже которого ИБП сообщает о разряде батареи ups
battery_runtime_seconds, battery_runtime_low_seconds оставшееся время работы от батареи при текущей нагрузке и время работы при низком заряде ups
battery_voltage_volts, battery_temperature_celsius ups
battery_age_seconds время с battery.date (установка или замена), а при его отсутствии — с battery.mfr.date ups, source (installed, manufactured)
input_voltage_volts, input_voltage_nominal_volts, input_frequency_hertz сторона сети; 0 В во время отключения ups
output_voltage_volts, output_frequency_hertz сторона нагрузки ups
ups_load_percent нагрузка в процентах от мощности ИБП ups
ups_realpower_watts, ups_realpower_nominal_watts, ups_power_va, ups_power_nominal_va потребляемая мощность и номинал, если ИБП их сообщает ups
ups_temperature_celsius ups
ups_self_test_failed 1, если последний самотест (ups.test.result) сообщает об ошибке или предупреждении, 0 — если пройден; отсутствует, если тест не запускался ups, result
ups_info значение 1 ups, manufacturer, model, firmware, driver, battery_type, description
ups_data_stale 1, если upsd отвечает, но не имеет свежих данных от ИБП (DATA-STALE, DRIVER-NOT-CONNECTED) ups
ups_driver_connected 0, если драйвер NUT этого ИБП не запущен ups
server_ups число ИБП, публикуемых сервером
server_info значение 1 version

Серийные номера никогда не помещаются в метки. С одного сервера читается не более 32 ИБП.

Применяются встроенные правила: ИБП работает от батареи, батарея ИБП разряжена, батарею ИБП нужно заменить, высокая нагрузка ИБП, малое время работы ИБП, устаревшие данные ИБП, а также Монитор недоступен, когда сам сервер NUT перестаёт отвечать.

Страница монитора

Панель над графиками показывает то, что сохранил опрос; открытие страницы никогда не подключается к серверу NUT. Одна карточка на каждый ИБП: его состояние словами (от сети, от батареи, низкий заряд, замените батарею, байпас, перегрузка…), заряд, оставшееся время работы, нагрузка, входное напряжение и возраст батареи.

Как позволить DumbMonit читать сервер NUT

  1. Найдите сервер NUT: машина, к которой подключён ИБП (NAS, Raspberry Pi, сервер), запускает upsd на TCP-порту 3493. С хоста DumbMonit проверьте, что он отвечает, и запишите имена его ИБП.

    printf 'LIST UPS\nLOGOUT\n' | nc nas.lan 3493
    

    Если установлены клиентские утилиты NUT, upsc -l nas.lan выдаёт тот же список.

  2. При обычной установке NUT настройте upsd так, чтобы он слушал адрес, доступный хосту DumbMonit: добавьте эту строку в upsd.conf, откройте TCP-порт 3493 в брандмауэре для хоста DumbMonit и перезапустите upsd. Для чтения учётная запись не нужна: upsd позволяет любому принятому хосту читать переменные и ничего не меняет без пользователя, имеющего на это право.

    LISTEN 0.0.0.0 3493
    
  3. На NAS такой же переключатель называется иначе. Synology DSM: Панель управления → Оборудование и питание → ИБП, включите Включить сетевой сервер ИБП и добавьте хост DumbMonit в Разрешённые устройства DiskStation; ИБП называется ups. QNAP: страница ИБП в Панели управления, Включить сетевой мастер ИБП, с хостом DumbMonit среди разрешённых адресов; ИБП называется qnapups. TrueNAS: служба ИБП с включённым Remote Monitor.

  4. Необязательно: DumbMonit отправляет имя пользователя и пароль, только если вы их ввели, а upsd не требует их для чтения. Если ваша политика требует именованных клиентов, добавьте в upsd.users пользователя без actions и instcmds с длинным случайным паролем и перезапустите upsd.

    [dumbmonit]
    password = a-long-random-password
    
  5. В DumbMonit введите адрес сервера NUT, например "nas.lan". Отслеживаются все ИБП, которые он публикует; чтобы отслеживать только некоторые, перечислите их имена в параметре UPS.

  6. DumbMonit только читает: он отправляет LIST UPS и LIST VAR, но никогда LOGIN, SET, INSTCMD или FSD, поэтому сервер никогда не считает его вторичным клиентом, которого нужно дождаться перед выключением.

Warning

DumbMonit следит за ИБП, но ничего не выключает. Машинам, которые питает ИБП, по-прежнему нужен собственный клиент NUT (upsmon), чтобы корректно выключиться при низком заряде батареи.

Учётные данные

Учётные данные Поля
Без аутентификации По умолчанию: upsd позволяет любому принятому хосту читать переменные ИБП.
Имя пользователя / пароль upsd Отправляются командами USERNAME и PASSWORD перед чтением. upsd проверяет их только для команд, которые DumbMonit никогда не отправляет.

Адрес: имя хоста или IP (nas.lan), host:port или форма ups@host из upsc, из которой сохраняется только хост. Параметры: порт (3493), отслеживаемый ИБП (по умолчанию все) и тайм-аут на один обмен (10 с).

Отказ в соединении или отсутствие ответа считается недоступностью монитора. Когда машина с сервером NUT выключается во время сообщаемого ею отключения питания (часто она сама является первичным upsmon), оповещения ИБП скрываются как подавленные, а для того же монитора срабатывает Монитор недоступен: читайте оповещение Монитор недоступен как признак того, что сбой питания победил. Запускайте сервер NUT на машине, которая переживёт остальные, или следите за ИБП со второго сервера NUT. ACCESS-DENIED отображается как ошибка учётных данных, а имя ИБП, которое сервер не публикует, — как ошибка конфигурации; ни то ни другое не будит никого ночью. Соединение — обычный TCP: STARTTLS не используется, и ничто из читаемого не является секретом.