Logrotate

From EIK wiki

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