GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak nastavit a spravovat rotaci protokolu pomocí Logrotate v systému Linux

Jedním z nejzajímavějších (a možná také jedním z nejdůležitějších) adresářů v systému Linux je /var/log . Podle standardu Filesystem Hierarchy Standard je činnost většiny služeb spuštěných v systému zapsána do souboru v tomto adresáři nebo v jednom z jeho podadresářů.

Takové soubory jsou známé jako protokoly a jsou klíčem ke zkoumání toho, jak systém funguje (a jak se choval v minulosti). Protokoly jsou také prvním zdrojem informací, kam se administrátoři a inženýři podívají při odstraňování problémů.

Pokud se podíváme na obsah /var/log na CentOS/RHEL/Fedora a Debian/Ubuntu (pro zpestření) uvidíme následující soubory protokolu a podadresáře.

Vezměte prosím na vědomí, že výsledek se může ve vašem případě poněkud lišit v závislosti na službách spuštěných na vašem systému (systémech) a době, kdy byly spuštěny.

V RHEL/CentOS a Fedora

# ls /var/log

V Debianu a Ubuntu

# ls /var/log

V obou případech můžeme pozorovat, že některé názvy protokolů končí podle očekávání na “log“ , zatímco ostatní jsou buď přejmenovány pomocí data (například maillog-20160822 na CentOS ) nebo komprimované (zvažte auth.log.2.gz a mysql.log.1.gz v Debianu ).

Toto není výchozí chování založené na zvolené distribuci, ale lze jej libovolně změnit pomocí direktiv v konfiguračních souborech, jak uvidíme v tomto článku.

Pokud by byly protokoly uchovávány navždy, nakonec by zaplnily souborový systém, kde /var/log sídlí. Aby tomu zabránil, může správce systému použít příjemnou utilitu s názvem logrotate k pravidelnému čištění protokolů.

Několika slovy logrotujte přejmenuje nebo zkomprimuje hlavní protokol, když je splněna podmínka (více o tom za minutu), takže další událost bude zaznamenána do prázdného souboru.

Kromě toho odstraní „staré“ log soubory a uchová ty nejnovější. Samozřejmě se musíme rozhodnout, co „staré“ znamená a jak často chceme, aby logrotate vyčistilo protokoly za nás.

Instalace Logrotate v Linuxu

Chcete-li nainstalovat logrotate , stačí použít správce balíčků:

---------- On Debian and Ubuntu ---------- 
# aptitude update && aptitude install logrotate 

---------- On CentOS, RHEL and Fedora ---------- 
# yum update && yum install logrotate

Stojí za to poznamenat, že konfigurační soubor (/etc/logrotate.conf ) může naznačovat, že na jednotlivé .conf mohou být umístěna jiná, konkrétnější nastavení soubory uvnitř /etc/logrotate.d .

Doporučeno ke čtení :Správa systémových protokolů (konfigurace, rotace a import do databáze) pomocí Logrotate

Bude tomu tak tehdy a pouze tehdy, pokud následující řádek existuje a není zakomentován:

include /etc/logrotate.d

Budeme se držet tohoto přístupu, protože nám pomůže udržet věci v pořádku, a použijeme Debia n pole pro následující příklady.

Nakonfigurujte Logrotate v Linuxu

Logrotate je velmi univerzální nástroj a poskytuje spoustu direktiv, které nám pomohou nakonfigurovat, kdy a jak se budou protokoly střídat a co by se mělo stát hned poté.

Vložme následující obsah do /etc/logrotate.d/apache2.conf (všimněte si, že s největší pravděpodobností budete muset tento soubor vytvořit) a prozkoumejte každý řádek, abyste označili jeho účel:

