Веб-розробкаE-commerce та Бізнес

Чотири тривоги, яких не було: моніторинг, що жив лише в документації

5 вересня 2026 року ми відкрили Grafana, щоб перевірити чотири правила тривог, які наша документація обіцяла з 17 січня. Правил там було нуль, метрики під ними — порожні, канал доставки — заглушка. Розповідаємо, що поставили замість, і як за пів години перевірити свій моніторинг.

17 вересня 2026 р.
7 хв читання

5 вересня 2026 року ми вирішили перевірити не сайт, а те, що мало б повідомити нам про його падіння. У нашій внутрішній документації з 17 січня 2026 року стояв рядок: чотири правила тривог, перевірка кожні 30 секунд. Частка помилок понад 5 % протягом п'яти хвилин, час відповіді (p95) довший за 2 секунди протягом 10 хвилин, вичерпаний пул з'єднань із базою, доба без жодного брифу. Звучало як захист від усього, що може статися з сайтом агенції.

Ми відкрили Grafana, де ці правила мали жити. Правил там було нуль.

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

Що ми знайшли 5 вересня

Дефектів виявилось три, і кожен окремо робив ті чотири правила марними.

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

Правилам не було на що дивитись. Усі чотири були написані на метриках сайту: кількість HTTP-запитів, їхня тривалість, помилки, стан бази. Ці метрики оголошені в коді, тобто мають назву й опис. Але сторінки сайту не викликають функцію, яка мала б їх записувати. Ми перевірили це ще раз 17 вересня: у сховищі метрик не знайшлося жодного ряду даних ні для запитів, ні для помилок, ні для бази. Навіть якби хтось підключив файл із правилами, вони порівнювали б із порогом порожнечу.

Доставки теж не було. Єдиним каналом сповіщень у Grafana був стандартний поштовий приймач з адресою-заглушкою. Він є в кожній свіжій інсталяції й нікуди не шле.

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

Чому цього ніхто не помітив

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

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

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

Що ми поставили замість

Того ж дня ми почали з сервера, а не з сайту, бо саме сервер у нас уже падав. 2 серпня 2026 року на спільному сервері закінчилась пам'ять: процеси почали примусово вбиватися, і машину довелося перезавантажити. Про це ми дізналися не від системи, а постфактум.

Тому 5 вересня з'явилися збирачі метрик самого сервера й контейнерів, окремий дашборд і чотири правила, які цього разу існують у Grafana і шлють повідомлення в Telegram власника:

  • середнє навантаження понад 8 (на восьми ядрах) упродовж 10 хвилин;
  • доступної пам'яті менше 1 ГБ із 15 упродовж 5 хвилин;
  • кореневий диск заповнений понад 90 % упродовж 15 хвилин;
  • будь-яке джерело метрик, зокрема сам сайт, не відповідає 5 хвилин.

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

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

Що показали перші 12 днів

17 вересня всі чотири правила мали стан «неактивне» і «справне»: система їх обчислює, помилок обчислення немає, умова не виконується.

Щоб зрозуміти, чи правила мовчать тому, що все гаразд, чи тому, що вони не спрацьовують, ми подивилися на самі метрики за 12 днів від запуску правил 5 вересня до 17 вересня.

  • Навантаження в окремі моменти сягало 19,04, але найвище значення, яке трималося цілих 10 хвилин поспіль, було 6,79. Порогу 8 воно не досягло.
  • Доступної пам'яті найменше було 4,58 ГБ. До порогу в 1 ГБ далеко.
  • Диск піднімався до 93,05 %, тобто вище за поріг. Але щоразу ненадовго: за всі 12 днів набралося 16 хвилинних замірів понад 90 %, а найвище значення, що трималося всі 15 хвилин поспіль, було 88,13 %.
  • Сайт як джерело метрик не відповів один раз, і це був єдиний хвилинний замір. Збирачі метрик сервера й контейнерів не пропустили жодного.

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

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

Як перевірити свій сайт

Для цього не треба розбиратися в коді. Потрібні доступ до системи моніторингу і пів години.

  1. Порахуйте правила, які існують у системі, а не в документі. У Grafana це розділ Alerting → Alert rules, в Uptime Kuma — список моніторів, у панелі хостингу — розділ сповіщень. Випишіть кожне: що перевіряє, який поріг, скільки часу має триматися порушення. Якщо список порожній або коротший, ніж вам розповідали, почніть звідси.
  2. Відкрийте кожне правило й подивіться, на що воно дивиться. Якщо правило рахує помилки сайту, відкрийте цей самий запит окремо й переконайтеся, що за останній тиждень у ньому взагалі є дані. Правило над порожньою метрикою мовчить не завжди однаково: у Grafana кожне правило має окреме налаштування на випадок відсутності даних, і від нього залежить, чи побачите ви звичне «в нормі», чи окремий стан «немає даних», який легко проґавити в списку. У трьох наших серверних правилах там стоїть «немає даних», у правилі про недоступну ціль — одразу тривога. Поломку порожня метрика не зловить у жодному з варіантів, тому дивіться на дані під запитом, а не на колір статусу.
  3. Перевірте, куди йдуть сповіщення. Подивіться список каналів доставки: пошта, Telegram, SMS. Адреса на кшталт example@email.com або канал, створений людиною, яка вже не працює з вами, означає, що доставки немає.
  4. Надішліть тестове сповіщення й дочекайтеся його на телефоні. У Grafana кнопка Test є в налаштуваннях кожного каналу. Зараховується лише повідомлення, яке ви побачили, а не зелена позначка «надіслано».
  5. Поставте собі три запитання: якщо сайт почне віддавати помилку 500, хто про це дізнається і коли; якщо закінчиться місце на диску; якщо перестануть іти листи із заявками. На кожне має бути назва правила і людина, до якої воно прийде. Відповідь «побачимо в статистиці» означає «ніхто».

