Jak nastavit a spravovat střídání protokolů pomocí funkce Logrotate v systému Linux

instagram story viewer

Jeden z nejzajímavějších (a možná také jeden z nejdůležitějších) adresářů v systému Linux je /var/log. Podle Standard hierarchie souborového systému, aktivita většiny služeb běžících v systému je zapsána do souboru uvnitř tohoto adresáře nebo jednoho 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 dí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 rozmanitost) uvidíme následující soubory protokolu a podadresáře.

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

V RHEL/CentOS a Fedora

# ls /var /log. 
Protokolovat soubory a adresáře pod CentOS 7
Protokolovat soubory a adresáře pod CentOS 7

V Debianu a Ubuntu

# ls /var /log. 
Protokolovat soubory a adresáře v Debianu 8
Protokolovat soubory a adresáře v Debianu 8

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

Toto není výchozí chování na základě zvolené distribuce ale lze libovolně změnit pomocí směrnic v konfiguračních souborech, jak uvidíme v tomto článku.

Pokud by se protokoly uchovávaly navždy, nakonec by skončily zaplněním souborového systému kde /var/log bydlí. Aby tomu zabránil, může správce systému použít pěkný nástroj s názvem logrotovat pravidelně čistit protokoly.

Stručně řečeno, logrotovat přejmenuje nebo zkomprimuje hlavní protokol, když je splněna podmínka (o tom více za minutu), aby byla další událost zaznamenána do prázdného souboru.

Navíc odstraní "starý" protokolovat soubory a uchovávat ty nejnovější. Samozřejmě se musíme rozhodnout, co "starý" znamená a jak často chceme, aby nám logrotate vyčistil protokoly.

Instalace aplikace Logrotate v systému Linux

Instalovat logrotovat, stačí použít správce balíčků:

Na Debianu a Ubuntu # aptitude update && aptitude install logrotate Na CentOS, RHEL a Fedora # yum update && yum install logrotate. 

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

Doporučené čtení: Spravujte systémové protokoly (konfigurujte, otáčejte a importujte do databáze) pomocí funkce Logrotate

To bude případ, pouze pokud existuje následující řádek a není okomentován:

zahrnout /etc/logrotate.d. 

Budeme se tohoto přístupu držet, protože nám pomůže udržet pořádek a používat Debian box pro následující příklady.

Konfigurace služby Logrotate v systému Linux

Jako velmi univerzální nástroj poskytuje logrotate spoustu směrnic, které nám pomáhají konfigurovat, kdy a jak se budou protokoly otáčet a co by se mělo stát hned poté.

Vložíme následující obsah /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 uvedli jeho účel:

apache2.conf

/var/log/apache2/* {týdenní rotace 3 velikost 10M komprese zpoždění komprese. }

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

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

Proveďme suchý běh, abychom zjistili, co by logrotate udělala, kdyby byla skutečně spuštěna nyní. Použijte -d možnost následovaná konfiguračním souborem (ve skutečnosti můžete spustit logrotate vynecháním této možnosti):

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

Výsledky jsou uvedeny níže:

Otočte protokoly Apache pomocí funkce Logrotate
Otočte protokoly Apache pomocí funkce Logrotate

Místo komprimace protokolů bychom je mohli přejmenovat po datum když byly otočeny. K tomu použijeme datum směrnice. Pokud je náš formát data jiný než výchozí rrrrmmdd, můžeme to specifikovat pomocí datový formát.

Doporučené čtení: Nainstalujte „atop“ a sledujte aktivitu protokolování systémových procesů Linux

Všimněte si, že můžeme dokonce zabránit rotaci, pokud je protokol prázdný pomocí oznámení. Kromě toho řekněme logrotate, aby odeslal otočený protokol správci systému ([chráněno emailem] v tomto případě) za jeho / její odkaz (to bude vyžadovat a poštovní server, který chcete nastavit, 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: Nainstalujte poštovní server Postfix

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

chobotnice.konf

/var/log/squid/access.log {month create 0644 root root rotate 5 size = 1M dateext dateformat -%d%m%Y notifempty mail [chráněno emailem]
}

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

Nakonec, když počet protokolů konečně dosáhne 6, bude zaslán nejstarší protokol [chráněno emailem].

Otočte protokoly Squid pomocí funkce Logrotate
Otočte protokoly Squid pomocí funkce Logrotate

Předpokládejme nyní, že budete chtít spustit rotaci vlastního příkazu. 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 uživateli root, když je uvnitř kterýkoli z protokolů /var/log/myservice otočí se. Přidejte řádky červeně do /etc/logrotate.d/squid.conf:

chobotnice.konf

/var/log/myservice/* {month create 0644 root root rotate 5 size = 1M postrotate echo „Právě proběhla rotace.“ | kořenový skript e -mailu
}

V neposlední řadě je důležité si uvědomit, že možnosti existují v /etc/logrotate.d/*.conf v případě konfliktů přepsat ty v hlavním konfiguračním souboru.

Logrotate a Cron

Ve výchozím nastavení instalace logrotate vytvoří uvnitř soubor crontab /etc/cron.daily pojmenovaný logrotovat. Jak je tomu v případě ostatních souborů crontab v tomto adresáři, bude spuštěno denně od 6:25 hod pokud není nainstalován anacron.

Doporučené čtení: 11 Cron Scheduling Task examples in Linux

Jinak poprava začne kolem 7:35 hod. Chcete -li ověřit, sledujte řádek obsahující cron.denně v obou /etc/crontab nebo /etc/anacrontab.

souhrn

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

Jen se ujistěte, že je nastaven tak, aby běžel jako cron job a logrotate vám to hodně usnadní. Další podrobnosti najdete na manuálové stránce.

Máte k tomuto článku nějaké dotazy nebo návrhy? Neváhejte nás informovat pomocí níže uvedeného formuláře pro komentáře.

Teachs.ru