Hlavní navigace

Logrotate: zkrocení zlých logů

Adam Štrauch

Nemusíte být linuxoví guru, abyste si mohli pořídit nějaký ten virtuální server, který se dnes často vyplatí pomalu víc než běžný hosting. I na malém serveru běží spousta služeb, která vygeneruje spoustu informačních hlášek plnících soubory s logy, a aby se logy moc nenafukovaly, je potřeba je zpracovávat.

Soubory s logy najdeme ve /var/log. Když ne zrovna všechno jde podle plánu, je to první místo, kam by měl administrátor zajít a podívat se, co se děje. Někdy je dobré logy občas jen tak proletět, aby nebyl uživatel překvapen vyvrcholením dlouhodobějšího problému. Dnes ale nebudeme řešit, kde co máme hledat, ale podíváme se na logy jako takové. Do logů zapisuje kdejaký daemon a je tam nasměrován i výstup jádra, které dokáže být při problémech velmi upovídané. Proto je potřeba dostat logy pod kontrolu, aby nebraly zbytečně místo na disku jiným důležitým součástem systému, ale zároveň aby se zachovala jejich informační hodnota.

Je tedy potřeba dodržet několik bodů:

  • Logy rostou a je potřeba je komprimovat
  • Logy mohou být důležité a je potřeba je uchovávat
  • Logy by se neměly plést pod rukama

Stačí jeden upovídaný ovladač, kterému se něco nelíbí a váš /var/log/dmesg nebude znát konce. Takový log ale klidně můžete hodit do koše, protože při příštím restartu může vypadat úplně jinak. Na druhou stranu taková e-mailová komunikace by mohla být důležitá, a tak je potřeba ji rozumně skladovat určité období. Podobně na tom je třeba log /var/log/auth­.log, kde můžeme nalézt úspěšné i neúspěšné pokusy o přihlášení do systému. V takovém logu co není podezřelé dnes, může být podezřelé zítra, a proto je lepší si držet historii ještě větší. Na druhou stranu takový log webového serveru můžeme zahodit hned, jak z něj vysajeme informace potřebné k vytvoření statistik.

Činnost, při které se logy zpracují, uloží jinam a třeba zkomprimují, se nazývá rotování a v Linuxu se o něj stará daemon Logrotate. Ten je v některých distribucích nastaven tak, aby si poradil se standardní konfigurací, která vypadne z balíčků různých služeb. Mohou ale vznikat situace, kdy distribuce s nějakým log souborem nepočítá. Může jít o zapomenutý balíček, nějakou uživatelskou aplikaci nebo o individuální nastavení nějakého daemona, který rozděluje logy například podle uživatelů. V takovém případě je potřeba dát logrotate o nových log souborech vědět, aby si s nimi poradilo. Není to nic složitého a rozhodně je to lepší než znenadání zjistit, že velikost obsahu adresáře /var/log nekontrolovatelně vyrostla až na kritickou mez, že to začalo ovlivňovat funkčnost systému. V takovém případě je dobré vědět, jak se s logrotate pracuje a jaké u něj má uživatel možnosti.

Konfigurace

Logrotate je program, který je spouštěn každý den z cronu, takže neběží na pozadí a nebere tak důležité systémové prostředky. při každém spuštění si přečte konfigurační soubor, zjistí si informace o log souborech zahrnutých v konfiguraci a pak provede co má nastaveno. Téměř s jistotou máte logrotate už ve svém systému, protože je opravdu velmi široce používán. Výjimkou mohou být některé jednoúčelové distribuce jako třeba OpenWRT, které logují do ramdisku a tyto problémy se jich netýkají.

Konfigurace logrotate je uložena povětšinou v souboru /etc/logrotate­.conf a adresáři /etc/logrotate­.d/. První jmenovaný obsahuje výchozí nastavení, případně rotování některých základních logů a oproštěn o komentáře vypadá takto:

weekly
rotate 4
create
compress

include /etc/logrotate.d 

V překladu to znamená, že se budou logy generovat jednou týdně, bude se držet historie čtyř logů, po jejich rotování se vytvoří nové a ty staré se zkomprimují. Přes jeden řádek pak logrotate říkáme, kde má hledat zbytek konfigurace, jenž nastaví konkrétní parametry pro jednotlivé daemony. „Zrotovanému“ logu se na konec přidá pořadové číslo, které se v každém cyklu posune o jedničku. Výsledek pak vypadá třeba takto:

