· 14 мин чтения

Мониторинг ИБП на сервере: NUT и apcupsd вместо бумажной «как-нибудь переживём»

Меня зовут Семёнов Евгений Сергеевич, директор АйТи Фреш. За 15 лет сопровождения серверных в офисах на 30–500 рабочих мест я видел десятки случаев, когда дорогой ИБП стоит на стойке, моргает красным огоньком и никак не связан с серверами, которые он должен защищать. Свет мигнул — сервер ушёл на холодный рестарт, SQL-база Битрикс24 слетела в recovery, а бухгалтерия полдня ждёт, пока 1С поднимется. А решается всё одной грамотной связкой Network UPS Tools или apcupsd.

Зачем мониторить ИБП программно

Я всегда повторяю на аудитах: ИБП без софтового мониторинга — это батарейка, а не защита. Физический ИБП даёт только буфер времени. Если софт не знает, что питание пропало, сервер доработает до полного разряда батарей и получит резкое отключение. Последствия — повреждение файловых систем, журналов СУБД, иногда контроллеров RAID.

Задачи софтового мониторинга на практике три:

У нас на практике ни один клиент, у которого настроен NUT с алертами, не терял данные при внезапном отключении питания. А без него — минимум раз в год всплывает «у нас тут в пятницу вечером свет мигнул, сервер не стартует».

NUT против apcupsd: что выбрать

Два основных инструмента в мире Linux — Network UPS Tools (NUT) и apcupsd. Оба старые, стабильные, работают на Debian/Ubuntu/CentOS/Proxmox/TrueNAS. Но у каждого своя ниша.

КритерийNUTapcupsd
Поддержка ИБПAPC, Eaton, CyberPower, Ippon, PowerCom, Riello — сотни моделейТолько APC (USB + SNMP через NIS)
ПротоколыUSB, Serial, SNMP, XML/HTTPUSB, SNMP (ограниченно)
Мастер/слейвДа, один сервер обслуживает несколько клиентовДа, через NIS
Сложность настройкиСредняя (4 конфига)Низкая (1 конфиг)
Интеграция с ProxmoxЕсть статьи, плагиныЕсть, проще

Правило простое: один сервер + один ИБП APC — apcupsd. Смешанный парк ИБП или кластер из двух гипервизоров, питающихся от одного ИБП через сеть — NUT. На наших клиентах с Eaton 9130 и Ippon Innova RT я всегда ставлю только NUT.

Установка и настройка apcupsd на Debian/Proxmox

Самый быстрый сценарий — Proxmox-хост с APC Smart-UPS подключён по USB. Ставим пакет:

apt update
apt install apcupsd apcupsd-cgi -y

# Проверяем, что ИБП увиделся по USB
lsusb | grep -i american
# Bus 001 Device 004: ID 051d:0002 American Power Conversion

Правим /etc/apcupsd/apcupsd.conf:

UPSNAME smartups1500
UPSCABLE usb
UPSTYPE usb
DEVICE
LOCKFILE /var/lock
ONBATTERYDELAY 10
BATTERYLEVEL 30
MINUTES 5
TIMEOUT 0
ANNOY 60
ANNOYDELAY 300
NOLOGON disable
KILLDELAY 0
NETSERVER on
NISIP 127.0.0.1
NISPORT 3551

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

sed -i 's/ISCONFIGURED=no/ISCONFIGURED=yes/' /etc/default/apcupsd
systemctl enable --now apcupsd
apcaccess status

Вывод должен показать STATUS ONLINE, LINEV ~220V, LOADPCT, BCHARGE 100%. Если увидели — настройка прошла.

Установка и настройка NUT с нуля

NUT состоит из четырёх компонентов: upsd (сервер опроса), upsmon (мониторинг), upslog (логгер) и upscmd (команды). Ставим всё:

apt install nut nut-client nut-server -y

Первый конфиг — /etc/nut/ups.conf. Описываем подключённый ИБП:

[eaton9130]
        driver = usbhid-ups
        port = auto
        desc = "Eaton 9130 3kVA, стойка 1"
        vendorid = 0463

Второй — /etc/nut/upsd.conf:

LISTEN 127.0.0.1 3493
LISTEN 10.10.10.5 3493

Третий — /etc/nut/upsd.users — учётки:

[monuser]
    password = S3cr3tM0nP4ss
    upsmon master

[admin]
    password = S3cr3tAdmPass
    actions = SET
    instcmds = ALL

Четвёртый — /etc/nut/upsmon.conf:

MONITOR eaton9130@localhost 1 monuser S3cr3tM0nP4ss master
SHUTDOWNCMD "/sbin/shutdown -h +0"
NOTIFYCMD /etc/nut/notify.sh
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
MINSUPPLIES 1
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5

Режим работы NUT задаётся в /etc/nut/nut.conf: MODE=standalone для одного сервера или netserver, если другие хосты будут подключаться по сети. Перезапуск:

systemctl restart nut-server nut-client
upsc eaton9130@localhost

Скрипт алертов в Telegram

Сам по себе NUT пишет только в syslog. Я всегда добавляю скрипт, который отсылает уведомление в Telegram по трём событиям: OnBattery, LowBattery, OnLine. Файл /etc/nut/notify.sh:

