Monitoring Web API
Tato kapitola shrnuje možnosti sledování provozu API serveru.
1. Monitorovací dashboard
Monitorovací dashboard poskytuje přehled o aktuálním stavu serveru (paměť, CPU, požadavky, vlákna atd.). Je dostupná v html prohlížeči na endpointu:
GET {server-api}:{port}/{spojeni}/monitoring1.1 Záložka Výkon
K dispozici jsou následující grafy:
- 
                                                                    Využití paměti Java/JVM - - 
                                                                            Nealokováno (MB) – paměť, která je dostupná JVM, ale zatím nebyla alokována (JVM může alokovat více, pokud bude potřeba). 
- 
                                                                            Obsazená (MB) – aktuálně využívaná paměť (včetně heapu). 
- 
                                                                            Volná (MB) – paměť alokovaná JVM, ale aktuálně nevyužívaná. 
 
- 
                                                                            
- 
                                                                    Historie využití paměti Java/JVM - 
                                                                            Sleduje vývoj hodnot výše uvedených tří komponent v čase (až 60 datových bodů = 10 minut). 
- 
                                                                            Cenné pro odhalování úniků paměti (memory leaks) nebo „sawtooth“ patternů GC cyklu. 
 
- 
                                                                            
- 
                                                                    Historie využití paměti DLL - 
                                                                            FastMM – interní paměťový alokátor použitý v nativní DLL části. 
- 
                                                                            Private usage – množství privátní paměti, kterou proces používá. 
- 
                                                                            Working set – aktuální množství paměti nahrané ve fyzické RAM. 
 
- 
                                                                            
- 
                                                                    Historie využití CPU - 
                                                                            Sleduje využití CPU serverem v procentech. 
- 
                                                                            Důležité pro odhalení špiček a případného zahlcení (např. GC stop-the-world, blokující IO operace). 
 
- 
                                                                            
- 
                                                                    Vytížení vláken Java - 
                                                                            Idle – vlákna ve vláknovém poolu, která nic nedělají. 
- 
                                                                            Připravené – připravená k použití, ale zatím neaktivní (čekají např. na přidělení úlohy). 
- 
                                                                            Vytížené – právě vykonávají požadavky. 
 
- 
                                                                            
- 
                                                                    Historie využití vláken Java - 
                                                                            Sleduje trend počtu idle/ready/busy vláken. 
- 
                                                                            Umožňuje sledovat škálování thread poolu a jeho přetížení. 
 
- 
                                                                            
- 
                                                                    Vytížení vláken DLL - 
                                                                            Podobné jako výše, ale pro „nativní“ část serveru (DLL). 
- 
                                                                            Může jít o thread pooly např. v Delphi části serveru nebo jiném ne-Java modulu. 
 
- 
                                                                            
- 
                                                                    Historie využití vláken DLL - 
                                                                            Sleduje dlouhodobé chování DLL vláken – idle/ready/busy. 
 
- 
                                                                            
Automatické obnovení je realizováno po 5 sekundách, případně ručně přes tlačítko Aktualizovat.
Poznámka: Historie paměti a CPU se ukládá pouze na stránce (v prohlížeči), nikoliv na serveru. Po obnovení stránky se tedy začíná znovu. Naproti tomu historie požadavků se ukládá v serveru dle nastavení v YAML a načítá se při každém zobrazení stránky.
1.2 Záložka Provoz
Tato záložka je zaměřeno na HTTP metriky. Je ideální pro sledování zátěže API z hlediska požadavků.
Pro zobrazení informací na této záložce, je třeba mít v definičním souboru APIServer.yaml zapnuto monitorování.
monitoring:
  enabled: true
  maxlength: 50000K dispozici jsou následně tyto grafy:
- 
                                                                    Počet požadavků podle HTTP metody - 
                                                                            Ukazuje četnost jednotlivých metod: GET, POST, PUT, DELETE atd. 
- 
                                                                            Pomáhá identifikovat převahu např. čtecích vs. zapisovacích operací. 
 
- 
                                                                            
- 
                                                                    Počet odpovědí podl kódu statusu - 
                                                                            Rozpad dle HTTP kódů (200, 404, 500…). 
- 
                                                                            Odhalí chybové stavy (např. 5xx během vysoké zátěže). 
 
- 
                                                                            
- 
                                                                    Časová struktura odpovědi - 
                                                                            Umožňuje odhadnout latenci systému při různých typech požadavků. 
 
- 
                                                                            
- 
                                                                    Velikost odpovědi - 
                                                                            Pomáhá detekovat nevhodně velké nebo podezřele malé odpovědi (např. chybové HTML místo JSONu). 
 
- 
                                                                            
Automatické obnovení je realizováno po 5 sekundách, případně ručně přes tlačítko Aktualizovat. Vedle tabulky je graf struktury odpovědních časů.
1.3 Záložka Údržba
Zobrazuje detailní stav vláken ve vláknovém poolu DLL části serveru. V tabulce jsou dostupné následující informace:
- 
                                                                    Aktivní – označuje, zda je vlákno momentálně využíváno. 
