Monitoring Web API
Táto kapitola zhrňuje možnosti sledovania prevádzky API servera.
1. Monitorovací dashboard
Monitorovací dashboard poskytuje prehľad o aktuálnom stave servera (pamäť, CPU, požiadavky, vlákna atď.). Je dostupný v html prehliadači na endpointe:
GET {server-api}:{port}/{spojenie}/monitoring
1.1 Záložka Výkon
K dispozícii sú nasledujúce grafy:
-
Využitie pamäte Java/JVM -
-
Nealokované (MB) – pamäť, ktorá je dostupná JVM, ale zatiaľ nebola alokovaná (JVM môže alokovať viac, ak bude potrebné).
-
Obsadená (MB) – aktuálne využívaná pamäť (vrátane heapu).
-
Voľná (MB) – pamäť alokovaná JVM, ale aktuálne nevyužívaná.
-
-
História využitia pamäte Java/JVM
-
Sleduje vývoj hodnôt vyššie uvedených troch komponentov v čase (až 60 dátových bodov = 10 minút).
-
Cenné pre odhaľovanie únikov pamäte (memory leaks) alebo „sawtooth“ patternov GC cyklu.
-
-
História využitia pamäte DLL
-
FastMM – interný pamäťový alokátor použitý v natívnej DLL časti.
-
Private usage – množstvo privátnej pamäte, ktorú proces používa.
-
Working set – aktuálne množstvo pamäte nahranej vo fyzickej RAM.
-
-
História využitia CPU
-
Sleduje využitie CPU serverom v percentách.
-
Dôležité pre odhalenie špičiek a prípadného zahltenia (napr. GC stop-the-world, blokujúce IO operácie).
-
-
Využitie vlákien Java
-
Idle – vlákna vo vláknovom poole, ktoré nič nerobia.
-
Pripravené – pripravené na použitie, ale zatiaľ neaktívne (čakajú napr. na pridelenie úlohy).
-
Využité – práve vykonávajú požiadavky.
-
-
História využitia vlákien Java
-
Sleduje trend počtu idle/ready/busy vlákien.
-
Umožňuje sledovať škálovanie thread poolu a jeho preťaženie.
-
-
Využitie vlákien DLL
-
Podobné ako vyššie, ale pre „natívnu“ časť servera (DLL).
-
Môže ísť o thread pooly napr. v Delphi časti servera alebo inom ne-Java module.
-
-
História využitia vlákien DLL
-
Sleduje dlhodobé správanie DLL vlákien – idle/ready/busy.
-
Automatické obnovenie je realizované po 5 sekundách, prípadne manuálne cez tlačidlo Aktualizovať.
Poznámka: História pamäte a CPU sa ukladá iba na stránke (v prehliadači), nie na serveri. Po obnovení stránky sa teda začína znova. Naopak história požiadaviek sa ukladá na serveri podľa nastavenia v YAML a načítava sa pri každom zobrazení stránky.
1.2 Záložka Prevádzka
Táto záložka je zameraná na HTTP metriky. Je ideálna na sledovanie záťaže API z hľadiska požiadaviek.
Pre zobrazenie informácií na tejto záložke je potrebné mať v definičnom súbore APIServer.yaml zapnuté monitorovanie.
monitoring:
enabled: true
maxlength: 50000
K dispozícii sú následne tieto grafy:
-
Počet požiadaviek podľa HTTP metódy
-
Zobrazuje frekvenciu jednotlivých metód: GET, POST, PUT, DELETE atď.
-
Pomáha identifikovať prevahu napr. čítacích vs. zapisovacích operácií.
-
-
Počet odpovedí podľa kódu statusu
-
Rozpad podľa HTTP kódov (200, 404, 500…).
-
Odhalí chybové stavy (napr. 5xx počas vysokej záťaže).
-
-
Časová štruktúra odpovede
-
Umožňuje odhadnúť latenciu systému pri rôznych typoch požiadaviek.
-
-
Veľkosť odpovede
-
Pomáha detekovať nevhodne veľké alebo podozrivo malé odpovede (napr. chybové HTML namiesto JSONu).
-
Automatické obnovenie je realizované po 5 sekundách, prípadne manuálne cez tlačidlo Aktualizovať. Vedľa tabuľky je graf štruktúry odpovedných časov.
V sekcii História požiadaviek na API server sú potom viditeľné konkrétne dotazy, vrátane podrobností a zdrojovej IP adresy požiadavky.
1.3 Záložka Údržba
Zobrazuje detailný stav vlákien vo vláknovom poole DLL časti servera. V tabuľke sú dostupné nasledujúce informácie:
-
Aktívne – označuje, či je vlákno momentálne využívané.
-
Používateľ – informácia o tom, kto vlákno využíva.
- Spojenie - Informácia o tom, na akom spojení je vlákno využívané
-
Posledná požiadavka – zobrazuje naposledy obslúženú požiadavku (vrátane možnosti zobraziť podrobnosti a callstack).
-
Posledné použitie – čas poslednej aktivity.
-
Trvanie – ako dlho vlákno pracovalo.
-
Identifikátor – identifikátor daného vlákna.
Dostupné sú tieto nástroje pre správu:
-
Vyčistenie poolu – tlačidlo umožňuje uvoľniť neaktívne vlákna v rámci DLL poolu. Slúži na odstránenie vlákien, ktoré nie sú aktuálne využívané, ale zostali alokované – typicky po preťažení alebo výpadku klientskej aplikácie. Pomáha tak stabilizovať využitie systémových zdrojov.
-
Logovanie Nexus - Otvorí vizuálny editor pre konfiguráciu logovacích sekcií definovaných v súbore Nexus.cfg. Umožňuje aktivovať alebo upraviť správanie rôznych logovacích modulov (napr. WAProfilingRequest, WASecurity, SysLog, a pod.). Zmeny sa neukladajú do súboru – aplikujú sa iba v pamäti a sú platné do reštartu servera.
- Nexus log - Zobrazí aktuálny obsah logu vytvoreného podľa konfigurácie z Nexus.cfg. Je možné tu sledovať záznamy o behu business logiky, výnimkách alebo SQL dotazoch. Obsahuje hlavičku X-Request-ID, ktorá uľahčuje trasovanie konkrétnej požiadavky naprieč vrstvami (napr. medzi JVM a DLL časťou).
- Konfigurácia APIserver - Sprístupní vizuálne rozhranie pre konfiguráciu niektorých parametrov APIServer.yaml (napr. veľkosť poolu, timeouty a pod.). Rovnako ako pri Nexus logovaní platí, že zmeny sú dočasné a neukladajú sa späť do súboru. Pri reštarte JVM sa znova načítavajú hodnoty zo súboru APIServer.yaml.
- APIServer log - Ak je v APIServer.yaml zapnuté logovanie, zobrazí obsah behového logu Java časti API servera.
-
Zapnúť profilovanie - Spustí profilovanie API požiadaviek. Pri ukončení profilovania funkcia poskytne súbor s informáciami pre aplikáciu profiler. Viac o profilovaní Web API nájdete v kap. Ako profilovať Web API.
1.4 Záložka Oznámenia
Obsahuje pomocné informácie týkajúce sa zmien a stavu API:
Zmeny vo verziách – zobrazí prehľad plánovaných zmien v API.
Konzola Info – tlačidlo pre zobrazenie posledných interných hlásení servera.
Notifikácie – zobrazuje informácie o zaslaných API dotazoch. Informácie je možné triediť podľa filtra:
-
Deprecated požiadavky – táto časť zobrazuje prehľad volaní zastaraných (deprecated) API endpointov za posledných 24 hodín. Cieľom je umožniť správcom systému včas identifikovať využitie funkcií určených na odstránenie a kontaktovať ich používateľov.
Informácie o použití týchto zastaraných endpointov sú automaticky zhromažďované a odosielané do telemetrie. Slúžia tak nielen na lokálne sledovanie, ale aj na centrálne vyhodnocovanie využitia neaktuálnych funkcií.
Okrem zobrazenia priamo na monitorovacej stránke je k dispozícii aj samostatný REST endpoint:
GET {server-api}:{port}/{spojenie}/monitoring/deprecatedusage
Tento endpoint vracia súhrnné dáta o volaniach zastaraných ciest za posledných 24 hodín. Pri každej položke sú uvedené:
HTTP metóda a cesta – napr.GET /connection/issuedinvoices/
Počet volaní – koľkokrát bola zastaraná cesta volaná
Verzia odstránenia – major a minor verzia, v ktorej bude funkcia odstránen
áDoplnkové identifikačné údaje – vrátane inštancie servera (hash) a volajúcej aplikácie
Pri každom prvom výskyte volania zastaranej cesty sa automaticky vytvorí záznam do servisnej knižky.
- Chyba práv - zobrazuje požiadavky, kde pri vykonaní došlo k chybe v právach
-
Použité - požiadavky, ktoré boli volané a nebola na nich evidovaná žiadna chyba
-
Chyba editácie - Chyba, keď sa používateľ pomocou API pokúša o zápis do BO, ktorý je needitovateľný a je zapnutá striktná kontrola
2. Výkonnostná telemetria
Výkonnostná telemetria slúži na automatický zber dát o vyťažení API servera a ich odosielanie na aplikačný server a ďalej na ich odosielanie na centrálne vyhodnocovanie dodávateľom systému ABRA Gen.
Čo sa meria:
- Priebežné využitie pamäte (JVM aj DLL)
- Priemerné zaťaženie CPU v rámci daného intervalu
- Počet odpovedí podľa HTTP status kódov (napr. 2xx, 4xx, 5xx)
-
Cesty použitých endpointov. Evidujú sa všetky cesty okrem volania OPTIONS metódy
Frekvencia zberu a odosielania dát:
- Interval zberu dát je riadený parametrom
telemetrySampleIntervalMs. - Interval odosielania dát na aplikačný server je riadený parametrom
telemetrySendIntervalMs.
Spracovanie dát:
- Dáta sú ukladané v pamäti a pri každom odoslaní sa počítadlá vynulujú.
- Ak dôjde k reštartu API servera, počítanie začína znova.
- Aplikačný server ďalej dáta spriemeruje a agreguje do jednej hodnoty za hodinu.
Ďalšie informácie:
- Dáta je možné vizualizovať v dashboardoch napojených na index
telemetry-apiperformance-*. - Táto telemetria je neoddeliteľnou súčasťou širšieho systému sledovania prevádzky systému a slúži vývojárom a konzultantom na odhaľovanie výkonnostných problémov.