Моніторинг усіх БД через Percona PMM: налаштування та впровадження

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

Моніторинг БД наосліп: деградацію помічають за скаргами

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

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

Таке вузьке місце в базі не видно до моменту, коли в чергу стають з'єднання. Першими реагують користувачі: «форма довго зберігається», «звіт не відкривається».

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

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

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

Що змінюється після підключення баз до спостереження

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

Раннє виявлення деградації замість розбору наслідків

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

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

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

Єдина картина за різнорідними базами

Різні СУБД і різне обладнання зводяться в один контур: агенти збирають показники, сервер зберігає їх і віддає через загальний інтерфейс.

Наші інженери працюють на відкритій платформі рівня Percona PMM — вона покриває поширені СУБД, включаючи кластери та репліки, і не прив'язує вас до одного постачальника.

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

Способи збору метрик: локальний агент, зовнішнє опитування, гібрид

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

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

Коли достатньо зовнішнього опитування

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

Платите глибиною — стан буферного пулу, введення-виведення за таблицями та внутрішні черги зовні видно частково, а при обриві зв'язку дані просто зникають.

Коли потрібен локальний агент на вузлі

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

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

Варіант Коли підходить Обмеження
Зовнішнє опитування Парк до десятка вузлів, стабільна мережа, швидкий старт Менша глибина, немає даних при недоступності вузла
Локальний агент Навантажені бази, потрібні метрики планувальника та введення-виведення Агент на кожному вузлі, доступи до сокета
Гібрид Різнорідний парк: критичне — з агентом, периферія — зовні Складніше налаштування, дві схеми в одній панелі

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

Порядок впровадження: від інвентаризації до передачі

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

Схема підключення та розмежування прав

  1. Інвентаризація баз: збираємо перелік екземплярів, ролей, реплік і кластерів, позначаємо критичні для бізнесу та виведені з експлуатації. Пропущений вузол потім спливає в момент аварії.
  2. Проєктування схеми: визначаємо, де стоїть сервер спостереження, як він знімає метрики з кожного вузла і що відбувається при обриві каналу.
  3. Розмежування прав: заводимо окремий обліковий запис з мінімально достатніми правами — читати метрики й стан, без доступу до самих даних.
  4. Налаштування збору: вмикаємо метрики, журнал повільних запитів і статистику виконання, задаємо терміни зберігання, щоб обсяг не зростав безконтрольно.

Перевірка порогів і каналів оповіщення

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

Що залишається у вашої команди після впровадження

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

Усе перелічене нижче ми віддаємо в систему контролю версій і у внутрішню базу знань — не налаштуваннями «на сервері в адміністратора», які живуть до першої відпустки.

Комплект конфігурацій і схем

  • Конфігурація спостереження: файли підключення агентів до Percona PMM, змінні середовища та перелік збираних метрик — нова база заводиться копіюванням і правкою двох параметрів.
  • Схема підключення: топологія «база — збирач метрик — сховище» з адресами, портами та межами мереж; за нею відразу видно, що доступно ззовні, а що закрито.
  • Політики доступу: сервісні облікові записи з мінімальними правами та розмежуванням ролей — черговий бачить графіки, зміна порогів доступна лише власнику сервісу.
  • Набір дашбордів під ваші ролі: окремі види для чергового, розробника й керівника, щоб кожен відкривав свою картину, а не загальний список із сотні метрик.

Регламенти чергування та ескалації

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

Кейс: скоротили час пошуку причини деградації

Кейс моніторингу парку з кількох десятків баз: транзакційне ядро, репліки, аналітичні вивантаження з різним профілем навантаження. До впровадження Percona PMM про проблему дізнавалися від користувачів, а розбір починався вже після того, як деградація стала помітна ззовні.

Що було до підключення

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

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

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

Що змінилося після

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

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

Метрики до і після: частка інцидентів, виявлених за оповіщенням, а не за скаргою, зросла з поодиноких випадків до більшості; середній пошук причини — з 40–60 хвилин до 5–10 при тому ж розмірі парку.

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

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

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

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

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

Варіант Коли підходить Обмеження
Спостереження за вузлом Одиночний сервер, тестовий контур, розбір інциденту на конкретній машині Не бачить ролі та топологію; перемикання виглядає як провал метрик
Спостереження за кластером Кластер баз із реплікацією та автоматичним перемиканням ролей Потрібен доступ до службових представлень і єдина точка збору
Обидва рівні разом Продуктивний кластер: важливі й ресурси, і логіка реплікації Складніше в налаштуванні, потрібна нормалізація метрик

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

Це дозволяє розрізняти причину та наслідок: затримки на веденому — це відстала репліка чи нестача місця.

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

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

Збір метрик навантажить продуктивні бази?

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

Де зберігається історія і як довго?

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

Бази в закритому контурі, без прямого доступу із загальної мережі

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

У нас уже розгорнуті сторонні засоби спостереження

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

Хто відповідає за оповіщення після передачі?

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

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

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

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

Ми звіримо перелік баз зі схемою розміщення, перевіримо, як Percona PMM ляже на ваші версії СУБД, і повернемося з оцінкою проєкту та планом робіт. Опишіть задачу — обговоримо деталі й запропонуємо порядок впровадження.

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

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

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