Logrotate - zaboravljeni junak
Da su logovi, obično smješteni u direktoriju /var/log, izuzetno važni jasno je svakom sistem-inženjeru. Nema drugog načina rješavanja problema (osim ako ste problem susreli prije pa rješenje znate napamet) do povećanja razine logiranja i promatranja što smeta određenom servisu da funkcionira na željeni ili očekivani način.
Logovi, dakako, s vremenom rastu, pa ih treba brisati sa sustava (bilo bi, naravno, bolje snimati na nekakve neizbrisive medije na neko dulje vrijeme). Ovu funkciju nenametljivo obavlja program logrotate. On prvo zaustavi određeni servis (prerotate), obavi sve operacije iz konfiguracije, te ponovno starta servis (postrotate).
Logrotate nije jedini program te vrste, postoji primjerice rotatelogs, dio apache paketa.
Gotovo svaki paket brine o svojim logovima putem conf.d mehanizma, tako da način rotiranja i arhiviranja svojih logova stave u direktorij /etc/logrotate.d. Uzmimo za primjer /etc/logrotate.d/apt:
/var/log/apt/term.log {
rotate 6
monthly
compress
missingok
notifempty
}
Dakle, ovdje se definira ponašanje za datoteku /var/log/apt/term.log. Što se ovdje definira? Objasnimo opcije:
rotate - broj iza opcije označava koliko će se arhiviranih datoteka čuvati. Dakle, osim trenutnog loga, čuva se još 6 starih inačica istih datoteka, term.log.1, term.log.2 itd.
monthly - vrlo očito, logovi se rotiraju jednom mjesečno, obično prvog u mjesecu. Umjesto ovog, ovdje može stajati daily i weekly.
compress - stari logovi se sažimaju programom gzip(1). Ukoliko želite, možete rabiti drugi program za sažimanje. S anredbom compresscmd možete odrediti drugi program za sažimanje (zip, bzip2, itd). Naredba uncompress poništva sažimanje log datoteka, što ne vjerujemo da ćete rabiti kad postoje naredbe zless, zcat i slične.
missingok - logrotate se neće buniti ako konkretni log ne postoji. Obrnuta opcija je nomissingok, što je ujedno i default u programu logrotate.
notifempty - ukoliko je log prazan (veličine 0 bajta), neće se rotirati. Obrnuta opcija je ifempty, što će zbog zaglavlja kodeka za sažimanje kreirati niz malih datoteka većih od nula bajtova (iako je originalni log veličine 0!).
Ovo je bio vrlo jednostavan primjer, a složeniji je, primjerice, apache2:
/var/log/apache2/*.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
if [ -f "`. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}`" ]; then
/etc/init.d/apache2 reload > /dev/null
fi
endscript
}
Većinu opcija smo spomenuli, objasnit ćemo dosad nespomenute:
delaycompress - opcija određuje da se stari log ne sažima odmah, nego tek u sljedećem ciklusu, znači neće odmah postati access.log.1.gz, nego će prvo postati access.log.1, a tek onda acess.log.2.gz.
create - ukoliko želite iz sigurosnih razloga promijeniti vlasnika sažete log datoteke, onda se možete poslužiti opcijom create, a sintaksa je "create mod vlasnik grupa". Inače, arhivirana/rotirana datoteka ima iste atribute kao i original. Opcija se u potpunosti može anulirati opcijom nocreate.
sharedscripts - u slučaju da imate wildcard unos, baš kao u ovom slučaju, ova opcija određuje da se skripte prerotate i postrotate izvrše samo jednom. Opcija poništava opciju nosharedscripts, te automatski podrazumijeva uporabu opcije create.
postrotate - opciju smo maloprije spomenuli. Ona određuje ponašanje nakon provedbe rotiranja logova. Za apache2 ona je malo složenija, ali inače obično ovaj, ili sličan oblik:
/usr/bin/killall -HUP servis
endscript - samo označava kraj prerotate ili postrotate skripte.
Navest ćemo i treći primjer, recimo da imate neki svoj program koji ima log datoteku /var/log/program.log.
Kreirajte datoteku /etc/logrotate.d/program ovog sadržaja:
/var/log/program.log {
compress
delaycompress
missingok
notifempty
rotate 4
weekly
dateext
}
Od sad će se log datoteka vašeg programa rotirati 4 puta (jednom tjedno), nakon čega će biti obrisana sa diska. Opcija dateext će rotiranim arhivama dati nastavak u obliku YYYYMMDD, umjesto jedostavnih brojeva .1, .2 i dalje. Ovo je jako praktično ako pravite arhive svojih logova na neke druge medije (što preporučamo!).
Kao i uvijek, za popis svih ostalih opcija konzultirajte manual stranicu sa "man logrotate".
- Inačica za ispis
- Logirajte se za dodavanje komentara
- PDF version