Налаштування моніторингу UPS (ДБЖ) для серверів (NUT / apcupsd)

Відключення живлення помічають уже після падіння сервісів? Ми налаштовуємо моніторинг ДБЖ під ключ: контроль заряду, переходу на батареї та коректного завершення роботи. Ви отримуєте завчасні оповіщення й зрозумілий порядок дій замість розбору наслідків.
Часті запитання

Чому моніторинг ДБЖ не спрацьовує в момент відключення

Стійка запитана через джерело безперебійного живлення, але про перехід на батареї дізнається не сервер, а черговий — і часто вже за фактом зниклого зв’язку.

Канал між ДБЖ й операційною системою або не піднятий, або піднятий наполовину: пристрій віддає стан, але до вузла, який зобов’язаний коректно завершити роботу, ці дані не доходять.

Причини зазвичай побутові. Драйвер прив’язаний не до того порту після перейменування пристрою, служба стеження — NUT або apcupsd — запущена на гіпервізорі, а гостьові машини про роботу від батарей не повідомляються, або демон стартував без зв’язку з ДБЖ і мовчки працює вхолосту. Ззовні картина виглядає благополучно: останній відомий стан закешовано, нові події не надходять.

Окрема пастка — розряд батареї. Поріг низького заряду ставлять на залишок, якого має вистачити на м’яке завершення, але під навантаженням ємність просідає швидше, а самотест не запускається за розкладом.

Рівень не встигає дійти до порога — і відбувається раптове вимкнення сервера. Рідкісне опитування раз на кілька хвилин короткі просідання не ловить узагалі.

Зворотний бік — хибні тривоги: вузькі пороги без гістерезису, тести батареї в години пікового навантаження, повідомлення на кожне миготіння. Черговий звикає до шуму й пропускає справжнє відключення електроживлення.

Далі розбираємо, як зібрати ланцюжок оповіщення й коректного завершення роботи, який не бреше в жодний бік.

Що дає керований контроль живлення серверів

ДБЖ без моніторингу тримає навантаження до повного розряду батарей і гасне разом із нею. Сервер у цей момент не знає, що лінія зникла: журнал файлової системи залишається незакритим, транзакції бази — незавершеними, а дані висять у буфері, який уже нікуди скинути. Керований контроль живлення перетворює це на передбачуваний сценарій із відомим часом реакції.

Технічно це виглядає буденно: служба NUT опитує ДБЖ, публікує події та запускає скрипти. Втрата живлення, перехід на батареї, низький заряд, повернення лінії — кожна подія стає повідомленням і дією на сервері, а не аварією, про яку дізнаються вранці.

  • Поріг замість нуля. Правило «залишилося п’ять хвилин» дає сервісам закритися штатно, а не обірватися на останньому відсотку заряду.
  • Кероване завершення роботи. Скрипт зупиняє бази, скидає черги й кеш, відмонтовує томи — жорстке знеструмлення замінюється коректною зупинкою.
  • Цілий клас відмов зникає. Пошкоджений журнал, втрачені індекси, нічне відновлення з копії — наслідки однієї події, яка тепер обробляється за регламентом.
  • Простій рахується хвилинами. Сервер піднімається сам після повернення живлення: час недоступності задає скрипт, а не розряд батареї.
  • Повідомлення про події. Відповідальний отримує сигнал у момент переходу, а не приходить до охололого заліза.
  • Регулярна перевірка. Раз на квартал — тестове відключення лінії: переконуємося, що пороги, скрипти й оповіщення спрацьовують.

Зібраний разом, чек-лист змінює не обладнання, а поведінку системи при відмові: живлення, дані й оповіщення перестають бути незалежними сюжетами.

Варіанти підключення ДБЖ до системи моніторингу

Схема збору подій від джерела живлення визначає, які відмови ви взагалі побачите.

Побутові моделі віддають лише «живлення зникло / повернулося», а перегрів, знос і заміна батареї, робота на межі заряду доступні лише цифровим каналом — USB, послідовний порт або опитування через мережеву карту.

Відкриті драйвери на кшталт NUT закривають усі ці варіанти однією конфігурацією, тому вибирати доводиться не інструмент, а топологію: де живе агент, хто опитує ДБЖ і що станеться з подіями, коли мережа або сам хост ляжуть.

Схема Коли підходить Обмеження
Пряме підключення до хоста Один ДБЖ і один сервер, простий контур Агент живе на захищеному хості: при зависанні втрачаються і події, і команда на коректне завершення
Локальний агент на кожному хості Кілька серверів, важливе незалежне завершення роботи Драйвер монопольно займає порт, налаштування дублюються, загальної картини по парку ДБЖ немає
Мережеве опитування ДБЖ з картою розширення, багато споживачів Моделі без карти не підходять, частина параметрів недоступна, збір залежить від доступності мережі
Проміжний вузол Кілька ДБЖ і серверів, єдина точка збору Потрібен окремий хост-шлюз і резервування самого вузла

Проміжний вузол зазвичай виграє: ДБЖ підключений до нього напряму, а сервери отримують події мережею — відмова будь-якого з них не заважає зібрати статистику й розіслати команди на завершення роботи.

