Усі дашборди світилися зеленим. «Усі системи працюють штатно». І весь цей час моніторинг тихенько мені брехав.
Справжню картину показувала черга у підтримці. Клієнти скаржилися на помилки. Сторінки ледь вантажилися. Транзакції відвалювалися по таймауту. У метриках не було нічого з цього, бо зелені дашборди ховали реальні збої за стіною цифр, які виглядали переконливо й не означали геть нічого. Саме цей розрив — між тим, що ми вимірювали, і тим, що відчували користувачі — зрештою змусив мене знести все й перебудувати моніторинг з нуля.
Ми міряли те, що легко, а не те, що важливо
Це була не диверсія, а шлях найменшого спротиву. Ми міряли те, що легко виміряти: CPU, пам'ять, місце на диску. Інфраструктурні метрики. Усе те, що будь-який дефолтний експортер Prometheus віддає безкоштовно.
А от те, що справді важливо, ми не міряли ніколи: успішність транзакцій, end-to-end latency, частку помилок за сегментами клієнтів. Користувацький досвід. У підсумку сервери могли спокійно працювати на 30% CPU, поки чекаут мовчки сипав 500-ми, а кожна панель на стіні лишалася рівним, упевненим зеленим.
Prometheus і Grafana — класичний приклад. Ставлять усі. Правильно налаштовує майже ніхто. І безлад я знаходжу завжди один і той самий:
- Prometheus скрапить усе поспіль і не алертить про жодну корисну річ.
- Дашборди в Grafana зібрали на тижні запуску й більше не відкривали.
- Немає retention-політики, тож диск забивається і моніторинг тихо вмирає — монітору потрібен свій монітор.
- Один-єдиний інстанс Prometheus, який падає разом із тим самим застосунком, за яким має стежити.
47 дашбордів, 200 алертів, нуль довіри
За цифрами все виглядало серйозно. 47 дашбордів. Понад 200 алертів. Схоже на команду, якій не байдуже.
У 44 з цих дашбордів не заглядав ніхто. На алерти ніхто не реагував: їх було забагато, а контексту в кожному — замало. Це і є alert fatigue: коли пейджить усе, не пейджить ніщо. Зелений перестав означати «все добре». Він означав «сподіваюся, все добре».
Найнеприємніше відкриття сталося, коли я реально перевірив, що взагалі репортить. Більша частина парку не слала даних зовсім. Хости просто мовчали, а мовчання малювалося зеленим. Дашборд, що світиться зеленим, поки половина інфраструктури невидима, гірший за його відсутність: без нього ти хоча б знаєш, що осліп.
Знести і збудувати заново
Тож я все переробив — і почав не з інструментів, а з філософії.
- Prometheus у HA-режимі з федерацією. Не один інстанс на удачу, а реплікований збір із зрозумілим власником на кожну команду-сервіс.
- Дашборди Grafana, описані як код. Ніяких більше рукотворних шедеврів, що зникають, щойно хтось натисне «видалити».
- Спершу користувацькі метрики, інфраструктура — потім.
Кількість дашбордів впала з 47 до 5. Кожен із п'яти розповідає історію, а не вивалює графіки. Якщо дашборд не відповідав на питання, яке реально ставлять під час інциденту, він не виживав.
Алертинг, який поважає чергового
Алертів стало 12 замість двох з гаком сотень. Кожен живе за одним правилом: якщо за ним ніхто не діє — видаляємо. Я розбив їх на тири з чесними визначеннями:
- Critical: просто зараз хтось втрачає гроші.
- Warning: до ранку зламається, якщо проігнорувати.
- Info: іде на дашборд і не будить нікого й ніколи.
І в кожного алерта є посилання на runbook. Підняти людину о третій ночі й не сказати, що робити далі, — це не моніторинг, це знущання. Алертити треба на симптоми, які відчуває користувач, а не на причини, які можуть нічого не означати.
Найважча розмова
Найскладніше було не технічним. Найскладнішим було прийти до керівництва й сказати: «Наша метрика аптайму 99,9% формально правильна і повністю вводить в оману».
Сервер був живий. Застосунок — зламаний. Це дві дуже різні речі, а наша головна метрика їх не розрізняла. Нікому не в радість чути, що цифра, яку вони називали клієнтам, — це зручна вигадка. Але метрика, від якої всім добре, поки продукт розвалюється, — це не та метрика, яку варто зберігати.
Моніторинг — це продукт
Зсув у мисленні, завдяки якому все це прижилося: моніторинг — це продукт, і в нього є користувачі. Його користувачі — чергові інженери о третій ночі. Вони заслуговують на ту саму турботу, що й платний клієнт: зрозумілі історії, мінімум шуму, очевидний наступний крок.
Якщо ти міряєш усе — ти не міряєш нічого. Міряй те, що важливо, і показуй реальну картину, навіть коли ця картина комусь незручна.
Тож ось незручне питання. Якщо твій дашборд просто зараз зелений, а користувачі скаржаться — він тебе не заспокоює. Він тобі бреше.