Efektivní správa souborů protokolů je základním úkolem správce systému Linux.
V tomto článku probereme, jak provádět následující operace se soubory protokolu pomocí UNIX logrotate utility.
- Otočte soubor protokolu, když velikost souboru dosáhne určité velikosti
- Po otočení starého souboru protokolu pokračujte v zapisování informací protokolu do nově vytvořeného souboru
- Komprimujte otočené soubory protokolu
- Určete možnost komprese pro rotované soubory protokolu
- Otočte staré soubory protokolu s datem v názvu souboru
- Spouštět vlastní skripty shellu ihned po otočení protokolu
- Odeberte starší rotované soubory protokolu
1. Logrotate Configuration files
Níže jsou uvedeny klíčové soubory, které byste měli znát, aby logrotate fungovalo správně.
/usr/sbin/logrotate – Samotný příkaz logrotate.
/etc/cron.daily/logrotat e – Tento skript shellu spouští příkaz logrotate každý den.
$ cat /etc/cron.daily/logrotate #!/bin/sh /usr/sbin/logrotate /etc/logrotate.conf EXITVALUE=$? if [ $EXITVALUE != 0 ]; then /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]" fi exit 0
/etc/logrotate.conf – Konfigurace rotace protokolu pro všechny soubory protokolu je specifikována v tomto souboru.
$ cat /etc/logrotate.conf weekly rotate 4 create include /etc/logrotate.d /var/log/wtmp { monthly minsize 1M create 0664 root utmp rotate 1 }
/etc/logrotate.d – Když jsou v systému nainstalovány jednotlivé balíčky, vypustí z tohoto adresáře informace o konfiguraci rotace protokolu. Například informace o konfiguraci rotace yum log jsou uvedeny níže.
$ cat /etc/logrotate.d/yum /var/log/yum.log { missingok notifempty size 30k yearly create 0600 root root }
2. Možnost Logrotate size:Otočit soubor protokolu, když velikost souboru dosáhne určitého limitu
Pokud chcete otočit soubor protokolu (například /tmp/output.log) o každých 1 kB, vytvořte soubor logrotate.conf, jak je uvedeno níže.
$ cat logrotate.conf /tmp/output.log { size 1k create 700 bala bala rotate 4 }
Tato konfigurace logrotate má následující tři možnosti:
- velikost 1k – logrotate se spustí, pouze pokud je velikost souboru rovna (nebo větší než) této velikosti.
- vytvořit – otočte původní soubor a vytvořte nový soubor se zadaným oprávněním, uživatelem a skupinou.
- rotovat – omezuje počet rotací souborů protokolu. To by tedy zachovalo pouze poslední 4 otočené soubory protokolu.
Před logrotation je následující velikost souboru output.log:
$ ls -l /tmp/output.log -rw-r--r-- 1 bala bala 25868 2010-06-09 21:19 /tmp/output.log
Nyní spusťte příkaz logrotate, jak je znázorněno níže. Volba -s určuje název souboru pro zápis stavu logrotate.
$ logrotate -s /var/log/logstatus logrotate.conf
Poznámka:Kdykoli potřebujete rotaci logu pro některé soubory, připravte konfiguraci logrotate a spusťte příkaz logroate ručně.
Po logrotation je velikost souboru output.log:
$ 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
Nakonec to zachová následující nastavení rotovaných souborů protokolu.
- output.log.4.
- output.log.3
- output.log.2
- output.log.1
- output.log
Mějte prosím na paměti, že po rotaci logu bude logovací soubor odpovídat službě, stále bude ukazovat na rotovaný soubor (output.log.1) a bude se do něj nadále zapisovat. Výše uvedený způsob můžete použít, pokud chcete otočit apache access_log nebo error_log každých 5 MB.
V ideálním případě byste měli upravit soubor /etc/logrotate.conf tak, aby specifikoval informace logrotate pro konkrétní soubor protokolu.
Pokud máte velké soubory protokolů, můžete také použít:10 úžasných příkladů pro prohlížení obrovských souborů protokolu v Unixu
3. Možnost Logrotate copytruncate:Po otočení starého souboru protokolu pokračujte v zapisování informací protokolu do nově vytvořeného souboru.
$ cat logrotate.conf /tmp/output.log { size 1k copytruncate rotate 4 }
copytruncate pokyn logrotate vytvořit kopii původního souboru (tj. otočit původní soubor protokolu) a zkrátit původní soubor na velikost nula bajtů. To pomáhá příslušné službě, která patří do tohoto souboru protokolu, zapisovat do správného souboru.
Při manipulaci se soubory protokolu vám mohou být užitečné tipy pro nahrazení sed, sed delete.
4. Možnost komprimace Logrotate:Komprimuje otočené soubory protokolu
Pokud použijete možnost komprimovat, jak je uvedeno níže, otočené soubory budou komprimovány pomocí nástroje gzip.
$ cat logrotate.conf /tmp/output.log { size 1k copytruncate create 700 bala bala rotate 4 compress }
Výstup komprimovaného souboru protokolu:
$ ls /tmp/output* output.log.1.gz output.log
5. Možnost Logrotate dateext:Otočte starý soubor protokolu s datem v názvu souboru protokolu
$ cat logrotate.conf /tmp/output.log { size 1k copytruncate create 700 bala bala dateext rotate 4 compress }
Po výše uvedené konfiguraci si všimnete data v rotovaném souboru protokolu, jak je znázorněno níže.
$ 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
To by fungovalo pouze jednou za den. Protože když se pokusí otočit příště ve stejný den, dříve otočený soubor bude mít stejný název souboru. Logrotate tedy nebude úspěšný po prvním spuštění ve stejný den.
Obvykle můžete použít tail -f k zobrazení výstupu souboru protokolu v reálném čase. Můžete dokonce kombinovat více výstupů tail -f a zobrazit je na jednom terminálu.
6. Možnost Logrotate měsíční, denní, týdenní:Rotujte soubor protokolu týdně/denně/měsíčně
Za provedení rotace jednou měsíčně
$ cat logrotate.conf /tmp/output.log { monthly copytruncate rotate 4 compress }
Přidejte týdenní klíčové slovo, jak je uvedeno níže, pro týdenní rotaci protokolu.
$ cat logrotate.conf /tmp/output.log { weekly copytruncate rotate 4 compress }
Přidejte denní klíčové slovo, jak je uvedeno níže, pro každou rotaci denního protokolu. Záznamy můžete také střídat každou hodinu.
$ cat logrotate.conf /tmp/output.log { daily copytruncate rotate 4 compress }
7. Možnost Logrotate postrotate endscript:Spouštět vlastní skripty shellu ihned po rotaci protokolu
Logrotate vám umožňuje spouštět vlastní skripty shellu poté, co dokončí rotaci souboru protokolu. Následující konfigurace naznačuje, že po logrotation spustí myscript.sh.
$ cat logrotate.conf /tmp/output.log { size 1k copytruncate rotate 4 compress postrotate /home/bala/myscript.sh endscript }
8. Možnost Logrotate maxage:Odstraňte starší rotované soubory protokolu
Logrotate automaticky odstraní otočené soubory po určitém počtu dní. Následující příklad ukazuje, že rotované soubory protokolu budou odstraněny po 100 dnech.
$ cat logrotate.conf /tmp/output.log { size 1k copytruncate rotate 4 compress maxage 100 }
9. Možnost Logrotate missingok:Nevracet chybu, pokud soubor protokolu chybí
Pokud skutečný soubor není k dispozici, můžete chybovou zprávu ignorovat pomocí této možnosti, jak je uvedeno níže.
$ cat logrotate.conf /tmp/output.log { size 1k copytruncate rotate 4 compress missingok }
10. Volba Logrotate compresscmd a compressext:Zadejte příkaz komprese pro rotaci souboru protokolu
$ cat logrotate.conf /tmp/output.log { size 1k copytruncate create compress compresscmd /bin/bzip2 compressext .bz2 rotate 4 }
Výše jsou uvedeny následující možnosti komprese:
- komprimovat – Označuje, že je třeba provést kompresi.
- compresscmd – Určete, jaký typ příkazu pro kompresi se má použít. Například:/bin/bzip2
- compressext – zadejte příponu rotovaného souboru protokolu. Bez této možnosti by měl otočený soubor výchozí příponu .gz. Pokud tedy používáte kompresi bzip2cmd, zadejte příponu jako .bz2, jak je znázorněno ve výše uvedeném příkladu.