Порядок впровадження: від обстеження до передачі

Роботи йдуть одним проходом: до кінця в замовника залишається не «налаштований демон на сервері», а відтворюваний регламент — що опитується, за яких умов спрацьовує реакція і як це перевірити без зупинки сервісів.

  1. Обстеження інфраструктури: інвентаризація джерел живлення й вузлів, які вони живлять — модель, тип підключення, доступність інтерфейсу керування, кількість серверів на кожному ДБЖ.
  2. Схема навантажень: зіставляємо вузли й джерела, позначаємо критичність і допустимий час простою, визначаємо порядок завершення — що гасимо першим, що тримаємо до останнього.
  3. Проєктування опитування: шар опитування (NUT або apcupsd), інтервал знімання, пороги за зарядом і напругою, затримки — щоб реакція не спрацьовувала на коротких просіданнях.
  4. Сценарії реакції: повідомлення чергового, відкладене завершення служб, скасування сценарію при поверненні живлення, запис кожної події в журнал.
  5. Перевірка спрацьовування: тестове відключення в узгоджене вікно, замір фактичного часу автономії, розбір журналу, коригування порогів за підсумками.
  6. Спостережуваність: метрики надходять у загальну систему моніторингу, а мовчання агента опитування вважається окремим приводом — зникле опитування видно так само, як відключення.
  7. Передача в експлуатацію: конфігурації в репозиторії, схема живлення та інструкція для чергового, розбір типових подій з командою.

На виході — зрозуміла матриця «вузол → джерело → реакція» і перевірений сценарій, який спрацює однаково при плановому тесті та реальній аварії.

Конфігурації, схеми й регламенти: що передаємо

Працюючий сервіс — лише половина результату. Друга половина — пакет артефактів, за яким моніторинг ДБЖ можна супроводжувати й передавати між змінами без нас: від конфігурації до регламенту дій при переході на батареї.

  • Файли конфігурації служби моніторингу та оповіщень із коментарями: які параметри змінювати при заміні батарей і зміні моделі ДБЖ, а які мають залишитися незмінними.
  • Схема підключення: які сервери за яким ДБЖ, як розведені силові та сигнальні лінії, де зв’язок іде мережею, а де — послідовним портом.
  • Правила оповіщень з градацією: перехід на батареї, низький заряд, критичний заряд, повернення живлення, втрата зв’язку з ДБЖ — кожне зі своїм маршрутом і рівнем терміновості.
  • Ролі доступу: хто бачить статус, хто перезапускає службу, хто змінює пороги й правила оповіщень, хто відповідає за облікові дані самого ДБЖ.
  • Інструкція чергової зміни: порядок дій за кожним типом оповіщення, включно з коректним вимкненням серверів до розряду батарей і запуском після повернення живлення.
  • Регламент перевірок: як переконатися, що моніторинг живий, не знімаючи навантаження, — тестова подія, контроль журналів і часу останнього опитування.
  • Чек-лист приймання з очікуваною поведінкою на кожен сценарій: заміна батарей, зміна моделі ДБЖ, втрата мережі, недоступність самого сервера моніторингу.

Віддаємо у вигляді, придатному для передачі іншому інженеру або підряднику: конфігурації під контролем версій, схеми й регламенти — у спільній документації команди.

Кейс: прибрали хибні відключення на 40 серверах

Парк — 40 серверів у чотирьох стійках на двох майданчиках. Частина хостів опитувала ДБЖ через NUT, частина — через apcupsd, у решти моніторинг зводився до пінгу. Конфіги жили на кожній машині окремо, події нікуди не збиралися, і про перебій черговий дізнавався з дзвінка.

При просіданні живлення сценарій відключення не встигав узгодити хости: одні гасили навантаження відразу, інші писали на диск до останнього, і частина віртуальних машин ішла в жорстку зупинку.

Відновлення займало до 40 хвилин ручної звірки — які вузли піднімати і в якому порядку, — а події про перехід на батареї губилися: локальний журнал перезаписувався по колу і не залишав хост.

Що змінили

Опитування ДБЖ звели до єдиної точки: агент на кожному хості віддає заряд, температуру, навантаження й залишок автономії в загальний збирач; моделі APC читаються рідним драйвером, решта — через мережевий інтерфейс.

Події більше не залишаються тільки на хості: вони йдуть у чергу і звідти у сховище, тому перезапуск самого сервісу не стирає історію. Сценарії гасіння узгоджені за групами — спочатку бази й файлові сервіси, потім решта, із затримкою на завершення операцій.

Що стало

Хибні відключення припинилися: поріг рахується за зарядом і залишком автономії, а не за самим фактом переходу на батареї. Відновлення після збою — 6–8 хвилин, порядок підйому заданий політикою, стан усіх вузлів видно на одній панелі.

Втрат подій немає: за квартал жодного пропущеного переходу, включно з перебоями в стійках, де ДБЖ стоять парами й перемикаються по черзі.

Чим відрізняється мережеве опитування від локального агента на сервері?

