Technická dokumentácia Logger modulu Verzia Tabuľka 1. Autori Autor Tomáš Donko Rola

Podobné dokumenty
Microsoft Word - prirucka_katedry_nova

Informačný systém pre externú časť a písomnú formu internej časti maturitnej skúšky Informačný systém pre EČ a PFIČ maturitnej skúšky Užívateľská prír

Pracovný postup pre vypĺňanie údajov elektronického formulára IŠIS pre spravodajskú jednotku 1

Centrum vedecko-technických informácií, Odbor pre hodnotenie vedy, Oddelenie pre hodnotenie publikačnej činnosti Vyhľadávanie a práca so záznamami - C

PowerPoint Presentation

Príloha č. 1 k USM_UGKK SR_6/2019

Microsoft PowerPoint - CONNECT_R&A_76_sk

STRUČNÝ NÁVOD KU IP-COACHU

STRUČNÝ NÁVOD KU IP-COACHU

Import absencí z ASC

Microsoft Word - Priloha_1.docx

enum

MediatelYext

Používateľský manuál EZP

Finančné riaditeľstvo Slovenskej republiky 10/ORP/2019/IM Stiahnutie identifikačných a autentifikačných údajov pri ORP - rola Administrátor Informácia

Riesenie_zasielkovna

Finančné riaditeľstvo Slovenskej republiky 12/ORP/2019/IM Postup pre overenie pravosti pokladničného dokladu Informácia je určená pre subjekty (zákazn

Microsoft Word - Manazment_projektov_tim24_tema12_2017.docx

GEODETICKÝ A KARTOGRAFICKÝ ÚSTAV BRATISLAVA Chlumeckého 4, Bratislava II Obsah 1. Export údajov ZBGIS do CAD formá

Finančné riaditeľstvo Slovenskej republiky 9/ORP/2019/IM Stiahnutie identifikačných a autentifikačných údajov pri ORP - rola Administrátor/Technik Inf

Príručka pre používateľa bezpečnostného tokenu EZIO Pico Obsah: 1 Určenie 1 2 Popis produktu 1 3 Nesprávne zadaný PIN kód (PIN FAIL) 3 4 Použitie Aute

Január 2012 (verzie ) Popis zmien v systéme PROLUC

Detail správy a súvisiace prvky Dátum zverejnenia: Verzia: 5 Dátum aktualizácie: Detail správy a súvisiace prvky UPOZORNENIE

eKasa

SK_mTransfer_Okamzita_notifikacia_ indd

eKasa

iot business hub whitepaper isdd_em_New.pdf

IT NEWS

Navigácia po úvodnej stránke elektronickej schránky Dátum zverejnenia: Verzia: 10 Dátum aktualizácie: Navigácia po úvodnej st

Príručka pre používateľa OTP tokenu Strana 1 z 8

Komplexné služby výpočtovej a kancelárskej techniky Vývoj a distribúcia podnikového a ekonomického software Otvorenie nového roku a prechod medzi rokm

eKasa

SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE FAKULTA INFORMATIKY A INFORMAČNÝCH TECHNOLÓGIÍ Metodika archivácie verzií HW Tímový projekt Stratos FIIT M

fm 2012 a predajňa.doc

CitiManager - Migration Quick Reference Guide for Cardholders_Slovak_fin

Vlastná Vlastná tvorba tvorba Neobmedzene Neobmedzene Voľný Voľný obsah obsah my website Kdekoľvek Kdekoľvek na na internet internet Jednoduché Jednod

Používateľská príručka elektronických služieb pre žiadateľov o štatistické informácie október 2016

eKasa

Agenda záverečnej práce pedagóg Celá agenda týkajúca sa záverečnej práce je dostupná v obrazovke Záverečná práca (menu Agenda pedagóga -> Záverečné pr

eKasa

0022-vub-mobilne-tokeny-200x200-v03.indd

Microsoft Word - zapis-predmetov-AiS

Portál VŠ a CEP

dFlex Nitra spol. s r.o.

Matej Kendera - PDF, word, lucene, java

PowerPoint Presentation

User:Michal.Palcek

Slovenská technická univerzita v Bratislave Fakulta informatiky a informačných technológií Ilkovičova 2, , Bratislava 4 Internet vecí v našich ž

Manuál pre nastavenie tlače z VRP elio m500 Elio m500 Manuál pre nastavenie tlače -1-

Všeobecná zdravotná poisťovňa

Finančné riaditeľstvo Slovenskej republiky 15/ORP/2019/IM Práca s dostupnými reportami - rola Administrátor/Účtovník Informácia je určená pre podnikat

Manuál uchádzača ezakazky Manuál uchádzača Dátum vytvorenia dokumentu: Verzia: Autori slovenský Matej Marcin, Stanislava Marošiová Te

Formulár ČASOPIS - CREPČ 2 Manuál pre vysoké školy (aktualizované dňa ) Centrum vedecko-technických informácií SR Odbor pre hodnotenie vedy

Intellectual Property, Psychology and Sociology

Microsoft Word - prechod_euro_prolca.doc

Objektovo orientované programovanie

Manuál aplikácie eoev

Privátna zóna pre prevádzku Obsah Privátna zóna pre prevádzku 1 Obsah 1 Webová stránka 2 Úvodná stránka 2 Registrácia prevádzka/penzión

sprievodca_exp.pdf

Elektronické služby spoločných modulov ÚPVS a prístupových komponentov

eKasa

Chemical Business NewsBase

Prístup a Nastavenie pre KOMPAKT HOSTING

Žiadosť o licenčnú zmluvu na podujatie Na adrese v sekcii hlavného menu kliknete na položku Používatelia. Zobrazí sa blokové menu,

Používateľská príručka POUŽÍVATEĽSKÁ PRÍRUČKA Generátor XML dávok pre Informačný systém kontrolných známok z MS Excel šablóny Dátum: Verzia

PowerPoint Presentation

Manuál pre nastavenie tlače z VRP tlačiarní bluetooth Bluetooth Manuál pre nastavenie tlače z VRP tlačiarní -1-

sprievodca-priestor.pdf

Zakúpili sme mobilný telefón, ktorý budeme splácať v mesačných splátkach spolu s poplatkom za mobilné služby. Prvá faktúra bola vystavená s rozpisom n

Sprievodný list SofComs.r.o., Priemyselná 1, Liptovský Mikuláš Program basic.sk Verzia ( ) Dátum Autor Ing. J. Malíček

Používateľská príručka Obsah Používateľská príručka... 1 Administrácia servera... 2 FTP... 2 Remote Desktop... 3 Administrácia databáze:... 3 Spusteni

Vyhľadávanie v CREPČ 2 (aktualizované dňa ) Centrum vedecko-technických informácií SR Odbor pre hodnotenie vedy Oddelenie pre hodnotenie pub

Ponuka Štart

Resolution

Návod na obsluhu ekasy FiskalPRO VX520 (ETH/GPRS/GPRS s batériou)

IIS MH SR - Príručka k Portálu elektronických služieb

Podvojné účtovníctvo, fakturácia a sklad ekasa: štandardný predaj priamo z programu Pri predaji s priamym napojením na softvér je potrebné mať online

Komplexný informa ný a monitorovací systém Monitorovanie biotopov a druhov európskeho významu Používate ská dokumentácia KIMS modul Mobilná aplikácia

Microsoft Word - Manažment_tagov_tim24_tema12_2017.docx

TVORÍME VEDOMOSTNÚ SPOLOČNOSŤ Riadiaci orgán OPIS Sprostredkovateľský orgán OPIS EURÓPSKA ÚNIA Interface agreement - EXTERNÉ SLUŽBY JISCD PUBLIKOVANÉ

eKasa

Manuál pre nastavenie tlače z VRP Bluetooth, USB tlačiarne Bluetooth, USB tlačiarne Manuál pre nastavenie tlače -1-

SK_mTransfer_Technicka_dokumentacia_ indd

Microsoft Word - pouzivatelska_prirucka.doc

Prevádzka

(Microsoft Word - Registr\341cia \372\350tu Hik-Connect.docx)

Georeceive a Geoshopping

Integrácia Čo je SOA? Peter Rybár Daniel Buchta Jozef Sivek

INTERNET BANKING Práca s tokenom VŠETKO, ČO JE MOŽNÉ with.vub.sk, Bank of

Používateľská príručka pre webovú aplikáciu ON!Track Príručka pre webovú aplikáciu, verzia 1.1

Registrácia používateľa Portálu finančnej správy -1/18-

Slovenská technická univerzita v Bratislave Fakulta informatiky a informačných technológií Ilkovičova 2, Bratislava 4 Používateľská príručka Vi

aplikácia do mobilého telefónu na stiahnutie digitálneho tachografu

Prepis:

Technická dokumentácia Logger modulu Verzia 16.10.2015 Tabuľka 1. Autori Autor Tomáš Donko Rola

Tabuľka 2. História zmien Verzia Dátum Autor Popis 1.0 12.11.2015 Tomáš Donko Vytvorenie dokumentu 1.1 09.12 Tomáš Donko Doplnenie dokumentácie 1.2. 30.3.2016 Peter Vrana Refaktoring REST služby pre zápis logov 1.3 17.04 Tomáš Donko Podpora stránkovania, iné zobrazenie

Obsah 1 Analýza... 1 2 Návrh... 2 3 Implementácia... 5 4 Testovanie... 8

1 Analýza Modul slúži na zapisovanie všetkých http requestov a výnimiek, alebo čohokoľvek, čo sa dá zalogovať. Tieto dáta sa odchytávajú a zapisujú do mongo databázy a je nad nimi možné vyhľadávanie a filtrovanie. Keďže máme architektúru postavenú na.net MVC, všetky requesty je vhodné odchytávať v súbore Global.asax, v ktorej bude preťažujúca metóda Application_EndRequest(), v ktorej sa budú odchytávať všetky requesty. V tomto súbore bude aj metóda Application_Error(), ktorá bude odchytávať všetky neošetrené chyby. Taktiež v ostatných projektoch je potrebné odosielať logy na jedno miesto pomocou NLogger. 1

2 Návrh Toto je reprezentácia tried na back-ende pomocou class diagramu: Obrázok 1: Class diagram Logger modulu v EA Diagram nezobrazuje úplne všetky závislosti, kvôli lepšej čitateľnosti. Controller trieda obsahuje všetky REST služby a metódy vhodné na volanie z vonka. Využíva sa trieda Log, ktorá predstavuje všetky uložené hodnoty. Log využíva LoggerEnums na ohraničenie typu logu. LogFilter slúži pri vyhľadávaní logov a filtrovaní. LogContext už priamo pracuje s databázou. 2

Obrázok 2: Sekvenčný diagram na vytvorenie logu Po zavolaní REST služby Post(Log), ktorá sa nachádza na ceste api/logger/post sa automaticky zvaliduje objekt, ktorý prišiel do služby a následne sa pošle do LogContext a uloží sa do databázy. Metóda vracia boolean, podľa toho, či sa podarilo uložiť log, alebo nie. DBLog predstavuje už priamo databázovú tabuľku a ukladanie do nej. V prípade, že sa log podarí uložiť do DBS služba vracia HTTP status kód 201 Created, v prípade, že sa nepodarí log uložiť do DBS služba vracia HTTP status kód 400 Bad request. Aby sme zabránili napadnutiu služby pre zaznamenávanie logov, bolo potrebné vytvoriť zabezpečenie tejto služby. Za týmto účelom sme využili štandardnú zabezpečovaciu pipeline, ktorú poskytuje technológia Web API 2. Podrobnejší opis tejto pipeline sa nachádza v dokumentácii modulu CORD: https://onedrive.live.com/redir?resid=957cc12fd13af109!5765&authkey=!aow8oj8esrzq9 nu&ithint=file%2cdocx Vzhľadom na to, že pri návrhu tejto autentifikácie a autorizácie sme využili analogický postup, nie je potrebné ho opisovať znova. Na obrázku 3 sa nachádza diagram tried pre autorizáciu a autentifikáciu požiadavky na vloženie logu do databázy. 3

class Log REST security AdminPortalAuthenticationHandler - _aislogin: IAisLogin - _db: IRepositoryManager - _usermanager: ApplicationUserManager BasicAuthenticationHandler + AdminPortalAuthenticationHandler() # ParseAuthorizationHeader(HttpRequestMessage): Credentials # Validate(Credentials): bool «property» + UserManager(): ApplicationUserManager Dev ActsApiAdminPortalAuthorizationAttribute - _AccessRole: string - _applicationusermanager: ApplicationUserManager - _repositorymanager: IRepositoryManager AuthorizeAttribute + DevActsApiAdminPortalAuthorizationAttribute() + DevActsApiAdminPortalAuthorizationAttribute(string) + DevActsApiAdminPortalAuthorizationAttribute(IRepositoryManager) # HandleUnauthorizedRequest(HttpActionContext): void - HasRole(IPrincipal): bool # IsAuthorized(HttpActionContext): bool # ParseAuthorizationHeader(HttpRequestMessage): Credentials «property» + UserManager(): ApplicationUserManager «use» «use» Serv iceloggercontroller ApiController - _repositorymanager: IRepositoryManager + Post(Log): IHttpActionResult + ServiceLoggerController() + ServiceLoggerController(IRepositoryManager) Obrázok 3: Diagram tried pre autorizáciu požiadavky pre vloženie logu 4

Obrázok 4 Sekvenčný diagram na zobrazenie logov Diagram zobrazuje vyhľadanie logov, ktorý sa aktivuje zavolaním REST metódy GetAllLogsREST(), do ktorej vchádza filter ako argument. Tento filter sa automaticky zvaliduje a pošle sa do LogContext triedy, kde sa spravia filtre čitateľné pre mongo databázu a následne sa zavolá select do databázy. Databáza vráti list logov. 3 Implementácia Trieda Log v súčasnom stave obsahuje tieto premenné: Log type predstavuje typ logu, ktorý je ohraničený ako enum na obrázku 1 (LogType). Enum all je spravený kvôli vyhľadávaniu a dokáže nájsť všetky typy logov. ResponseHttpCode - vrátený http kód pri odchytenom logu. RequestUrl - daná URL pri odchytenom logu. HttpMethod - http metóda pri logu, napríklad POST, GET, PUT a podobne. Timestamp - premenná predstavuje aktuálny čas, kedy bol odchytený log. ErrorStackTrace - informačná správa, ktorá je odchytená pri výnimkach. ModuleName - je názov modulu, odkiaľ bol odchytený log. 5

AdditionalProperties sú ďalšie premenné, ktoré by mohli byť odchytené pre budúce účely. Konštruktor na vytvorenie logu má prednastavené hodnoty, kvôli filtrovaniu (ak bola zadaná default hodnota, nájde všetky logy): public Log(LoggerEnums.LogType logtype = 0, int httpcode = 0, string url = "", DateTime timestamp = new DateTime(), string httpmethod = "", string errorstacktrace = "", string module = "") 1.1. Zobrazovanie logov: Všetky logy sa zobrazujú v súbore ShowLogs.cshtml v dive s id tabs-1, ktorý predstavuje prvú podstránku logov. Momentálne sa používa na zobrazovanie logov bootstrap zoznam a je ohraničený na 15 najnovších záznamov. Na filtrovanie sú na stránke <input/> elementy, podľa typu filtra. Na stránke je aj implementovaný datetime picker pomocou bootstrap.css a bootstrap.js, ktorý bol importovaný pomocou NuGet. Pomocou datetime picker sa dá vyhľadávať podľa dátumu a času. Momentálne je možné zvoliť dátum od aj dátum do kedy sa majú filtrovať logy. Taktiež je možné nastaviť filtre typ logu, http metóda, http kód odpovede. Všetky tieto filtre sa naplnia do payloadu filtrovacej metódy a sú ohraničené triedou LogFilter. Po kliknutí na tlačidlo vyhľadaj sa zavolá REST metóda: [HttpPost] public JsonResult GetFilteredLogs(LogFilter payload), do ktorého sa vložia filtre, podľa vyplnených hodnôt na stránke. Všetky logovacie filtre sú opísané na obrázku 1 v triede LogFilter. Skip je počet preskočených záznamov a count je počet záznamov, ktoré vráti táto služba. Tieto dve premenné slúžia na implementované stránkovanie. Táto služba vráti záznamy vo formáte Json, ktoré sa následne spracujú a prekreslia bootstrap zoznam, ktorý sa vyskladáva pomocou javascriptu v súbore logger.js v metóde 6

createcollapsiblerecordelement(). V tomto súbore sa nachádzajú metódy na stránkovanie a populovanie dropdown listov na html stránke. Ak boli zadané zlé dáta do tejto služby služba vráti http kód 400 (BAD REQUEST). Ak sa podarilo vrátiť validné dáta, prípadne prázdnu kolekciu služba vráti 200 (OK). 1.2. Vytvorenie logu: Na vytvorenie logu z akéhokoľvek prostredia projektov je možné pomocou REST služby: public IHttpActionResult Post(Log log), ktorá berie ako parameter objekt typu Log a uloží ho do databázy. Ak boli uložené nesprávne dáta služba vráti 400 (BAD REQUEST). Ak prebehlo všetko správne vráti daný objekt ako Json a http kód 201 (CREATED). Fungovanie je rozpísané na obrázku 2 v sekvenčnom diagrame. Pre potreby zabezpečenia služby bol implementovaný DevActsApiAuthorizationAttribute, ktorý slúži na zabezpečenie API kontrolórov prostredníctvom servisného účtu. Tento autorizačný atribút pracuje v spolupráci s autentifikačným handlerom a zabezpečuje, aby neautentifikovaný používateľ nemohol vkladať logy do aplikácie volaním danej REST služby. Celá zabezpečovacia pipeline API controllerov je opísaná v dokumentácii modulu CORD: https://onedrive.live.com/redir?resid=957cc12fd13af109!5765&authkey=!aow8oj8esrzq9 nu&ithint=file%2cdocx V module DevActs bola použitá analogická metóda a preto ju nie je potrebné znova opisovať. Nutné je podotknúť, že služba na vkladanie logu sa nenachádza v MVC controlleri ServiceLoggerController, ale v API ServiceLoggerControlleri, ktorý je súčasťou Web api technológie pri implementácii bolo použité aktuálne najnovšie dostupné Web API 2, ktoré umožňuje nastavovať cesty priamo prostredníctvom atribútov nad metódami. 1.3. Štatistiky Na frontende sa nachádza dropdown list, ktorý zobrazuje všetky moduly, z ktorých sú zozbierané logy. Napopuluje sa pomocou služby GetModules(), ktorá sa nachádza v controlleri logov. Táto metóda pristupuje do databázy vráti DISTINCT názvy všetkých modulov. Táto metóda sa zavolá len raz pre každý dropdown list pri načítaní danej stránky. Pri zobrazovaní a filtrovaní štatistík je možné zadať aj počet dní dozadu, odkiaľ sa budú maximálne brať logy. Teda ak si používateľ zadá 7 tak bude brať štatistiky za posledný týždeň. Toto je implementované aj pre diagram aj pre zoznamové základné zobrazenie štatistík. 7

Na samotnú štatistiku sa volá služba GetModuleStatistics do ktorej vchádzajú dva parametre module a daysago, ktoré boli spomínané. Do tejto metódy sa dostanú pomocou URL, kde sa zapíšu ako parameter = hodnota oddelené znakom AND. Služba následne pristupuje k databáze a pomocou agregácie a zgrupovaniu vráti zgrupené počty podľa typu logu. Teda napríklad WARNING 354, ERROR 112 a podobne. Tieto dáta sa spracujú do rozumného formátu a vrátia na frontend, kde sa spracujú. Po zavolaní tejto služby sa pomocou google api vytvorí dátový objekt datatable, ktorý sa naplní pomocou získaných dát a zavolá sa samotné vykreslenie grafu (Histogram) na tabe číslo 3. Taktiež je možné zobraziť tieto štatistiky aj pomocou tabuľky na tabe číslo 2. Spracovanie štatistík sa vykonáva v súbore statistics.js. 4 Testovanie Testovanie sa robilo v ServiceLoggerControllerTest.cs kde je metóda ShowLogsTest() a LogInsertTest() (táto sa nachádza v triede ServiceLoggerControllerTest.cs v priečinku API), kde sa testujú rest-ové metódy a nasimuluje sa RepositoryManager a TestLogContext. 8