Чого ми не вирішили

Наші нові правила стежать за сервером і за тим, чи відповідає сайт. Вони не стежать за тим, чи сайт працює правильно.

Помилки 500 на окремій сторінці ми досі не бачимо, бо метрики запитів, з яких усе почалося, так і лишились порожніми. Провал відправки листа теж не дає сповіщення. 8 вересня 2026 року два листи не пішли, журнал це записав, а знайшли ми ці записи вручну, коли самі його відкрили. Історію з листами ми докладно розібрали окремо: форма каже «дякуємо», а лист не йде.

Тобто 5 вересня ми закрили найгрубішу частину: падіння сервера більше не пройде повз нас. Тиха поломка всередині сайту досі пройде. Наступний крок у нас саме такий: записувати помилки запитів і невдалі листи й ставити на них правила з тим самим каналом доставки.

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

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

Теги

АналітикаPerformance

🤔Вам сподобалась стаття?

Ваша думка допомагає нам створювати кращий контент

Поділіться з друзями

Знайшли щось корисне? 🚀

Допоможіть іншим дізнатись про це — поділіться статтею в соціальних мережах

https://lionex.com.ua/blog/chotyry-tryvohy-yakyh-ne-bulo

💚 Дякуємо, що допомагаєте нам рости

Владислав Чистяков

Пише про те, що робить руками: інтернет-магазини на OpenCart, застосунки на Next.js, інтеграції та швидкість сайтів. У статтях — заміри й перевірки, які читач може повторити на своєму проєкті, а не загальні поради. Комерційна розробка з 2015 року.

Часті запитання

Відповіді на популярні питання по темі

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

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

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

Ті, що ловлять падіння інфраструктури: навантаження на сервер, брак пам'яті, заповнення диска та відсутність відповіді від самого сайту. Ми поставили саме такі чотири 5 вересня 2026 року, з витримкою від 5 до 15 хвилин, щоб не будити людину через короткий сплеск. Це мінімум, а не повний набір.

Бо вони дивляться на машину, а не на роботу застосунку. Помилка 500 на окремій сторінці або невдала відправка листа не змінюють ні навантаження, ні вільної пам'яті. У нас 8 вересня 2026 року два листи не пішли, журнал це записав, а сповіщення не прийшло: щоб такі збої доходили до людини, потрібні окремі метрики застосунку й окремі правила над ними.

Отримуйте найкращі статті на пошту

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

Ми поважаємо вашу приватність. Відписатись можна в будь-який момент.

Схожі статті

Всі статті
Сертифікати продовжуються самі: TLS на 116 сайтах і один, що не продовжився
Веб-розробка

Сертифікати продовжуються самі: TLS на 116 сайтах і один, що не продовжився

22 вересня 2026 року ми перевірили HTTPS-сертифікати на 116 сайтах, які вже міряли для ринкових вимірів, і для 104 з них порівняли стан із серпневим. Усі 116 пройшли перевірку, 108 стоять на 89- і 90-денних безкоштовних сертифікатах, і лише в одного сайту сертифікат досі не продовжився, хоча за типових налаштувань уже мав би. Розбираємо заміри, межі методу й показуємо, як перевірити свій сайт однією командою.

9 хв
22 вер.
Читати далі
154 помилки типів, які викидала збірка: що в них знайшлось
Веб-розробка

154 помилки типів, які викидала збірка: що в них знайшлось

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

9 хв
22 вер.
Читати далі
Healthcheck дав 60 % запитів застосунку: що побачили в першу добу метрик
Веб-розробка

Healthcheck дав 60 % запитів застосунку: що побачили в першу добу метрик

21 вересня 2026 року, у першу добу обліку запитів за маршрутами, службовий /api/health отримав 13 666 запитів — 60 % трафіку застосунку, і кожен ішов у спільну базу. Розповідаємо, які два налаштування це прибрали, яку ціну маємо за них і як перевірити свій healthcheck.

9 хв
22 вер.
Читати далі