mail.err
mail.err.1
mail.err.2.gz
mail.err.3.gz
mail.err.4.gz 

U konkrétních služeb se musíme především vypořádat s problémem, který vzniká, pokud se daemon stará o logování sám a nežene zprávy přes syslog nebo podobný logovací nástroj. Dobrým příkladem je třeba Apache, kde administrátor často odděluje log soubory s přístupy k jednotlivým webům. Apache si neumí poradit, když mu proces rotování vezme logy pod nosem a pokud ho nerestartujete, přestane logovat úplně. Proto je potřeba sledovat, jak se která aplikace chová. Někde to vyřešil distributor, který přidal konfigurační soubor k daemonu v jeho balíčku, ale jinde je třeba si s tím poradit ručně.

Konfigurační soubor třeba pro Apache pak může vypadat takto:

/var/log/apache2/*.log {
    weekly
    missingok
    rotate 52
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
        /etc/init.d/apache2 reload > /dev/null
    endscript
} 

Z příkladu vyčtete, že se má rotování provádět každý týden, logy se mají hledat ve /var/log/apache2/, výsledek má být zkomprimován, ale až od druhého cyklu. Všimněte si parametru postrotate, který na konci rotování reloaduje Apache. Ten zavře otevřené log soubory a vytvoří si nové. Popis k dalším hodnotám najdete v následujícím seznamu:

  • weekly – rotovat každý týden (další možnosti daily nebo monthly)
  • missingok – pokud log chybí, nehlásí se chyba a jde se na další
  • rotate 52 – udržovat historii 52 cyklů (52 souborů)
  • compress – komprimovat otočení logy
  • delaycompress – komprimovat až při druhé otočce (první otočený je stále plain text)
  • notifempty – nevšímat si logu, pokud je prázdný
  • create 640 root adm – po rotaci vytvořit log nový a dát mu tato práva a vlastníka
  • sharedscripts – spustí postrotate pouze jednou a ne pro každý log soubor

Shrnutí

Další zajímavé volby najdete v manuálové stránce:

man logrotate 

Tam jsou všechny možnosti velmi pěkně popsané včetně příkladů. Jelikož většina distribucí již má logrotate nějak nakonfigurován, můžete se podívat na další příklady tam. Logrotate dále umí odesílat logy na e-mail, což můžete využít například k zálohování a již rotované logy umí přesunout do jiného adresáře, aby se nepletly mezi ostatními.

Našli jste v článku chybu?

17. 2. 2012 11:56

dateext

místo access.log.1.gz vytváří access.log-20120217.gz
Když pak zálohujete takové soubory rsyncem, nepřenáší se zbytečně soubory po každé rotaci.


22. 2. 2012 11:45

j (neregistrovaný)

1) ruzumnej log demon tohle resi tak nejakak "od prirody" (metalog kuprikladu)
2) logy uchovavat je naopak velmi nebezpecny a ma to smysl jen kdyz resim jestli neco funguje/nefunguje, jinak je lepsi logovani uplne vypnout nebo omezit na minimum.


Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

DigiZone.cz: Test Philips 24PFS5231 s Bluetooth repro

Test Philips 24PFS5231 s Bluetooth repro

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Podnikatel.cz: Udávání kvůli EET začalo

Udávání kvůli EET začalo

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

Podnikatel.cz: Udávání a účtenková loterie, hloupá komedie

Udávání a účtenková loterie, hloupá komedie

Vitalia.cz: Pamlsková vyhláška bude platit jen na základkách

Pamlsková vyhláška bude platit jen na základkách

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Vitalia.cz: Spor o mortadelu: podle Lidlu falšovaná nebyla

Spor o mortadelu: podle Lidlu falšovaná nebyla

Vitalia.cz: Jmenuje se Janina a žije bez cukru

Jmenuje se Janina a žije bez cukru

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

120na80.cz: Na ucho teplý, nebo studený obklad?

Na ucho teplý, nebo studený obklad?

Vitalia.cz: Proč vás každý zubař posílá na dentální hygienu

Proč vás každý zubař posílá na dentální hygienu

Vitalia.cz: I církev dnes vyrábí potraviny

I církev dnes vyrábí potraviny