Jak monitorovat automatizovaný systém, když se rozjede
Tohle je jedna z nejhlubších lekcí, které jsem se naučil poté, co jsem postavil několik automatizovaných pipeline: **systém nesmí umřít uprostřed noci a vy se to dozvíte až druhý den**.
Jednou jsem nasadil plánovanou úlohu, myslel jsem, že když nastavím cron, můžu to nechat na pokoji. Po týdnu jsem se šel podívat na stav a zjistil jsem, že už tři dny tiše nefunguje – databázové spojení se přerušilo, žádné upozornění. Od té doby jsem vytvořil kompletní filozofii monitorování, kterou dnes s vámi sdílím.
**První úroveň: Monitorování vykonávání**
Nejzákladnější metodou je sledovat last_run_at cronu. Moje pravidlo je: **pokud poslední doba běhu překročí dvojnásobek očekávaného cyklu, okamžitě spustit alarm**. Například úloha, která by měla běžet každých 5 minut, pokud last_run_at od nynějška přesahuje 10 minut, okamžitě poslat alarm na Telegram. Tento indikátor je extrémně efektivní – přibližně 90 % "systémových výpadků" lze zachytit do 1 hodiny, místo abychom pasivně čekali, až to zjistí obchodní oddělení.
**Druhá úroveň: Mechanismus API pro odpojení**
API nestabilita je normální. Můj přístup je: **pokud 3 po sobě jdoucí API požadavky selžou, automaticky se odpojí na 24 hodin**. Proč 3? Protože 1-2 selhání mohou být způsobena výpadky sítě, ale 3 po sobě jdoucí selhání znamenají, že je skutečně problém. Během odpojení systém již neprovádí pokusy, aby se zabránilo plýtvání cennými API limity a místem v logu. To je mnohem efektivnější než slepé opakování.
**Třetí úroveň: Trvalé ukládání stavu**
Při každém běhu systému zaznamenávám aktuální stav – počet úspěchů, počet neúspěchů, časová značka, chybové zprávy – do souboru se stavem. Tento soubor si uchovávám po dobu 30 dnů. Jaký je přínos? Můžu se vrátit zpět – "proč minulou středu klesla míra příspěvků na 60 %?" – stačí procházet logy a mám odpověď. Stavový soubor nezabírá místo, ale poskytuje mi kompletní auditní řetězec.
**Čtvrtá úroveň: Týdenní manuální revize**
Každý týden strávím 15 minut tím, že nechám systém automaticky generovat souhrnnou zprávu: míra úspěšnosti příspěvků, rozložení chyb, statistika slov, zda došlo k výkyvům. Nemusí to být příliš časté, ale **nelze se plně spoléhat na automatické alarmy**. Někdy problém s trendem, kdy chybovost vzroste z 2 % na 4 %, automatické monitorování neřekne, ale člověk to na první pohled vidí "tady je potřeba začít sledovat".
**Klíčový poznatek**
Automatizace jde rychle, ale **správné monitorování vám opravdu umožní spát v klidu**. Moje zkušenost je taková: automatické alarmy se starají o nouzové situace (úplný výpadek systému), manuální revize se stará o trendové problémy (postupné zhoršování). Kombinací obou těchto přístupů může systém přežít dlouho. Jinak je jakákoli chytrá automatizace jen časovanou bombou v černé skříňce.
$BTC #DevOps #automatizace