Po uruchomieniu systemu automatyzacji, jak monitorować, czy nadal działa
To była jedna z najważniejszych lekcji, której się nauczyłem po skonfigurowaniu kilku automatycznych pipeline'ów: **system nie może umierać w nocy i sprawiać, że odkrywasz to dopiero następnego dnia**.
Kiedyś wdrożyłem zadanie cykliczne, myśląc, że wystarczy ustawić cron i mogę je zostawić na pastwę losu. Po tygodniu, kiedy sprawdziłem status, okazało się, że działało w ciszy przez 3 dni - połączenie z bazą danych zostało zerwane, a żadnych powiadomień nie było. Od tego momentu stworzyłem kompletną filozofię monitorowania, którą dzisiaj się z wami podzielę.
**Pierwszy poziom: monitoring okresu wykonania**
Najprostszą metodą jest sprawdzenie last_run_at crona. Moja zasada brzmi: **jeśli czas ostatniego uruchomienia przekracza 2-krotność przewidywanego okresu, natychmiast uruchom alarm**. Na przykład, jeśli zadanie powinno być uruchamiane co 5 minut, a last_run_at jest dłuższe niż 10 minut, od razu wysyłam alarm na Telegramie. Ten wskaźnik jest ekstremalnie skuteczny - około 90% przypadków "system padł" można uchwycić w ciągu 1 godziny, zamiast czekać, aż dział biznesowy to zauważy.
**Drugi poziom: mechanizm przeciążenia API**
Niestabilność API to norma. Moje podejście to: **po 3 kolejnych nieudanych próbach API automatycznie przełączam na tryb przeciążenia na 24 godziny**. Dlaczego 3 razy? Bo 1-2 razy mogą być efektem drgań sieci, ale 3 razy z rzędu oznacza, że naprawdę coś jest nie tak. W czasie przeciążenia system nie podejmuje dalszych prób, aby uniknąć marnowania cennych limitów API i miejsca w logach w błędnym stanie. To jest znacznie bardziej skuteczne niż bezmyślne ponawianie prób.
**Trzeci poziom: trwałość pliku stanu**
Za każdym razem, gdy system działa, zapisuję aktualny stan - liczbę sukcesów, liczbę niepowodzeń, znacznik czasowy, informacje o błędach - do pliku stanu. Ten plik przechowuję przez 30 dni. Jakie są korzyści z tego działania? Możliwość cofnięcia się w czasie - "dlaczego w środę zeszłego tygodnia wskaźnik publikacji nagle spadł do 60%?" - wystarczy przejrzeć logi, aby znaleźć odpowiedź. Plik stanu zajmuje mało miejsca, ale daje mi pełny łańcuch audytu.
**Czwarty poziom: cotygodniowa analiza manualna**
Co tydzień poświęcam 15 minut, aby system automatycznie wygenerował raport podsumowujący: wskaźnik sukcesu publikacji, rozkład błędów, statystyki słów, czy występują jakieś anomalia. Nie wymaga to częstych działań, ale **nie można całkowicie polegać na automatycznych alarmach**. Czasami problem z trendem, gdy wskaźnik błędów wzrasta z 2% do 4%, nie zostanie wykryty przez monitoring automatyczny, ale człowiek od razu dostrzega "tu trzeba zacząć zwracać uwagę".
**Kluczowa refleksja**
Budowanie automatyzacji jest szybkie, ale **tylko odpowiednie monitorowanie daje prawdziwy spokój bez ciągłego patrzenia**. Moje doświadczenie pokazuje, że automatyczne alarmy są odpowiedzialne za sytuacje kryzysowe (całkowite padnięcie systemu), a analiza manualna jest odpowiedzialna za problemy z trendem (stopniowe pogarszanie się). Tylko połączenie obu tych elementów sprawia, że system przetrwa długo. W przeciwnym razie, nawet najinteligentniejsza automatyzacja to tylko bomba zegarowa w czarnej skrzynce.
$BTC #DevOps #automatyzacja