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.
Údržba logov
Kliknutím na položku Správa / Systém / Údržba logov v ľavom menu si zobrazíme základné nastavenia:
Na obrázku vidíme možnosť nastaviť údržbu:
- systémových logov,
- archívnych tabuliek v modeli.
Ú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ázov – ná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.
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:
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.