АйТи Фреш
Главная / Статьи / Серверы и инфраструктура
Серверы и инфраструктура

Автоматическое завершение работы сервера при пропадании питания: как подружить ИБП и NUT/APC

Автор: Семёнов Евгений Сергеевич, директор ООО «АйТи-Фреш» · 2026-07-08
Автоматическое завершение работы сервера при пропадании питания: как подружить ИБП и NUT/APC

Свет в Москве вырубается не так часто, как в 90-х, но раз в год-полтора это случается практически у каждого моего клиента. И каждый раз одна и та же картина: бухгалтер судорожно звонит, кто-то бежит к серверной стойке, кто-то пытается вспомнить, где выключатель на ИБП. А сервер к этому моменту уже минут пять как сидит на батарее и молча ждёт, когда она сдохнет. Расскажу, как настроить так, чтобы никто никуда не бежал — сервер сам аккуратно ляжет спать, когда батарея начнёт заканчиваться.

История одного клиента и убитой базы 1С

У одного клиента, небольшая торговая компания на Варшавке, лет пять назад свет вырубился в четверг вечером. ИБП APC Smart-UPS 1500VA держал сервер минут двенадцать — по паспорту должен был дольше, но батарея уже была не первой свежести, никто её не менял три года. Директор в этот момент был на встрече, бухгалтер уже ушла домой, а сисадмина на аутсорсе (на тот момент не нас) никто не предупредил.

Итог: батарея сдохла, сервер выключился жёстко, посреди записи в базу 1С. Наутро база не открывалась вообще. Восстанавливали из бэкапа трёхдневной давности, потом руками досводили движения — два дня работы бухгалтерии коту под хвост. И это ещё повезло, что бэкап вообще был рабочий.

С тех пор я на всех новых внедрениях сразу спрашиваю: а что у вас с автоматическим завершением работы при пропадании питания? В девяти случаях из десяти ИБП стоит, светится зелёным индикатором, а софта, который скажет серверу «пора спать», — нет вообще. ИБП просто продлевает агонию на несколько минут, а потом всё равно жёсткое выключение, только чуть позже.

Почему надежда на человека — это не план, а лотерея

Смотрите, как это выглядит на бумаге у большинства владельцев малого бизнеса. Есть ИБП. Есть человек, который «в курсе» и должен прийти выключить сервер вручную, если свет пропал надолго. Проблема в том, что это работает только если человек: а) на месте, б) заметил отключение, в) успел дойти до серверной, г) знает, как правильно останавливать службы, а не просто дёргать рубильник.

На практике совпадение всех четырёх условий — редкость. Отключение может случиться в 23:00, в выходной, во время корпоратива в переговорке этажом ниже. У меня был клиент — медицинская клиника, где сервер стоял в подсобке рядом с процедурным кабинетом. Когда вырубился свет, персонал занимался пациентом и физически не мог отойти. Сервер продержался на ИБП 40 минут (хороший, кстати, был ИБП, Eaton 5PX с расширенным батарейным модулем), а потом просто лёг сам, некорректно.

Runtime ИБП на полной нагрузке для типового сервера в стойке — обычно 8-20 минут для стандартной батареи, до 40-60 минут с внешним батарейным блоком. Это время дано не для того, чтобы кто-то успел добежать. Это время для того, чтобы автоматика успела корректно остановить службы СУБД, размонтировать диски и выключить ОС. Человеческий фактор тут просто лишний и медленный.

NUT и apcupsd — в чём разница и что выбрать

Софта для мониторинга ИБП под Linux по сути два конкурирующих проекта: apcupsd и NUT (Network UPS Tools). apcupsd, как понятно из названия, заточен под APC и делает своё дело неплохо, но развивается вяло — последний крупный релиз был довольно давно. NUT же поддерживает сотни моделей от десятков производителей — APC, Eaton, CyberPower, Powercom, Ippon — через единый набор драйверов usbhid-ups, snmp-ups, blazer_usb и другие.

Я в 2026 году всем клиентам ставлю NUT, даже если у них чистый APC. Причина простая: если завтра клиент купит новый ИБП другого бренда — а с учётом текущих проблем с поставками APC в Россию это вполне реальный сценарий — не придётся переписывать всю конфигурацию с нуля, поменяется только строчка driver в ups.conf.

У NUT архитектура из трёх частей, и это важно понимать сразу, а не разбираться в панике при первой настройке. Первая часть — driver, он общается напрямую с ИБП по USB, serial или SNMP и кладёт данные в общую память. Вторая — upsd, демон-сервер, который раздаёт эти данные по сети клиентам. Третья — upsmon, который следит за состоянием батареи и принимает решение о выключении. Три сервера, три разных набора служб — но обычно всё крутится на одной машине.

