Jak profilovat Web API
Připravili jsme pro vás postup, jak získat data pro profilovací nástroj ABRA Gen z Web API požadavků.
1. Předpoklady
- Profilování budeme testovat na spojení s názvem demodata.
- V konfiguračním souboru Nexus.CFG máme v sekci [Client] nastavenou hodnotu parametru Local na 0.
- Ve spojení demodata bude uživatel Supervisor, který bude mít zatržen parametr Přhlášení nevizuálního uživatele API.
- Bude spuštěn aplikační server.
2. Nastavení profilování
V definičním souboru APIServer.yaml odkomentujeme parametr profilePath (zrušíme pouze křížek - mezery před parametrem zachováme) a nastavíme v něm cestu, kam se budou ukládat profilovací data. Například:
# path where some profile files are stored(f.e. by using of profile parameter)
profilePath: c:\ABRA_24.2\APILogs\Profiler\
Cílový adresář musíme založit ručně.
3. Spuštění Web API
Nyní v instalačním adresáři ABRA Gen spustíme jako administrátor v Powershellu Web API:
.\APIServer.ps1 -Action app
4. Profilování Web API jednoho požadavku
Profilování jednoho požadavku Web API probíhá tak, že se za dotazovaný endpoint přidá obecný parametr profiling=1. Tím se vyvolá profiler a do uvedené cesty u parametru profilePath v souboru APIServer.yaml se zapíše profilovací soubor ABRA Gen profileru, zdrojový požadavek (bez případných autentikačních dat) a odpověď.
Pokud se profiluje, tak se do odpovědi vrací hlavička X-Request-ID (pokud neposílá klient svou, Web API si vygeneruje náhodnou, což lze poznat dle prefixu api_).
Toto X-Request-ID se pak může použít jako hodnota parametru id nového endpointu /debugging/profiling?id=… Stažená binární dalta lze pak po uložení otevřít v ABRA Gen Profileru (nástroj je možné vyvolat v rámci systému ABRA Gen klávesovou zkratkou Ctrl+Alt+Shift+F12).
Pokud se navíc k dotazu připojí parametr alldata=1, všechny soubory týkající se profilovaného požadavku se zabalí do souboru zip a vrátí se tento zip (aktuálně výše zmíněný dotaz a odpověď).
Profilování nad číselníkem zemí.
GET http://localhost:80/demodata/countries?take=10&profiling=1
Vrácenou hlavičku X-Request-ID=API_695b476e497a4662aeb6f67745b99fdd použít jako parametr:
GET http://localhost:80/demodata/debugging/profiling?id=API_695b476e497a4662aeb6f67745b99fdd
Případně zabalenou v zipu.
GET http://localhost:80/demodata/debugging/profiling?id=API_695b476e497a4662aeb6f67745b99fdd&alldata=1
Nepovinný parametr filename umožňuje nastavit název souboru v hlavičce Content-Disposition.
nepovinný parametr datamode s hodnotami binaryprofdata a jsonprofdata umožňuje vrátit data profileru binárně nebo ve formátu json.
5. Globální profilování
Pro globální profilování, které profiluje vše, když je profiler spuštěný, je nutné mít přidělené právo Spouštět a zastavovat globální profilování. Vždy je ale možné mít spuštěný profiler jen jednou (z hlediska systému ABRA Gen se jedná o globální zdroj).
Profilování se zapíná příkazem /maintenance/profiler/start (POST) a zastavuje /maintenance/profiler/stop (POST). Konkrétní stav lze zjistit příkazem /maintenance/profiler/status (GET).
Když profiler zastavíme příkazem /maintenance/profiler/stop, je vrácen binárně soubor s profilovanými daty. Předpokládá se, že tento soubor uložíme s koncovkou .ap. Následně jej pak lze otevřít v ABRA Gen Profileru (nástroj je možné vyvolat v rámci systému ABRA Gen klávesovou zkratkou Ctrl+Alt+Shift+F12).
Nepovinný parametr filename umožňuje nastavit název souboru v hlavičce Content-Disposition.
nepovinný parametr datamode s hodnotami binaryprofdata a jsonprofdata umožňuje vrátit data profileru binárně nebo ve formátu json.
Spuštění globálního profilování:
POST http://localhost:80/demodata/maintenance/profiler/start
Zastavení globálního profilování:
POST http://localhost:80/demodata/maintenance/profiler/stop
Zjištění stavu globálního profilování:
POST http://localhost:80/demodata/maintenance/profiler/status