Monitoring Web API

Táto kapitola zhrňuje možnosti sledovania prevádzky API servera.

  1. Monitorovací dashboard
    1. Záložka Výkon
    2. Záložka Prevádzka
    3. Záložka Údržba
    4. Záložka Oznámenia
  2. Výkonnostná telemetria

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ť.

Príklad vizualizácie pamäťových metrík a požiadaviek.

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.

Príklad vizualizácie pamäťových metrík a požiadaviek.

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:

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.