Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

11. diel - Údržba logov v systéme ObjectGears

V minulej lekcii, Objekty systému ObjectGears - Úloha a riadenie prístupu , sme si popísali objekt Úloha a spôsob riadenia prístupu užívateľov.

V dnešnom ObjectGears tutoriále sa zameriame na správny prístup k údržbe logov pre zaistenie väčšej stability systému.

Motivácia

Pri bežnej práci s aplikáciami používatelia prezerajú dáta, vytvárajú nové, upravujú už existujúce alebo dáta mažú. Spolu s týmito zmenami sa v aplikácii hromadí druhá sada dát, ktorými sú logovacie dáta. V systéme ObjectGears sa loguje množstvo informácií, ktoré môžeme neskôr použiť na kontrolu prístupov, na analýzu správania užívateľov či na hľadanie prípadných chýb.

Tento typ dát neustále narastá. Časom sa tak budeme stretávať s týmito problémami:

  • veľkosť vlastnej databázy,
  • veľkosť vytvorených záloh,
  • obnova databázy po havárii disku.
Práve z týchto a podobných dôvodov obsahuje systém ObjectGears možnosť údržby logov.

Údržba logov

Kliknutím na položku Správa / Systém / Údržba logov v ľavom menu si zobrazíme základné nastavenia:

Základná obrazovka údržby logov - Systém ObjectGears

Na obrázku vidíme možnosť nastaviť údržbu:

  • systémových logov,
  • archívnych tabuliek v modeli.
Poďme si obe možnosti vysvetliť.

Údržba systémových logov

Na obrázku vyššie, v sekcii Systémové logy, vidíme tabuľku s logami na odstránenie. Na každom riadku vidíme:

  • Názovnázov skupiny príbuzných logov,
  • Povolenépríznak, Ktorým povoľujeme odstraňovanie logov,
  • Ponechať posledných dní – definujeme počet dní, v ktorých budú logá zachované,
  • Počet riadkov v DB - vidíme, koľko riadkov zaberá daný log v databáze. Pokiaľ je log zložený z viacerých tabuliek, potom je tu viac hodnôt.
Jednotlivé logy sú zlúčené do skupiniek podľa významu. Napr. log Odoslané emaily používa v databáze tri tabuľky, log Spustenie workflow ich používa päť. Pri premazaní týchto logov, dôjde k premazaniu všetkých týchto tabuliek.

Pri mazaní však nedochádza automaticky k zmazaniu všetkých záznamov. Mažú sa len nepotrebné záznamy. Naopak záznamy, na ktoré je odkazované z iných tabuliek, nie je možné zmazať. Typicky log Protokol udalostí obsahuje informácie aj pre iné logy a tak z neho nie je možné zmazať záznamy, pokiaľ nebudú zmazané záznamy z iných logov.

Hodnotu z poľa Ponechať posledných dní nastavujeme podľa početnosti tvorby zálohy databázy. Napríklad keď robíme plnú zálohu každý týždeň, potom nastavíme hodnotu na 15 dní. Logy tak budeme mať v dvoch zálohách.

Pri nastavovaní kontrolujeme vlastnú veľkosť databázy, aby neprekročila veľkosť dostupného disku.

Hodnota z poľa Ponechať posledných dní môže byť ľubovoľné celé číslo väčšie alebo rovné 5. Výnimkou sú automatické časové operácie (ATO), kde je minimálna hodnota 90, čo vychádza z princípu fungovania ATO.

Zachovanie logu na dlhšiu dobu alebo natrvalo

Pokiaľ máme špecifickú požiadavku na uchovanie logu po dobu 1 roka alebo natrvalo, potom vytvoríme novú inštanciu ObjectGears. Do tejto inštancie vytvoríme inštanciu triedy, ktorá bude predstavovať daný log. Potom napríklad jobom každú noc budeme presúvať nové záznamy.

Vytvorenie inštancie pre každý log zvlášť získame dostatočný priestor.

Nastavenie archívnych tabuliek v modeloch

V rámci modelu môžeme pri každej triede povoliť archiváciu záznamov. Tzn., každá zmena v triede vykoná vloženie pôvodných dát do archívnej tabuľky. Tieto záznamy sa ale nemažú a časom by mohli narásť do veľkého množstva.