Как физически подключить ИБП к серверу

Самый частый и самый дешёвый вариант — USB-кабель, который идёт в комплекте почти с любым современным ИБП, хоть за 15 тысяч рублей, хоть за 150. Втыкается в сервер, определяется как HID-устройство, NUT забирает данные драйвером usbhid-ups. Работает надёжно, я такую схему разворачивал десятки раз.

Есть нюанс: если сервер виртуализирован — стоит ESXi или Hyper-V — USB-порт физического хоста не пробрасывается автоматически в гостевую ОС мониторинга. Приходится либо пробрасывать USB-контроллер целиком через passthrough (не всегда возможно), либо ставить сетевую карту управления (Network Management Card, NMC) в сам ИБП и общаться с ним по SNMP через drivera snmp-ups — уже без всякого USB, просто по IP-адресу карты.

Для серьёзных инсталляций, где ИБП питает несколько серверов и стойку целиком, я всегда рекомендую сразу закладывать NMC-карту, благо для линейки APC Smart-UPS она стоит порядка 25-35 тысяч рублей — не самая большая статья расходов на фоне остального оборудования. Один ИБП с картой управления по SNMP может присматривать сразу за пятью-семью серверами через NUT, каждый из которых подписан на его статус.

Пошаговая настройка NUT на Linux

Ставим пакет: apt install nut (для Debian/Ubuntu) или yum install nut для CentOS-подобных. Дальше три конфига, которые нужно тронуть руками — все они лежат в /etc/nut/. Первый, ups.conf, описывает сам ИБП: [apc-server] driver = usbhid-ups, port = auto, desc = "Основной серверный ИБП". Дальше командой upsdrvctl start проверяем, что драйвер вообще видит устройство.

Второй конфиг, upsd.conf, задаёт, на каком интерфейсе слушать — обычно LISTEN 127.0.0.1 3493, если клиент на этой же машине, или LISTEN 0.0.0.0 3493, если мониторим несколько серверов с одного ИБП по сети. Третий, самый важный — upsmon.conf. Там прописываются учётные данные (upsmon master apc-server@localhost 3493 monuser secretpass master) и, что критично, команда SHUTDOWNCMD "/sbin/shutdown -h +0".

Дальше настраиваются пороги в upsmon.conf: MINSUPPLIES, FINALDELAY, и главное — на каком уровне заряда батареи (обычно связка ИБП сама шлёт сигнал LOWBATT) начинать процедуру выключения. У меня стандартная практика — выставлять запас так, чтобы полное корректное выключение всех служб укладывалось в 3-5 минут при оставшихся 15-20% заряда. Проверяется это, кстати, только реальным тестом, а не на бумаге — об этом ниже.

Windows-серверы и виртуализация: PowerChute, ESXi, Hyper-V

Если сервер на Windows Server, чистый NUT-клиент туда ставить неудобно — есть, конечно, порты вроде WinNUT, но для APC проще и роднее родной PowerChute Business Edition или Network Shutdown, который бесплатно идёт с ИБП. Настройка там через мастер: указываете IP карты управления или USB-подключение, задаёте сценарий Low Battery → Graceful Shutdown, и всё, служба сама вызовет корректное завершение работы Windows.

С виртуализацией на ESXi у меня был характерный случай у клиента-производства в Подольске: физический хост держал три виртуалки, включая контроллер домена и сервер 1С. NUT стоял на отдельной маленькой Linux-виртуалке (можно и на дистрибутиве вроде OpenMediaVault, лишь бы был доступ к сети управления ИБП). При сигнале о разряде батареи скрипт notifycmd сначала гасил гостевые ОС по очереди через vim-cmd vmsvc/power.shutdown, выжидал паузу, и только потом отправлял сам хост ESXi в maintenance mode и в выключение командой через esxcli system shutdown poweroff.

Порядок здесь принципиален. Если выключить гипервизор раньше гостевых машин — получите те же битые базы, только внутри виртуального диска, что чинить ещё неприятнее, чем на голом железе. Каждый шаг оформляется отдельным shell-скриптом, который NUT дёргает через NOTIFYCMD или через кастомный upssched, с таймаутами между этапами — обычно 60-90 секунд на каждую виртуалку с базой.

Тестирование — то, что все пропускают, а зря

