Logrotate
Sissejuhatus
Logrotate on loodud suuri logi faile loovate süsteemide administreerimise hõlbustamiseks. Võimaldab automaatset logi failide varundamist, pakkimist, eemaldamist ja mailimist. Igat logi faili võib käidelda igapäevaselt, nädalaselt, kuiselt või siis, kui ta muutub liiga suureks. Järgnev artikkel annab ülevaate, kuidas võtta /var/log kataloog oma kontrolli alla.
Kasutamine
Käsu süntaks:
logrotate [-dv] [-f|--force] [-s|--state file] config_file
Järgnevalt on toodud võtme failid, millest peaksid teadlik olema, et logrotate korralikult töötaks:
/usr/sbin/logrotate – logrotate käsk.
/etc/cron.daily/logrotate – shelli skript, mis käivitab logrotate käsu igapäevaselt.
$ cat /etc/cron.daily/logrotate
#!/bin/sh
Test –x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf
/etc/logrotate.conf – logrotation konfiguratsioon kõikidele logidele, mis on selles failis kirjas. Järgnev näide on kopeeritud virtuaalmasina ubuntu serveri logrotate.conf failist.
$ cat /etc/logrotate.conf
weekly
rotate 4
create
include /etc/logrotate.d
/var/log/wtmp {
missingok
monthly
create 0664 root utmp
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0664 root utmp
rotate 1
}
/etc/logrotate.d – Kui individuaalselt paigaldatud paketid installitakse, siis pannakse nende logi varundamise konfigureerimis informatsioon sellesse kataloogi. Näiteks, all on toodud yum
logi varundamise konfiguratsiooni informatsioon.
$ cat /etc/logrotate.d/yum
/var/log/yum.log {
missingok
notifempty
size 30k
yearly
create 0600 root root
}
Logrotate size meetod: Varundab logi faili, kui faili suurus jõuab teatud limiidini
Kui sa tahad varundada logi faili (näiteks, /tmp/output.log) iga 1KB limiidini jõudmisel, siis tekita logrotate.conf sellised read nagu näidatud all.
$ cat logrotate.conf
/tmp/output.log {
size 1k
create 700 bala bala
rotate 4
}
Sellisel logrotate konfiguratsioonil on kolm valikut:
- size 1k – logrotate käivitub ainult siis, kui faili suurus on võrdne(või suurem kui) antud suurus.
- create – varundab originaal faili ja loob uue faili täpsustatud õiguste, kasutaja ja grupiga.
- rotate – limiteerib logifailide varundamis arvu. Hetkel hoitakse ainult nelja kõige hiljutisemalt varundatud logi faili.
Enne logrotation on faili output.log suurus selline:
$ ls -l /tmp/output.log
-rw-r--r-- 1 bala bala 25868 2010-06-09 21:19 /tmp/output.log
Nüüd kasuta sellist logrotate käsku nagu näidatud. Suvand -s täpsustab failinime, et kirjutada logrotate staatus.
$ logrotate -s /var/log/logstatus logrotate.conf
Märkus: millal iganes sul on vaja logi varundada, siis valmista ette logrotate konfiguratsioon ja käivita logrotate käsk käsitsi.
Pärast logrotation on faili output.log suurus järgmine:
$ ls -l /tmp/output*
-rw-r--r-- 1 bala bala 25868 2010-06-09 21:20 output.log.1
-rwx------ 1 bala bala 0 2010-06-09 21:20 output.log
Lõpuks see hoiab see järgnevaid varundatud logifaile.
output.log.4 output.log.3 output.log.2 output.log.1 output.log
Palun pea meeles, et pärast logi varundamist, teenusele vastav logifail näitab ikkagi varundatud failile(output.log.1) ja jätkab sinna kirjutamist. Ülalpool toodud meetodit võid kasutada, kui sa tahad varundada apache access_log või error_log iga 5MB täis saamisel. Ideaalis peaksid modima /etc/logrotate.conf faili, et täpsustada logrotate informatsiooni vastava logifaili kohta.
Logrotate compress meetod: pakib varundatud logifailid
Kui kasutada alltoodud pakkimis meetodit, siis varundatud failid pakitakse kokku gzip
utiliidiga.
$ cat logrotate.conf
/tmp/output.log {
size 1k
copytruncate
create 700 bala bala
rotate 4
compress
}
Väljund pakitud logifailist:
$ ls /tmp/output*
output.log.1.gz output.log
Logrotate dateext meetod: Varundab vanad logifailid koos kuupäevaga logi failinimes
$ cat logrotate.conf
/tmp/output.log {
size 1k
copytruncate
create 700 bala bala
dateext
rotate 4
compress
}
Pärast ülaltoodud konfiguratsiooni näeb, et kuupäev on listatud varundatud logifailile nagu näidatud all.
$ ls -lrt /tmp/output*
-rw-r--r-- 1 bala bala 8980 2010-06-09 22:10 output.log-20100609.gz
-rwxrwxrwx 1 bala bala 0 2010-06-09 22:11 output.log
See töötaks ainult korra päevas, sest kui proovida varundada samal päeval uuesti, siis varem varundatud failil on sama nimi. Niiet logrotate ei õnnestuks enam samal päeval.
Logrotate monthly, daily, weekly meetod: Varundab logifailid korra nädalas/päevas/kuus
Et teha varundamine kuus korra tuleb lisada märksõna monthly:
$ cat logrotate.conf
/tmp/output.log {
monthly
copytruncate
rotate 4
compress
}
Et teha varundamine nädalas korra, siis tuleb lisada märksõna weekly:
$ cat logrotate.conf
/tmp/output.log {
weekly
copytruncate
rotate 4
compress
}
Lisades märksõna daily toimub varundamine iga päev. Logi faile on võimalik varundada ka tunnis korra.
$ cat logrotate.conf
/tmp/output.log {
daily
copytruncate
rotate 4
compress
}
Logrotate postrotate endscript meetod: Laseb käima kirjutatud shell skripti koheselt, kui logi varundamine on toimunud
Logrotated lubab sul jooksuda enda kirjutatud shelli skripte pärast seda kui on toimunud logi varundamine. Järgmine konfiguratsioon viitab sellele, et pärast logrotation toimumist lastakse käima myscript.sh
$ cat logrotate.conf
/tmp/output.log {
size 1k
copytruncate
rotate 4
compress
postrotate
/home/bala/myscript.sh
endscript
}
Logrotate maxage option: Kustutab vanemad varundatud logifailid
Logrotate automaatselt kustutab varundatud failid pärast teatud päevade möödumist. Järgnev näites kustutatakse varundatud logifailid, mis on vanemad kui 100 päeva.
$ cat logrotate.conf
/tmp/output.log {
size 1k
copytruncate
rotate 4
compress
maxage 100
}
Logrotate missingok meetod: Ei tagasta veateadet, kui vastav logifail on kadunud
On võimalik ignoreerida veateadet, kui tegelik fail ei ole saadaval. Selleks tuleb kasutada vastavat käsku, nagu näidatud all.
$ cat logrotate.conf
/tmp/output.log {
size 1k
copytruncate
rotate 4
compress
missingok
}
Logrotate compresscmd ja compressext käsk: Täpsustab logifaili varundamiseks pakkimis käsu
$ cat logrotate.conf
/tmp/output.log {
size 1k
copytruncate
create
compress
compresscmd /bin/bzip2
compressext .bz2
rotate 4
}
Järgnevad pakkimis valikud on kirjeldatud ülal:
- compress – Viitab sellele, et tehakse pakkimine.
- compresscmd – Täpsustab, millist tüüpi pakkimis käsku kasutatakse. Näites: /bin/bzip2
- compressext – Täpsustab varundatud logifaili laiendi.
Ilma selle valikuta kasutab varundatud fail vaikimisi faililaiendit .gz. Niiet kui sa tahad kasutada bzip2 compressioncmd, siis tuleb täpsustada faililaiendina .bz2 nagu näidatud eelpool toodud näites.
Kasutatud kirjandus
http://linuxcommand.org/man_pages/logrotate8.html
http://www.thegeekstuff.com/2010/07/logrotate-examples/
http://linuxconfig.org/logrotate
Autor
Taavi Salumets A21