Monitoring aplikací

Základem vývoje zdravé aplikace je správné nastavení monitoringu. Alfa a omega tohoto procesu je pro nás logování.


Jedna z vestavěných knihoven Pythonu (logging) má za úkol zprostředkovat jednoduché zaznamenávání těchto zpráv (logů), které později můžeme použít jako zdroj dat při analýze aplikace.

Snímek obrazovky 2024-09-10 v 9.46.43

Elementární příklad logování vypadá takto. Pomocí kódu můžeme tímto způsobem zaznamenat zprávy o procesu a aktuálním stavu během aktivního užívání aplikace.


Proč vlastně logovat?


🔵 správně napsaný log umožňuje snadné dohledání chyby a procesů, které k ní vedly

🔵 dává nám možnost sestavit analýzu užívání aplikace a různých jejích částí


Hlavní části logovacího procesu


🔵 logger - odhaluje rozhraní, které můžeme poté využít v kódu

🔵 formatter - určuje formát zprávy a potřebné parametry pro zaznamenání zprávy

🔵 handler - "posílá" zprávy (logy) do správné destinace - ukládá je do souboru, posílá je do conzole apod.

🔵 filter - umožňuje větší kontrolu nad výběrem zaznamenaných zpráv, které chceme zobrazit


Každá část je v procesu zaznamenávání a analýzy logů důležitá a je žádoucí se naučit za co jaká část zodpovídá.


Hierarchie loggerů


Loggery v python knihovně "logging" jsou uspořádané do hierarchie podle jména použitého při jejich tvorbě.

Snímek obrazovky 2024-09-10 v 10.00.16

Hierarchie loggerů z této ukázky vypadá následovně:

Screenshot_from_2022-12-21_16-07-44.width-800

Pokud budeme zachytávat zprávy z root loggeru, dostaneme ve výstupu:

zpráva 1

zpráva 2

zpráva 3

zpráva 4


Výstup z loggeru X bude ale jenom:

zpráva 2

zpráva 3

zpráva 4


Logger X je v hierarchii pod hlavním(root) loggerem a proto nezachytává to, co je zasíláno přímo na hlavní logger.


Z loggeru Y zachytíme jenom zprávu 3 a z loggeru Z zprávu 4, protože jsou na stejné úrovni a mají stejného "rodiče".


Úrovně vážnosti záznamů


Každá zpráva v logu může mít různé úrovně "vážnosti", což nám umožňuje filtrovat záznamy podle toho, co je zrovna potřeba.


Úrovní máme pět (někdy se počítá šest):


🔵 DEBUG (+ TRACE)

🔵 INFO

🔵 WARNING

🔵 ERROR

🔵 FATAL


Každá úroveň má svůj smysl a je na developerovi, aby správně určil vážnost záznamu.

Untitled_1.width-800

Základní pravidla logování


1) Vždy používat logovací knihovnu daného jazyka
- (pro nás python - logging lib, js - dev console, node.js - Winston), nikdy si nepsát vlastní knihovnu

2) Logovat na správném levelu - velmi ulehčuje práci s daty

3) Logovat do více kategorií/loggerů - podle kontextu/části aplikace

4) Psát užitečné zprávy bez zbytečných informací

5) Používat angličtinu - zamezuje problémům s encodingem souborů (standardní EN je ASCII only) a problémům s jazykovou bariérou


Proč je logování důležité?


Uchovávat záznamy o chodu aplikace může být výhodné kvůli mnoha věcem, mezi ty hlavní patří:


🔵 kontrola pohybu dat na aplikaci - někdy je vyžadována zákony daného státu / EU

🔵 diagnostika výkonu aplikace

🔵 statistika využívání různých částí

Další články, které vás mohou zajímat

Agile development aneb jak rychle získat přesně to, co chcete

Shrnutí našeho pohledu na agile. Jednoduše a bez rozvleklých konstatování obecně známého.

Příprava na certifikaci ISO/IEC 27001

Certifikace ISO/IEC 27001 je klíčovým krokem pro organizace, které chtějí zajistit, že jejich systémy řízení informační bezpečnosti (ISMS) jsou v sou…

Core team meet-up

Pravidelné setkání core teamu tentokrát spojovalo dopolední práci a diskuze nad aktuálními projekty s odpolední návštěvou Pilsner Urquell Experience.…