Перейти к содержимому

ИБП с 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.statusups, status
battery_charge_percent, battery_charge_low_percentзаряд и заряд, ниже которого ИБП сообщает о разряде батареиups
battery_runtime_seconds, battery_runtime_low_secondsоставшееся время работы от батареи при текущей нагрузке и время работы при низком зарядеups
battery_voltage_volts, battery_temperature_celsiusups
battery_age_secondsвремя с battery.date (установка или замена), а при его отсутствии — с battery.mfr.dateups, 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_celsiusups
ups_self_test_failed1, если последний самотест (ups.test.result) сообщает об ошибке или предупреждении, 0 — если пройден; отсутствует, если тест не запускалсяups, result
ups_infoзначение 1ups, manufacturer, model, firmware, driver, battery_type, description
ups_data_stale1, если upsd отвечает, но не имеет свежих данных от ИБП (DATA-STALE, DRIVER-NOT-CONNECTED)ups
ups_driver_connected0, если драйвер NUT этого ИБП не запущенups
server_upsчисло ИБП, публикуемых сервером
server_infoзначение 1version

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

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

Панель над графиками показывает то, что сохранил опрос; открытие страницы никогда не подключается к серверу 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, поэтому сервер никогда не считает его вторичным клиентом, которого нужно дождаться перед выключением.

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

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

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