Різниця в тому, де живе драйвер ДБЖ. При мережевому опитуванні стан знімається з керованої карти по SNMP або HTTP: збирач раз на кілька секунд забирає заряд, навантаження й напругу.

Локальний агент — наприклад, драйвер зі складу Network UPS Tools — працює на самому сервері й тримає пристрій через USB-HID або послідовний порт.

Мережеве опитування додає залежності схеми від мережі: комутатор, маршрут, порт і облікові дані між збирачем і ДБЖ. Зате на хостах нічого не встановлюється й права не видаються — одна точка збору бачить усі пристрої як звичайні мережеві. Але якщо карта живиться від того самого ДБЖ, при відключенні живлення зникає й канал опитування.

Локальний агент миттєво бачить перехід на батарею і може сам зупинити служби та погасити хост до вичерпання заряду. Ціна — залежності на боці сервера: проброс пристрою у віртуальну машину, права на порт, правила udev і контроль того, що другий драйвер не перехопив ДБЖ.

Надійність доставки подій обмежена по-різному. Локальний агент віддає поточний стан навіть при обриві зв’язку із системою моніторингу — втрачається лише видимість.

Мережеве опитування дискретне: короткий пік між опитуваннями у вибірку не потрапить, а при втраті каналу події не буферизуються й фіксуються лише як недоступність.

Тому вибір режиму збору — це розподіл ролей: локальний агент на критичних хостах, де потрібна автоматика, мережеве опитування — для огляду парку стійок. Гібрид на одному ДБЖ вимагає явно призначити власника пристрою, інакше збирачі конфліктують за порт.

Часті технічні сумніви щодо системи контролю живлення

Сумніви щодо контролю живлення зазвичай інженерні, а не організаційні: парк джерел різнорідний, окремого хоста під сервіс не виділено, а перевіряти політику вимкнення на живих стійках ніхто не готовий. Нижче — те, що запитують найчастіше до старту робіт.

У нас змішаний парк ДБЖ — зберете все в одну картину?

Так. Для кожного джерела підбирається спосіб знімання даних: USB-інтерфейс, послідовний порт, мережевий модуль виробника або сухий контакт.

NUT приводить різнорідне обладнання до спільної моделі змінних — заряд батареї, режим «на лінії / від батареї», навантаження, температура, — тому в моніторингу й повідомленнях парк виглядає однорідно. Там, де джерело віддає лише бінарний прапорець, стан усе одно потрапляє в загальну картину.

Окремого хоста немає — сервіс можна розмістити поруч із наявним?

Можна. Служба ставиться на вже працюючий вузол, ресурси їй потрібні мінімальні.

Важливіше інше: ініціатор коректного вимкнення не повинен сам залежати від контрольованого живлення, тому роль провідного вузла закріплюємо за фізичною машиною, а не за віртуалкою під тим самим гіпервізором. Інші хости підключаються до нього як клієнти.

Події губляться при обриві зв’язку — що із цим робите?

Кожна зміна стану спочатку пишеться в локальний журнал вузла, і тільки потім іде в систему моніторингу. При недоступності мережі записи накопичуються й доставляються після відновлення зв’язку, повтори обмежені за частотою, а дублі відсікаються за ідентифікатором події. Окремо налаштовуємо, які події вважаються критичними й потребують негайного повідомлення.

Як перевірити сценарії, не відключаючи стійки по-справжньому?

Перевірка йде кроками: спочатку тестовий перехід на батарею з контролем затримок, потім імітація зникнення живлення для вибраного вузла без навантаження, далі прогін політики вимкнення на тестовому сервері й перевірка, що після відновлення живлення служби піднімаються самі. Так перевіряються таймери, порядок вимкнення й доставка повідомлень — без ризику для продакшену.

Обговоримо задачу: повернемося з оцінкою та планом робіт

Щоб обговорити задачу з моніторингу ДБЖ предметно, достатньо короткого вхідного опису — решту уточнимо самі. Надішліть те, що вже під рукою: склад парку серверів і моделей безперебійників, як вони пов’язані зараз і що має відбуватися при відключенні живлення.

  • Перелік серверів і вузлів на живленні від ДБЖ — з роллю кожного в контурі.
  • Моделі безперебійників та їхні інтерфейси: мережевий порт, USB або лише сухий контакт.
  • Сьогоднішній спосіб контролю: ручний обхід, штатна утиліта виробника або його немає.
  • Схема мережі: які сегменти, чи є ізольовані майданчики і чи бачать вони одне одного.
  • Куди мають надходити повідомлення: пошта, чат чергової зміни, система оповіщень.
  • Що робити при розряді: коректно гасити сервіси, переносити навантаження або лише повідомляти.
  • Обмеження: вікна на перезавантаження, порядок доступу до обладнання, вимоги до журналів.

У відповідь повернемо оцінку та план: схему збору даних за кожним типом обладнання, перелік робіт зі встановлення й налаштування, порядок перевірки — з тестовим зняттям живлення на одному вузлі, щоб побачити весь ланцюжок від події до повідомлення. Роботи розкладемо за етапами, щоб запускати їх частинами.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1543
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1374
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142