apache2.conf
/var/log/apache2/* {
    weekly
    rotate 3
    size 10M
    compress
    delaycompress
}

První řádek označuje, že direktivy uvnitř bloku platí pro všechny protokoly v /var/log/apache2 :

  • týdně znamená, že se nástroj pokusí otočit protokoly každý týden. Další možné hodnoty jsou denní a měsíční.
  • otočte 3 znamená, že by se měly uchovávat pouze 3 otočené protokoly. Nejstarší soubor bude tedy odstraněn při čtvrtém následujícím spuštění.
  • velikost=10M nastaví minimální velikost pro rotaci na 10M. Jinými slovy, každý protokol nebude rotován, dokud nedosáhne 10 MB.
  • komprimovat a delaycompress se používají k označení, že všechny otočené protokoly, s výjimkou toho nejnovějšího, by měly být komprimovány.

Proveďme zkušební provoz, abychom viděli, co by logrotate udělal, kdyby byl nyní skutečně proveden. Použijte -d volba následovaná konfiguračním souborem (ve skutečnosti můžete spustit logrotate vynecháním této volby):

# logrotate -d /etc/logrotate.d/apache2.conf

Výsledky jsou uvedeny níže:

Namísto komprimace protokolů bychom je mohli přejmenovat podle datu když byly otočeny. K tomu použijeme dateext směrnice. Pokud je náš formát data jiný než výchozí rrrrmmdd , můžeme jej specifikovat pomocí dateformat .

Doporučeno ke čtení :Nainstalujte „atop“ pro sledování aktivity protokolování procesů systému Linux

Všimněte si, že můžeme dokonce zabránit rotaci, pokud je protokol prázdný pomocí notifempty . Kromě toho řekněme logrotate, aby poslal otočený protokol správci systému ([e-mail chráněný] v tomto případě) pro jeho referenci (to bude vyžadovat nastavení poštovního serveru, což je mimo rozsah tohoto článku).

Pokud chcete dostávat e-maily o logrotate, můžete nastavit poštovní server Postfix, jak je znázorněno zde:Instalace poštovního serveru Postfix

Tentokrát použijeme /etc/logrotate.d/squid.conf otočit pouze /var/log/squid/access.log :

squid.conf
/var/log/squid/access.log {
    monthly
    create 0644 root root
    rotate 5
    size=1M
    dateext
    dateformat -%d%m%Y
    notifempty
    mail [email protected]
}

Jak můžeme vidět na obrázku níže, tento protokol nebylo nutné otáčet. Pokud je však splněna podmínka velikosti (velikost=1M ), bude otočený protokol přejmenován na access.log-25082020 (pokud byl protokol otočen 25. srpna 2020 ) a hlavní protokol (access.log ) bude znovu vytvořen s přístupovými oprávněními nastavenými na 0644 a s rootem jako vlastník a vlastník skupiny.

Konečně, když počet protokolů konečně dosáhne 6 , nejstarší protokol bude zaslán na adresu [email protected] .

Nyní předpokládejme, že chcete spustit vlastní příkaz, když dojde k rotaci. Chcete-li to provést, umístěte řádek s takovým příkazem mezi direktivy postrotate a endscript.

Předpokládejme například, že chceme odeslat e-mail rootovi, když se některý z protokolů uvnitř /var/log/myservice se otáčí. Přidejte červené řádky do /etc/logrotate.d/squid.conf :

squid.conf
/var/log/myservice/* {
	monthly
	create 0644 root root
	rotate 5
	size=1M
    	postrotate
   		echo "A rotation just took place." | mail root
    	endscript
}

V neposlední řadě je důležité poznamenat, že možnosti obsažené v /etc/logrotate.d/*.conf v případě konfliktů přepíše ty v hlavním konfiguračním souboru.

Logrotate a Cron

Ve výchozím nastavení vytvoří instalace logrotate soubor crontab uvnitř /etc/cron.daily s názvem logrotate . Stejně jako v případě ostatních souborů crontab v tomto adresáři se bude spouštět denně od 6:25 pokud není nainstalován anacron.

Doporučeno ke čtení :11 příkladů úloh plánování Cron v Linuxu

V opačném případě bude provádění zahájeno kolem 7:35 . Pro ověření sledujte řádek obsahující cron.daily buď v /etc/crontab nebo /etc/anacrontab .

Shrnutí

V systému, který generuje několik protokolů, lze správu takových souborů výrazně zjednodušit pomocí logrotate. Jak jsme vysvětlili v tomto článku, bude se automaticky otáčet, komprimovat, odstraňovat a odesílat protokoly pravidelně nebo když soubor dosáhne dané velikosti.

Jen se ujistěte, že je nastaveno na spouštění jako úloha cron a logrotate vám hodně usnadní práci. Další podrobnosti naleznete na stránce manuálu.

Máte nějaké dotazy nebo návrhy k tomuto článku? Neváhejte a dejte nám vědět pomocí níže uvedeného formuláře pro komentáře.


Ubuntu
  1. Otočte a archivujte protokoly pomocí příkazu logrotate systému Linux

  2. Jak spravovat a vypisovat služby v Linuxu

  3. Jak spravovat soubory protokolu pomocí Logrotate v Linuxu

  1. Jak nainstalovat a používat logrotate ke správě souborů protokolu v Ubuntu 18.04 LTS

  2. Jak používat Logrotate ke správě protokolů na Ubuntu

  3. Jak monitorovat a protokolovat síťový provoz v systému Linux pomocí vnStat

  1. Jak prohlížet a číst soubory protokolu Linux

  2. Jak nastavit a používat FTP server v Ubuntu Linux

  3. Jak vytvořit vlastní rotaci souboru protokolu pomocí logrotate v Linuxu