#!/bin/bash
TOKEN="123456:AAEx..."
CHAT_ID="-1001234567890"
MSG="$(hostname): $NOTIFYTYPE на $UPSNAME — $(upsc $UPSNAME ups.status 2>/dev/null)"
curl -s -X POST "https://api.telegram.org/bot${TOKEN}/sendMessage" \
     -d "chat_id=${CHAT_ID}" \
     -d "text=${MSG}" >/dev/null

Не забудьте chmod +x и привязать в upsmon.conf через NOTIFYCMD. Дополнительно в том же конфиге задаются сами уведомления:

NOTIFYFLAG ONBATT  SYSLOG+EXEC
NOTIFYFLAG LOWBATT SYSLOG+EXEC
NOTIFYFLAG ONLINE  SYSLOG+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+EXEC

Реальный кейс: тюнинг защиты юридической фирмы

В марте 2026 года ко мне обратилась юрфирма в центре Москвы — 42 рабочих места, один Proxmox-сервер на Dell Xeon Platinum 8280, ИБП APC Smart-UPS 1500VA. Ранее ИБП стоял «для галочки», без мониторинга. За полгода трижды случался внезапный рестарт после кратковременных отключений, один раз база 1С ушла в recovery на 6 часов.

За один выезд мы подключили USB-кабель от ИБП к хосту, поставили NUT в режиме standalone, прописали shutdown всех VM через скрипт на upssched, настроили Telegram-бот. Пороги: 180 секунд на батарее или 30% заряда — отдаём команду остановки, ещё 60 секунд на завершение VM, потом halt гипервизора. Проверили живым тестом: вытащили кабель 220В, засекли секундомер. Через 3 минуты 12 секунд сервер ушёл в чистое выключение, база Битрикс24 и 1С вернулись без потерь при включении. Стоимость работ — 18 000 руб.

Мониторинг через Zabbix и Grafana

NUT отдаёт метрики через upsc. Zabbix-агент с шаблоном UPS NUT собирает: заряд батареи, runtime, нагрузку, статус, входное/выходное напряжение, частоту. У нас на практике порог алерта — BCHARGE < 80% (деградация батареи), LOADPCT > 75% (перегруз), STATUS != OL (не в режиме онлайн).

# Основные метрики для мониторинга
upsc eaton9130 | grep -E "battery.charge|ups.load|ups.status|input.voltage|battery.runtime"
battery.charge: 100
battery.runtime: 2340
input.voltage: 229.0
ups.load: 38
ups.status: OL

Для Grafana подходит Prometheus-exporter prometheus-nut-exporter — собирает те же метрики и визуализирует историю напряжения, времени на батарее, циклов перехода ON/OFF.

Типичные ошибки и грабли

За годы мы собрали стабильный список проблем, на которые наступают при первой настройке:

Настроим мониторинг ИБП для вашей серверной

Поставим NUT или apcupsd, протестируем shutdown живым отключением 220В, подключим Telegram-алерты и Zabbix. Делаем под ключ за 1–2 выезда. Проверяем батареи, перекоммутируем стойку, оформляем паспорт питания серверной.

Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш

FAQ — частые вопросы

Что лучше — NUT или apcupsd?
NUT поддерживает сотни моделей ИБП разных производителей и работает по сети. apcupsd заточен под APC и проще в настройке при одном сервере с одним ИБП. В смешанном парке я всегда ставлю NUT.
Нужен ли ИБП с сетевой картой?
Для одного сервера хватит USB. Если у вас два сервера и один ИБП, либо ИБП стоит в стойке отдельно от хоста — берите модель с сетевой картой AP9630/AP9641 или внешним SNMP-адаптером.
Через сколько секунд после пропадания 220В выключать сервер?
Рекомендую порог 180 секунд либо 30% остаточного заряда — в зависимости от того, что наступит раньше. Это даёт буфер на кратковременные отключения и гарантированный чистый shutdown до полного разряда.
Как проверить, что shutdown реально сработает?
Проведите реальный тест: выдерните кабель 220В из ИБП при работающих сервере и клиентах. Сервер должен уйти в shutdown по заданному порогу, все VM должны корректно выключиться, журнал NUT — содержать событие OB LB.
Можно ли мониторить ИБП через Zabbix?
Да. NUT предоставляет upsc-интерфейс, через который Zabbix-агент собирает charge, runtime, load, status. Шаблон UPS NUT публично доступен в zabbix-share. Альтернатива — прямой SNMP-опрос сетевой карты ИБП.

Подпишитесь на рассылку ITfresh

Раз в неделю — практические гайды для руководителя IT и сисадмина: безопасность, 1С, миграции, резервные копии, лайфхаки из реальных проектов.

Реквизиты оператора персональных данных

ООО «АЙТИ-ФРЕШ», ИНН 7719418495, КПП 771901001. Юридический адрес: 105523, г. Москва, Щёлковское шоссе, д. 92, корп. 7. Контакт: info@itfresh.ru, +7 903 729-62-41. Оператор обрабатывает e-mail подписчика в целях рассылки информационных и рекламных материалов до момента отзыва согласия.