Коли автоматизована система запрацює, як контролювати, чи вона все ще активна
Це мій найглибший урок після встановлення кількох автоматизованих ліній: **система не може померти вночі і залишити тебе в невіданні до наступного дня**.
Я колись налаштував планове завдання, думаючи, що, налаштувавши cron, можу залишити його без нагляду. В результаті, переживши тиждень, я вирішив перевірити статус і виявив, що воно безшумно зупинилося на 3 дні — з'єднання з базою даних обірвалося, без будь-яких сповіщень. З того часу я створив повну філософію моніторингу, і сьогодні поділюся нею з усіма.
**Перший рівень: моніторинг циклу виконання**
Найбазовіший метод — це перевірка last_run_at в cron. Моя стратегія така: **якщо час останнього запуску перевищує вдвічі очікуваний цикл, одразу спрацьовує тривога**. Наприклад, якщо завдання повинно виконуватись кожні 5 хвилин, якщо last_run_at перевищує 10 хвилин, я одразу надсилаю сигнал тривоги в Telegram. Цей показник надзвичайно ефективний — приблизно 90% "системи впали" можуть бути виявлені протягом 1 години, а не чекати, поки бізнес-відділ помітить.
**Другий рівень: механізм розриву API**
Нестабільність API — це норма. Мій підхід: **якщо 3 послідовні запити API не вдалися, автоматично розриваємо на 24 години**. Чому 3 рази? Бо 1-2 рази можуть бути через мережеві перебої, але 3 послідовні невдачі означають, що дійсно є проблема. Протягом періоду розриву система більше не намагається викликати, уникаючи витрачати цінні ресурси API та місце для логів у помилковому стані. Це набагато ефективніше, ніж сліпі повтори.
**Третій рівень: збереження статусу у файлі**
Кожного разу, коли система працює, я записую поточний статус — кількість успіхів, кількість невдач, таймстамп, інформацію про помилки — у статусний файл. Я зберігаю цей файл протягом 30 днів. Яка вигода від цього? Можливість відкату — "чому минулої середи рівень публікацій раптово впав до 60%?" — просто переглядаючи логи, можна знайти відповідь. Статусний файл не займає місця, але дає мені повний аудит.
**Четвертий рівень: тижневий ручний перегляд**
Щотижня я витрачаю 15 хвилин, і система автоматично генерує звіт: рівень успішних публікацій, розподіл помилок, статистика слів, наявність аномальних коливань. Частота не повинна бути високою, але **не можна повністю покладатися на автоматичні сповіщення**. Іноді автоматичний моніторинг не повідомить про тенденцію, коли рівень помилок зростає з 2% до 4%, але людський погляд одразу помітить, "тут слід почати звертати увагу".
**Основне усвідомлення**
Створити автоматизацію швидко, але **якщо моніторинг налаштований правильно, можна справді розслабитися і не стежити**. Мій досвід: автоматичні сповіщення відповідають за термінові ситуації (система повністю впала), ручний перегляд відповідає за трендові проблеми (поступово погіршується). Обидва підходи в поєднанні дозволяють системі жити довше. Інакше навіть найрозумніша автоматизація — це просто таймер у чорній скриньці.
$BTC #DevOps #автоматизація