Před několika dny jsme publikovali průvodce, který popisoval, jak nastavit centralizovaný server Rsyslog v systému CentOS. Dnes se v této příručce podíváme na to, jak spravovat soubory protokolu pomocí Logrotate na Linuxu. Tento nástroj zjednodušuje správu souborů protokolu, což je zvláště užitečné pro systémy, které každý den vytvářejí velké množství souborů protokolu. Jak jeho název napovídá, LogRotate otáčí protokoly zcela mimo váš systém v pravidelných intervalech. Umožňuje také automatické otáčení, kompresi, odstraňování a zasílání souborů protokolu. Každý soubor protokolu lze zpracovávat denně, týdně, měsíčně nebo když se příliš zvětší.
Správa souborů protokolu pomocí Logrotate
Nainstalovat Logrotate
Logrotate je k dispozici ve výchozích úložištích většiny distribucí Linuxu.
V Arch Linuxu a jeho derivátech musíte k instalaci spustit následující příkaz.
$ sudo pacman -S logrotate
Na systémech založených na RPM, jako je RHEL, CentOS, Scientific Linux, jej můžete nainstalovat pomocí příkazu:
$ sudo yum install logrotate
Na Debianu, Ubuntu:
$ sudo apt-get install logrotate
Na SUSE otevřeteSUSE:
$ sudo znf install logrotateStáhnout – Zdarma eGuide:„22 užitečných vylepšení, díky kterým se Ubuntu bude cítit jako doma“
Konfigurace Logrotate
Hlavní konfigurační soubor LogRotate je /etc/logrotate.conf .
Zde je výchozí obsah tohoto souboru v mém systému Arch. Tento výstup souboru může vypadat trochu jinak na jiných distribucích Linuxu.
$ cat /etc/logrotate.conf
Ukázkový výstup:
# see "man logrotate" for details # rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # restrict maximum size of log files #size 20M # create new (empty) log files after rotating old ones create # uncomment this if you want your log files compressed #compress # Logs are moved into directory for rotation # olddir /var/log/archive # Ignore pacman saved files tabooext + .pacorig .pacnew .pacsave # Arch packages drop log rotation information into this directory include /etc/logrotate.d /var/log/wtmp { monthly create 0664 root utmp minsize 1M rotate 1 } /var/log/btmp { missingok monthly create 0600 root utmp rotate 1 }
Podívejme se, co každá možnost dělá ve výše uvedeném konfiguračním souboru.
- týdně - Každý týden otáčí protokoly.
- otočte 4 - Ve výchozím nastavení uchovává LogRotate soubory protokolu po dobu čtyř týdnů (samozřejmě jednoho měsíce). Vzhledem k tomu, že po určité době otočí všechny soubory protokolu, možná budete muset zálohovat důležité soubory protokolu, pokud o ně nechcete přijít.
- velikost 20M - Otočí soubory protokolu, pokud dosáhly velikosti 20 MB. Ve výchozím nastavení je tato možnost zakázána. Chcete-li jej povolit, stačí jej odkomentovat.
- vytvořit - Vytvoří nové soubory protokolu jednou po otočení starých souborů protokolu. Tato možnost je ve výchozím nastavení povolena.
- komprimovat - Komprimuje soubory protokolu. Také ve výchozím nastavení nekomprimuje protokoly. Pokud chcete protokoly komprimovat, odkomentujte tento řádek.
- /etc/logrotate.d/ - Tento adresář obsahuje soubory pravidel protokolu specifické pro aplikaci.
- chybějící OK - Pokud soubor protokolu chybí, Logrotate přejde k dalšímu bez zobrazení chybové zprávy.
Logrotate segmentuje soubory protokolu a komprimuje protokoly na základě pravidel, která jsou specifikována v /etc/logrotate.d/ adresář.
Pojďme se podívat na obsah tohoto adresáře.
$ ls /etc/logrotate.d/
Ukázkový výstup by byl:
lirc samba
Jak vidíte ve výše uvedeném výstupu, obsahuje různé soubory pravidel pro všechny protokoly spravované LogRotate. Chcete-li zobrazit konkrétní pravidlo protokolu aplikace, například samba, spusťte:
$ cat /etc/logrotate.d/samba
Ukázkový výstup:
/var/log/samba/log.smbd /var/log/samba/log.nmbd /var/log/samba/*.log { notifempty missingok sharedscripts copytruncate postrotate /bin/kill -HUP `cat /var/run/samba/*.pid 2>/dev/null` 2>/dev/null || true endscript }
Tady,
- notifempty - Označuje, že soubory protokolu nebudou rotovány, pokud jsou prázdné.
- copytruncate - Po vytvoření kopie ořízněte původní soubor protokolu na místě.
- postrotate/endscript - Řádky mezi postrotate a endscript se provedou po otočení souboru protokolu.
- sdílený skript - Skripty jsou spuštěny pouze jednou, bez ohledu na to, kolik protokolů odpovídá vzoru se zástupnými znaky.
Můžete si také vytvořit své vlastní soubory pravidel protokolu v adresáři /etc/logrotate.d/ a definovat svá vlastní pravidla.
Cron denně spouští obslužný program logroate při hledání souborů protokolu, které se mají otáčet. Pravidla automatického střídání protokolů můžete zadat v /etc/cron.daily/logrotate souboru, abyste se vyhnuli ručnímu zásahu uživatele. Bude provádět rotaci protokolu každý den v určitou dobu.
Chcete-li ověřit, zda se soubory protokolů otáčejí nebo ne, spusťte:
$ cat /var/lib/logrotate.status
Ukázkový výstup:
logrotate state -- version 2 "/var/log/samba/log.smbd" 2016-5-12-11:0:0 "/var/log/lircd" 2016-6-15-10:0:0 "/var/log/httpd/*log" 2016-5-12-11:0:0 "/var/log/wtmp" 2016-5-6-10:0:0 "/var/log/samba/*.log" 2016-5-12-11:0:0 "/var/log/btmp" 2017-4-1-11:36:53 "/var/log/samba/log.nmbd" 2016-5-12-11:0:0
Chcete-li získat další podrobnosti, spusťte logrotate zadáním následujícího příkazu:
$ logrotate --help
Nebo,
$ man logrotate
To je zatím vše lidi. Logrotate je jednoduchý, ale užitečný nástroj pro rotaci protokolů, který zjednodušuje správu protokolů. Nemusíte se potýkat se složitými kroky konfigurace a instalace. Vše je samovysvětlující. Pokud spravujete systém, který vytváří velké množství souborů protokolu, můžete je pravidelně otáčet pomocí Logrotate.
Na zdraví!