Вот тут у меня накопилась целая коллекция историй, как настроенная, казалось бы, автоматика подводила именно потому, что её ни разу не проверили вживую. Один клиент был уверен, что всё работает: конфиг вроде правильный, upsmon запущен. Реальное отключение показало, что демон в принципе не видит ИБП — просто потерялось usb-устройство после обновления ядра, а никто не заметил, потому что логи никто не читал.

Правильная проверка — раз в квартал, а не раз при внедрении и забыть. Физически выдёргиваете вилку ИБП из розетки (не сервер, а именно ИБП из сети), смотрите, что происходит: приходит ли уведомление в телеграм или на почту о переходе на батарею, начинается ли отсчёт таймера, и главное — реально ли сервер укладывается в graceful shutdown до того, как сядет батарея. Обратно втыкаете через пару минут, проверяете, что всё поднимается штатно после восстановления питания — часто забывают настроить автозапуск после power restore.

Отдельно рекомендую тестировать сценарий с частично разряженной батареей — старой, отработавшей два-три года. У неё внутреннее сопротивление растёт, реальный runtime падает вдвое от паспортного, и вот тут окно на корректное выключение может внезапно оказаться не 15 минут, а три. Батареи в ИБП меняются каждые 3-5 лет, и это не тот пункт бюджета, на котором стоит экономить.

Что купить и сколько это стоит

Для одного сервера в стойке без изысков вполне хватает линейного интерактивного APC Smart-UPS SMT750RMI2U или аналога — цена сейчас в районе 45-60 тысяч рублей с учётом текущих реалий поставок. Для критичной инфраструктуры (сервер 1С, файловый сервер с базой клиентов клиники, терминальный сервер на 20 сессий) я обычно советую двойное преобразование онлайн — Eaton 5PX или APC Smart-UPS SRT, дороже, от 90 тысяч, зато чистая синусоида и защита от просадок напряжения, а не только от полного отключения.

NMC-карта для сетевого мониторинга через SNMP — плюс 25-35 тысяч, но если у вас больше одного сервера в стойке, она окупается сразу, потому что не нужно тянуть USB-кабель к каждому боксу и настраивать NUT на каждом отдельно. Сам софт — NUT, apcupsd, PowerChute — бесплатный, это открытые или включённые в комплект решения, платить не за что, только за время настройки.

В сухом остатке: полная защищённая связка на один сервер обходится в 70-100 тысяч рублей единоразово плюс замена батарей раз в 3-5 лет (5-15 тысяч за комплект). По сравнению со стоимостью одного дня простоя бухгалтерии или восстановления битой базы 1С — а это часто дороже, чем сам ИБП — сумма несерьёзная.

Частые вопросы

Один ИБП питает три сервера — нужно ли настраивать NUT на каждом отдельно?
Настроить придётся на каждом, но источник данных будет один. Ставите драйвер и upsd на машине, физически подключённой к ИБП (или на самой NMC-карте), а на остальных серверах настраиваете upsmon как slave-клиент, который просто спрашивает статус по сети через порт 3493. Так все три сервера узнают о низком заряде батареи одновременно и начнут выключение по заранее заданному приоритету.

USB-кабеля хватит или обязательно нужна сетевая карта управления?
Для одного физического сервера без виртуализации USB вполне достаточно и это самый дешёвый вариант — кабель обычно уже в комплекте. Сетевая карта нужна, если у вас виртуализация без пробрасываемого USB, несколько серверов на одном ИБП, или ИБП физически стоит далеко от серверов и тянуть кабель неудобно.

Что если моего ИБП нет в списке поддерживаемых NUT?
На практике это редкость — список поддержки NUT огромный, там больше пяти тысяч моделей. Но если ИБП совсем экзотический, часто помогает generic-драйвер usbhid-ups с параметром vendorid и productid, которые видно через lsusb. В крайнем случае на APC можно поставить родной apcupsd, он менее гибкий, но с APC работает из коробки без танцев с бубном.

Как часто нужно проверять, что автоматика реально сработает?
Раз в квартал — физическое отключение ИБП от розетки с контролем полного цикла: уведомление, таймер, graceful shutdown, и последующий запуск после восстановления питания. Плюс обязательная проверка сразу после любого обновления ОС или замены батареи — оба события чаще всего и ломают то, что раньше работало.

Не хотите разбираться с upsmon.conf и SNMP-картами в свободное время?
Мы в АйТи-Фреш настраиваем связку ИБП и NUT под ключ вместе с тестовым отключением — обращайтесь, сделаем так, чтобы сервер сам ложился спать, а не ваш бухгалтер бежал по коридору.
Бесплатная консультация →

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

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

© ООО «АйТи-Фреш» · Москва · Все статьи