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

Lekce 11 - Údržba logů v systému ObjectGears

V minulé lekci, Objekty systému ObjectGears - Role a řízení přístupu, jsme si popsali objekt Role a způsob řízení přístupu uživatelů.

V dnešním ObjectGears tutoriálu se zaměříme na správný přístup k údržbě logů pro zajištění větší stability systému.

Motivace

Při běžné práci s aplikacemi uživatelé prohlížejí data, vytvářejí nová, upravují již existující nebo data mažou. Spolu s těmito změnami se v aplikaci hromadí druhá sada dat, kterými jsou logovací data. V systému ObjectGears se loguje spousta informací, které můžeme později použít pro kontrolu přístupů, k analýze chování uživatelů či k hledání případných chyb.

Tento typ dat neustále narůstá. Časem se tak budeme potýkat s těmito problémy:

  • velikost vlastní databáze,
  • velikost vytvořených záloh,
  • obnova databáze po havárii disku.

Právě z těchto a podobných důvodů obsahuje systém ObjectGears možnost údržby logů.

Údržba logů

Kliknutím na položku Správa / Systém / Údržba logů v levém menu si zobrazíme základní nastavení:

Základní obrazovka údržby logů - Systém ObjectGears

Na obrázku vidíme možnost nastavit údržbu:

  • systémových logů,
  • archivních tabulek v modelu.

Pojďme si obě možnosti vysvětlit.

Údržba systémových logů

Na obrázku výše, v sekci Systémové logy, vidíme tabulku s logy k odstranění. Na každém řádku vidíme:

  • Názevnázev skupiny příbuzných logů,
  • Povolenopříznak, kterým povolujeme odstraňování logů,
  • Ponechat posledních dní – definujeme počet dní, v kterých budou logy zachovány,
  • Počet řádek v DB - vidíme, kolik řádků zabírá daný log v databázi. Pokud je log složen z více tabulek, pak je zde více hodnot.

Jednotlivé logy jsou sloučeny do skupinek podle významu. Např. log Odeslané emaily používá v databázi tři tabulky, log Spuštění workflow jich používá pět. Při promazání těchto logů, dojde k promazání všech těchto tabulek.

Při mazání však nedochází automaticky ke smazání všech záznamů. Mažou se jen nepotřebné záznamy. Naopak záznamy, na které je odkazováno z jiných tabulek, není možné smazat. Typicky log Protokol událostí obsahuje informace i pro jiné logy, a tak z něj není možné smazat záznamy, pokud nebudou smazány záznamy z jiných logů.

Hodnotu z pole Ponechat posledních dní nastavujeme podle četnosti tvorby zálohy databáze. Například když děláme plnou zálohu každý týden, pak nastavíme hodnotu na 15 dní. Logy tak budeme mít ve dvou zálohách.

Při nastavování kontrolujeme vlastní velikost databáze, aby nepřekročila velikost dostupného disku.

Hodnota z pole Ponechat posledních dní může být libovolné celé číslo větší nebo rovno 5. Vyjímkou jsou automatické časové operace (ATO), kde je minimální hodnota 90, což vychází z principu fungování ATO.

Zachování logu na delší dobu nebo natrvalo

Pokud máme specifický požadavek na uchování logu po dobu 1 roku či natrvalo, pak vytvoříme novou instanci ObjectGears. Do této instance vytvoříme instanci třídy, která bude představovat daný log. Pak například jobem každou noc budeme přesunovat nové záznamy.

Vytvoření instance pro každý log zvlášť získáme dostatečný prostor.

Nastavení archivních tabulek v modelech

V rámci modelu můžeme u každé třídy povolit archivaci záznamů. Tzn., každá změna ve třídě provede vložení původních dat do archivní tabulky. Tyto záznamy se ale nemažou a časem by mohly narůst do velkého množství.

Nastavení je zde stejné jako u systémových logů. Nejdříve vybereme daný model ze zobrazených tříd (ty mají povolenu archivaci záznamů) a pak vybereme třídy k promazání:

Nastavení promazání logů pro modely - Systém ObjectGears

Pro každý model je potřeba zvlášť kliknout na tlačítko Uložit. Jinak po výběru jiného modelu dojde k zahození změn nastavení předchozího modelu.

Při promazávání archivních tabulek tříd modelů se nijak nekontrolují vazby mezi záznamy.

Mějme například dvě třídy Faktura a Položky-faktury. Třída Položky-faktury odkazuje na třídu Faktura. Na třídě Faktura bychom nastavili ponechání 90 posledních dní a na třídě Položky-faktury jen 30 dní. Pak po 30 dnech stále v archivu uvidíme seznam všech faktur a jejich změn, ale již neuvidíme položky starších faktur, které byly smazány po 30 dnech.

V provozních třídách Faktura a Položky-faktur bude stále vše v pořádku, protože v nich mazání neprobíhá.

Spouštění odstranění logů

Promazávání logů spouštíme pomocí jobu Log maintenance se skriptem takto:

OG.RunLogMaintenance();

To nám dává plnou moc nad dobou, kdy v databázi neprovádíme žádné importy, exporty ani jiné hromadné databázové operace, které by výmaz mohly časově nebo výkonově narušit. Údržbu můžeme spouštět jednou denně, týdně nebo jen měsíčně v závislosti na plnění tabulky s logy. S ohledem na četnost spouštění nastavujeme i hodnotu Ponechat posledních dní. Nemá smysl nastavovat 3 dny, když provádíme vlastní mazání jednou týdně/měsíčně.

Vypnutí odstranění logů

V případě nutnosti je možné job na promazávání logů zcela vypnout. Vypnutí způsobí nárůst logů a po opětovném zapnutí se smaže více záznamů.

Jde o stejnou situaci, kdy logy promazáváme poprvé nebo když měníme hodnotu Ponechat posledních dní. Její snížení při následném spuštění promazávání odstraní více záznamů.

Četnost odstraňování logů

Častějším spouštěním promazávání logů snížíme skokové změny velikostí databáze, tedy potřebné místo na disku. Pokud např. promazáváme každý den a smažeme průměrně 50MB, pak se velikost databáze bude denně měnit o 50MB a +- nové záznamy.

Pokud budeme promazávat jednou měsíčně, pak bude změna velikosti cca 50*31 = 1,5GB. Toto místo musíme mít vždy k dispozici na disku a bude v podstatě nevyužité. Jen se jednou měsíčně naplní a opět uvolní. Současně s tím se nám prodlužuje čas tvorby zálohy a následného kopírování souboru na zálohovací místo.

Shrink databáze

Promazání nepotřebných záznamů zmenší velikost databáze. Nezmenší se však vlastní soubory. Proto je potřeba ještě spustit v databázi příkaz Shrink. Tento příkaz systém ObjectGears přímo nepodporuje, ale můžeme to obejít. K jobu přidáme další krok, ve kterém spustíme databázový příkaz, který shrink provede:

OG.Sql.RunSql('shrink …');

Práva pro nastavení logů

Pro nastavení mazání systémových logů musí být uživatel v roli administrátor. Pro nastavení mazání tříd modelů musí být uživatel v roli administrátor nebo IT vlastník daného modelu. Uživatelům jsou nabízeny jen modely, na které má právo.


 

Předchozí článek
Objekty systému ObjectGears - Role a řízení přístupu
Všechny články v sekci
Systém ObjectGears
Článek pro vás napsal Jan Stodůlka
Avatar
Uživatelské hodnocení:
1 hlasů
Autor se věnuje programování v C# a MS SQL serveru.
Aktivity