- 
                                                                    Uživatel – informace o tom, kdo vlákno využívá. 
- Spojení - Informace o tom, na jakém spojení je vlákno využíváno
- 
                                                                    Poslední požadavek – zobrazuje naposledy obsloužený požadavek (včetně možnosti zobrazit podrobnosti a callstack). 
- 
                                                                    Poslední použití – čas poslední aktivity. 
- 
                                                                    Trvání – jak dlouho vlákno pracovalo. 
- 
                                                                    Identifikátor – identifikátor daného vlákna. 
Dostupné jsou tyto nástroje pro správu:
- 
                                                                    Vyčištění poolu – tlačítko umožňuje uvolnit neaktivní vlákna v rámci DLL poolu. Slouží k odstranění vláken, která nejsou aktuálně využívána, ale zůstala alokována – typicky po přetížení nebo výpadku klientské aplikace. Pomáhá tak stabilizovat využití systémových zdrojů. 
- 
                                                                    Logování Nexus - Otevře vizuální editor pro konfiguraci logovacích sekcí definovaných v souboru Nexus.cfg. Umožňuje aktivovat nebo upravit chování různých logovacích modulů (např. WAProfilingRequest, WASecurity, SysLog, apod.). Změny se neukládají do souboru – aplikují se pouze v paměti a jsou platné do restartu serveru. 
- Nexus log - Zobrazí aktuální obsah logu vytvořeného podle konfigurace z Nexus.cfg. Lze zde sledovat záznamy o běhu business logiky, výjimkách nebo SQL dotazech. Obsahuje hlavičku X-Request-ID, která usnadňuje trasování konkrétního požadavku napříč vrstvami (např. mezi JVM a DLL částí).
- Konfigurace APIserver - Zpřístupní vizuální rozhraní pro konfiguraci některých parametrů APIServer.yaml (např. velikost poolu, timeouty apod.). Stejně jako u Nexus logování platí, že změny jsou dočasné a neukládají se zpět do souboru. Při restartu JVM se znovu načítají hodnoty ze souboru APIServer.yaml.
- APIServer log - Pokud je v APIServer.yaml zapnuto logování, zobrazí obsah běhového logu Java části API serveru.
- 
                                                                    Zapnout profilování - Spustí profilování API požadavků. Při ukončení profilování funkce poskytne soubor s informacemi pro aplikaci profiler. Více o profilování Web API naleznete v kap. Jak profilovat Web API. 
1.4 Záložka Oznámení
Obsahuje pomocné informace týkající se změn a stavu API:
Změny ve verzích – zobrazí přehled plánovaných změn v API.
Konzole Info – tlačítko pro zobrazení posledních interních hlášek serveru.
Deprecated požadavky – tato část zobrazuje přehled volání zastaralých (deprecated) API endpointů za posledních 24 hodin. Cílem je umožnit správcům systému včas identifikovat využití funkcí určených k odstranění a kontaktovat jejich uživatele.
Informace o použití těchto zastaralých endpointů jsou automaticky shromažďovány a odesílány do telemetrie. Slouží tak nejen k lokálnímu sledování, ale i k centrálnímu vyhodnocování využití neaktuálních funkcí.
Kromě zobrazení přímo na monitorovací stránce je k dispozici i samostatný REST endpoint:
GET {server-api}:{port}/{spojeni}/monitoring/deprecatedusageTento endpoint vrací souhrnná data o voláních zastaralých cest za posledních 24 hodin. U každé položky jsou uvedeny:
- HTTP metoda a cesta – např. GET /connection/issuedinvoices/
- Počet volání – kolikrát byla zastaralá cesta volána
- Verze odstranění – major a minor verze, ve které bude funkce odstraněna
- Doplňkové identifikační údaje – včetně instance serveru (hash) a volající aplikace
U každého prvního výskytu volání zastaralé cesty se automaticky vytvoří záznam do servisní knížky.
2. Výkonová telemetrie
Výkonová telemetrie slouží k automatickému sběru dat o vytížení API serveru a jejich odesílání na aplikační server a dále k jejich odesílání k centrálnímu vyhodnocování dodavatelem systému ABRA Gen.
Co se měří:
- Průběžné využití paměti (JVM i DLL)
- Průměrné zatížení CPU v rámci daného intervalu
- Počet odpovědí dle HTTP status kódů (např. 2xx, 4xx, 5xx)
Frekvence sběru a odesílání dat:
- Interval sběru dat je řízen parametrem telemetrySampleIntervalMs.
- Interval odesílání dat na aplikační server je řízen parametrem telemetrySendIntervalMs.
Zpracování dat:
- Data jsou ukládána v paměti a při každém odeslání se počítadla vynulují.
- Pokud dojde k restartu API serveru, započítávání začíná znovu.
- Aplikační server dále data zprůměrovává a agreguje do jedné hodnoty za hodinu.
Další informace:
- Data lze vizualizovat v dashboardech napojených na index telemetry-apiperformance-*.
- Tato telemetrie je nedílnou součástí širšího systému sledování provozu systému a slouží vývojářům a konzultantům k odhalování výkonových problémů.