Nastavenie je tu rovnaké ako pri systémových logoch. Najskôr vyberieme daný model zo zobrazených tried (tie majú povolenú archiváciu záznamov) a potom vyberieme triedy na premazanie:

Nastavenie premazania logov pre modely - Systém ObjectGears

Pre každý model je potrebné zvlášť kliknúť na tlačidlo Uložiť. Inak po výbere iného modelu dôjde k zahodeniu zmien nastavenia predchádzajúceho modelu.

Pri premazávaní archívnych tabuliek tried modelov sa nijako nekontrolujú väzby medzi záznamami.

Majme napríklad dve triedy Faktura a Položky-faktury. Trieda Položky-faktury odkazuje na triedu Faktura. Na triede Faktura by sme nastavili ponechanie posledných 90 dní a na triede Položky-faktury len 30 dní. Potom po 30 dňoch stále v archíve uvidíme zoznam všetkých faktúr a ich zmien, ale už neuvidíme položky starších faktúr, ktoré boli zmazané po 30 dňoch.

V prevádzkových triedach Faktura a Položky-faktur bude stále všetko v poriadku, pretože v nich mazanie neprebieha.

Spúšťanie odstránenie logov

Premazávanie logov spúšťame pomocou jobu Log maintenance so skriptom takto:

To nám dáva plnú moc nad dobou, kedy v databáze nevykonávame žiadne importy, exporty ani iné hromadné databázové operácie, ktoré by výmaz mohli časovo alebo výkonovo narušiť. Údržbu môžeme spúšťať raz denne, týždenne alebo len mesačne v závislosti od plnenia tabuľky s logami. S ohľadom na početnosť spúšťania nastavujeme aj hodnotu Ponechať posledných dní. Nemá zmysel nastavovať 3 dni, keď vykonávame vlastné mazanie raz týždenne/mesačne.

Vypnutie odstránenie logov

V prípade nutnosti je možné job na premazávanie logov úplne vypnúť. Vypnutie spôsobí nárast logov a po opätovnom zapnutí sa zmaže viac záznamov.

Ide o rovnakú situáciu, kedy logy premazávame prvýkrát alebo keď meníme hodnotu Ponechať posledných dní. Jej zníženie pri následnom spustení premazávania odstráni viac záznamov.

Frekvencia odstraňovania logov

Častejším spúšťaním premazávania logov znížime skokové zmeny veľkostí databázy, teda potrebné miesto na disku. Pokiaľ napr. premazávame každý deň a zmažeme priemerne 50MB, potom sa veľkosť databázy bude denne meniť o 50MB a +- nové záznamy.

Pokiaľ budeme premazávať raz mesačne, potom bude zmena veľkosti cca 50*31 = 1,5GB. Toto miesto musíme mať vždy k dispozícii na disku a bude v podstate nevyužité. Len sa raz mesačne naplní a opäť uvoľní. Súčasne s tým sa nám predlžuje čas tvorby zálohy a následného kopírovania súboru na zálohovacie miesto.

Shrink databázy

Premazanie nepotrebných záznamov zmenší veľkosť databázy. Nezmenšia sa však vlastné súbory. Preto je potrebné ešte spustiť v databáze príkaz Shrink. Tento príkaz systém ObjectGears priamo nepodporuje, ale môžeme to obísť. K jobu pridáme ďalší krok, v ktorom spustíme databázový príkaz, ktorý shrink vykoná:

Práva na nastavenie logov

Pre nastavenie mazania systémových logov musí byť užívateľ v úlohe administrátor. Pre nastavenie mazania tried modelov musí byť užívateľ v úlohe administrátor alebo IT vlastník daného modelu. Užívateľom sú ponúkané iba modely, na ktoré má právo.


 

Predchádzajúci článok
Objekty systému ObjectGears - Úloha a riadenie prístupu
Všetky články v sekcii
Systém ObjectGears
Článok pre vás napísal Jan Stodůlka
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se věnuje programování v C# a MS SQL serveru.
Aktivity