Logrotate je software předinstalovaný ve většině distribucí Linuxu, který vám umožňuje spravovat dlouhodobé ukládání a organizaci souborů protokolu.
Aplikace v systému často zaznamenávají protokol operací s diskem nebo problémů. Pokud nejsou pravidelně odstraňovány, mohou se tyto soubory zvětšit, zaplnit disk a způsobit poruchy.
Logrotate je nejběžnějším řešením pro pravidelnou kontrolu souborů protokolu a automatickou správu jejich rotace, komprese a eliminace, když je překročena určitá velikost a/nebo stáří.
Základní konfigurace
Logrotate umožňuje definovat některé základní parametry, které budou používány všemi následujícími konfiguracemi souboru v cestě /etc/logrotate.conf:
# Set a weekly rotation
weekly
# Set the number of rotations to save
rotate 4
# make new log file
create
# Include all configurations files
include /etc/logrotate.d
V tomto výpisu z logrotate.conf se kromě použití všech výše popsaných parametrů doporučuje také čtení všech konfigurací přítomných v adresáři /etc/logrotate.d. Tímto způsobem můžete každou konfiguraci rozdělit podle aplikace a/nebo kontextu.
Konfigurace Logrotate definují sadu pravidel pro 1 nebo více souborů:
[FILE] [FILE?] [FILE?] {
[SETTINGS]
}
Klasickým příkladem je konfigurace / var / log / messages:
/var/log/messages {
# Save 5 rotations
rotate 5
# Rotating files every week
weekly
postrotate
/usr/bin/killall -HUP syslogd
endscript
}
Ve výše uvedeném příkladu se bere v úvahu pouze soubor zprávy. . a jeho rotace je nastavena každý týden, p na maximálně 5. Proto na konci páté rotace soubory protokolu:
-rw-r----- 1 root adm 1215 Jul 29 06:47 messages
-rw-r----- 1 root adm 3895 Jul 28 06:49 messages.1
-rw-r----- 1 root adm 454 Jul 21 06:37 messages.2.gz
-rw-r----- 1 root adm 506 Jul 15 06:40 messages.3.gz
-rw-r----- 1 root adm 456 Jul 7 06:41 messages.4.gz
Některá z nejdůležitějších nastavení jsou:
denně, měsíčně, týdně, ročně:označuje, jak často se má soubor protokolu otáčet
compress, nocompress:zda komprimovat staré rotace souborů nebo ne
maxage:Po kolika dnech budou staré rotace odstraněny
velikost:Nastaví otočení pouze v případě, že uvedené soubory jsou větší než zadaná velikost. K označení formátu velikosti lze použít přípony (např. "k" pro kilobajty, "M" pro megabajty)
rotovat:Počet otočených protokolů, které je třeba uložit, než budou trvale odstraněny. Pokud je nastaveno na 0, soubory protokolu budou vymazány, aniž by byly otočeny.
V případě, že chcete nastavit stejná pravidla pro více souborů, můžete připojit více cest tak, že je oddělíte čárkou. Například:
/var/log/custom_log, /var/log/alternative_log_file, /var/log/another_log {
…
}
Tato konfigurace bude použita pro soubory custom_log, alternative_log_file a other_log.
Alternativně můžete použít masky souborů jako:
/var/custom/logs/*, /var/log/custom_log {
# This configuration will rotate all the files in the directory.
# /var/custom/logs/* e il file /var/log/custom_log
...
}
Použití nastavení dateext
Nastavení dateext umožňuje přidat datum rotace k názvu souboru, aby bylo možné snadno rozpoznat data protokolů.
/var/log/custom.log {
size 100M
dateext
rotate 3
compress
maxage 100
}
Výše uvedená konfigurace archivuje soubor custom.log, jakmile dosáhne 100 milionů, maximálně třikrát nebo po 100 dnech. Prostřednictvím možnosti komprimovat bude archivovaný soubor také komprimován ve formátu gzip.
Po otočení budou mít názvy souborů datum otočení, jak je uvedeno níže:
# ls /var/log
-rw-r--r-- 1 user user 8980 2019-06-09 22:10 custom.log-20180609.gz
-rwxrwxrwx 1 user user 0 2019-06-09 22:11 custom.log
Protokoly zasílání e-mailem
Logrotate vám umožňuje spouštět přizpůsobené skripty, když nastanou určité události, například po každém otočení protokolu, pomocí klíčových slov postrotate / endscript.
Jedním z možných použití by mohlo být odeslání protokolů e-mailem při dokončení rotace. Chcete-li pokračovat, nejprve vytvořte skript pro odeslání souborů na vaši e-mailovou adresu:
#!/bin/bash
# Get all logs
tar -cvf /tmp/logpack.tar /var/log/messages*
# Send logs as attachment
echo "Log" | mail -s "log" [email protected] -A /tmp/logpack.tar
Uložte si výše uvedený soubor do svého domovského adresáře, například /home/map.com username_s//endend.sh a ujistěte se, že jste povolili potřebná oprávnění prostřednictvím:
# sudo chmod u+x /home/user/sendlog.sh
Nyní upravte konfigurační soubor logrotate následovně:
/var/log/messages {
...
postrotate
…
/home/user/sendlog.sh
endscript
}
Chcete-li použít změny, uložte konfiguraci.
Po dokončení obdržíte e-mail s výše popsaným archivem protokolu při každém otočení protokolu.