Logrotate je software předinstalovaný ve většině verzí systému Linux. Umožňuje spravovat ukládané logy.
Aplikace v systému zaznamenávají logy diskových operací či chyb. Pokud je současně uloženo velké množství logů, mohou zaplnit disk a tím způsobit problémy.
Logrotate je nejčastějším řešením pro pravidelnou kontrolu logů a automatickou správu jejich rotace, komprese a mazání, pokud dojde k překročení určité velikosti nebo stáří souborů.
Základní nastavení
Logrotate umožňuje definovat některé základní parametry, které budou použity ve všech následujících konfiguracích v /etc/logrotate.conf:
weekly
rotate 4
create
include /etc/logrotate.d
V tomto výpisu logrotate.conf se kromě použití všech výše popsaných komentářů doporučuje také zkontrolovat všechny konfigurace přítomné v adresáři /etc/logrotate.d. Máte možnost rozdělit každou konfiguraci podle aplikace a/nebo kontextu.
Konfigurace logrotate definují sadu pravidel pro jeden nebo více souborů:
[FILE] [FILE?] [FILE?] {
[SETTINGS]
}
Typickým příklade je konfigurace / var / log / messages:
/var/log/messages {
rotate 5
weekly
postrotate
/usr/bin/killall -HUP syslogd
endscript
}
Ve výše uvedeném příkladu je brán v úvahu pouze soubor messages. Jeho rotace je nastavena na každý týden a do maximální výše 5 souborů. Při šesté rotaci bude tedy soubor z první rotace smazán:
-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
Mezi nejdůležitější parametry nastavení patří:
-
• daily, monthly, weekly, yearly: označuje, jak často má log rotovat;
-
• compress, nocompress: zda staré logy komprimovat či nikoliv;
-
• maxage: po kolika dnech jsou staré logy mazány;
-
• size: nastaví rotaci pouze v případě, že jsou zvolené soubory větší než zadaná hodnota. Je možné použít přípony k označení formátu velikosti (např. „k“ pro kilobajty nebo „M“ pro megabajty);
-
• rotate: počet logů, které jsou uloženy před tím, než jsou trvale odstraněny. Pokud je nastavena hodnota 0, logy budou mazány bez toho, aby docházelo k rotaci.
Pokud chcete nastavit stejná pravidla pro více souborů, můžete přidat více cest oddělených čárkou. Například:
/var/log/custom_log, /var/log/alternative_log_file, /var/log/another_log {
…
}
Tato pravidla budou použita pro soubory custom_log, alternative_log a another_log.
Můžete využít také rotování všech logů v jednom adresáři, například:
/var/custom/logs/*, /var/log/custom_log {
...
}
Použití nastavení dateext
Nastavení dateext umožňuje přidat datum do názvu souboru, což usnadňuje orientaci v uložených logách.
/var/log/custom.log {
size 100M
dateext
rotate 3
compress
maxage 100
}
Výše uvedená konfigurace bude archivovat soubor custom.log od chvíle, kdy dosáhne 100 megabajtů, v maximální počtu 3 kusů, nebo po 100 dnech. Soubor bude komprimován ve formátu gzip.
Poté, kdy logy projdou rotací, budou jejich názvy obsahovat také datum rotace, jak je ukázáno níže:
-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
Odesílání logů e-mailem
Logrotate umožňuje spouštět skripty v případě výskytu různých událostí, například po každé rotaci logů.
Jedním z příkladů využití je odesílání protokolů e-mailem po každém dokončení rotace. K nastavení této funkce nejprve vytvořte skript pro odeslání souborů na vaši e-mailovou adresu:
#!/bin/bash
tar -cvf /tmp/logpack.tar /var/log/messages*
echo "Log" | mail -s "log" [email protected] -A /tmp/logpack.tar
Uložte výše uvedený soubor do svého domovského adresáře, například /home/map.com username_s//endend.sh a povolte potřebná oprávnění pomocí:
Nyní upravte konfiguraci logrotate následovně:
/var/log/messages {
...
postrotate
…
/home/user/sendlog.sh
endscript
}
Uložte konfiguraci a potvrďte změny.
Díky tomuto nastavení obdržíte e-mail s definovaným archivem logů po každém dokončení rotace.