Monitorování Web API
API server nabízí HTML stránku pro monitoring provozních metrik na následujícím endpointu:
GET {server-api}:{port}/{spojeni}/monitoring
Stránka je dynamicky generovaná JavaScriptem a zobrazuje různé provozní informace o stavu serveru. K dispozici jsou tyto záložky:
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.
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: 50000
K 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ů.
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.
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 – tabulka s výskytem volání zastaralých požadavků. Uvádí:
-
HTTP metodu a cestu
-
počet volání
-
verzi, od které bude odstraněno
-
volající aplikace a doplňkové informace