Představte si, jaký by byl život, kdyby kritická služba před několika minutami zkolabovala a vy jste byli povoláni, abyste zachránili situaci. Pokusíte se restartovat službu a prostě to nedá. Nejsou zde žádné chybové zprávy, ale co je důležitější, žádné stopy toho, co dělalo, než se rozhodlo zemřít. Vaší myslí prochází sto jedna příčin a vy si uvědomíte, že neexistuje způsob, jak vědět, kterým směrem se vydat. Možná bys mohl restartovat server úplně. Jen možná.
Tento scénář je jedním z mnoha případů, kdy vás může zachránit protokolování. Běžící software obvykle uchovává záznamy o důležitých činnostech souvisejících s jeho provozem pro potřeby potomků v souboru. Cokoli lze uložit do souboru protokolu, protože to pomáhá vývojářům i správcům systému vědět, co se stalo s konkrétním softwarem poté. Soubory protokolu jsou také používány osobami orientovanými na bezpečnost ke kontrole přístupu ke konkrétním zdrojům. V sítích nebo zprávách zaznamenávají soubory protokolu čas odeslání nebo přijetí zpráv pro pozdější použití.
Soubory protokolů se podle definice neustále zvětšují v závislosti na frekvenci a upovídanosti, s jakou jsou aktualizovány. Aby sloužily svému účelu, jsou normálně otevřeny v režimu připojení a obsahují časová razítka, která pomáhají s řešením problémů a forenzní analýzou. To však představuje problém, protože velké soubory dělají práci se soubory protokolu těžkopádným procesem pro systém i pro lidského kontrolora. Protokoly se otáčejí, aby byly soubory protokolů udržitelné. Jednoduše řečeno, nový soubor je otevřen, zatímco starší je uzavřen a buď zachován nebo odstraněn v závislosti na preferencích návrhu. To zabraňuje tomu, aby klády zaplnily celé oddíly a srazily systémy na kolena. Možná jste si všimli rotace protokolu při práci na systému poblíž. Podívejte se na data v boot.log
soubory.

V tomto případě, když je splněna určitá podmínka, je aktuální soubor přejmenován připojením data k jeho identifikaci a sledování a je otevřen nový soubor s původním názvem, připravený přijímat příchozí zprávy protokolu.
Přihlášení v Linuxu (rsyslogd)
Jak můžete očekávat, přihlašování v systémech Linux, jako je server CentOS 7, který používám pro ilustraci, spoléhá na démona, který usnadňuje protokolování. Rsyslogd
je název spolehlivé staré služby a je to open source. Ve skutečnosti to není tak staré. Je to vylepšená verze původního syslog
démona a má schopnost rychle zpracovávat a předávat protokoly do libovolného umístění v síti IP. Kromě syslog
a rsyslog
, existuje syslog-ng
, což je další démon pro zpracování protokolů. Výchozí obslužný program protokolu závisí na zvoleném distro. Rsyslog
je standardně dodáván v mnoha distribucích založených na Red Hatu. Spuštěním následujícího příkazu ověřte jeho přítomnost a verzi ve vašem systému:
rsyslogd -v

Protože se jedná o démona, můžete zkontrolovat, zda je aktivní, pomocí systemd
takto:
systemctl status rsyslog

Pokud z nějakého důvodu neběží, můžete jej spustit pomocí systemd
.
[ Poznámka redakce:Mnoho novějších systémů nahradilo rsyslogd protokolem journald. Můžete si vybrat kteroukoli možnost nebo dokonce obě, abyste zvládli své potřeby protokolování. Další informace naleznete v dokumentaci k vaší distribuci. Tento článek předpokládá, že používáte rsyslogd.]
Logrotate
Logrotate
je linuxový nástroj, jehož základní funkcí je - čekat na to - rotovat protokoly. Pokud není nainstalován jako součást výchozí instalace operačního systému, lze jej nainstalovat jednoduše spuštěním:
yum install logrotate
Binární soubor může být umístěn na /bin/logrotate
.
Instalací logrotate
, nový konfigurační soubor je umístěn do /etc/
adresář pro ovládání obecného chování nástroje při jeho spuštění. Rovněž je vytvořena složka pro konfigurační soubory modulu snap-in specifické pro službu pro přizpůsobené požadavky na rotaci protokolu. Více o tom o něco později.
Denní úloha cron
cron
denně se spouští úloha, která spouští obslužný program. Toho je dosaženo umístěním volání obslužného programu do standardního cron
složka pro každodenní úlohy. I když jsou specifika volání mimo rozsah tohoto článku, stačí říci, že volání je pouze Bash skript, který spouští logrotate
binární, říká systému, co má dělat v případě chyby.

Standardní umístění souboru protokolu
Protokoly v systému Linux lze umístit kamkoli to umožňují oprávnění. Vzhledem k tomu, že se neustále mění ve velikosti a obsahu, hierarchie souborového systému ze své podstaty předepisuje, aby byly uchovávány v /var/log/
adresář.
Níže uvedený snímek obrazovky je náhled na obsah mého /var/log
adresář.

Konfigurační soubory a příklady
/etc/logrotate.conf
První soubor, který je třeba vzít na vědomí s ohledem na funkci logrotate
je logrotate.conf
. Tento konfigurační soubor obsahuje direktivy pro to, jak se mají soubory protokolu ve výchozím nastavení otáčet. Pokud neexistuje žádná konkrétní sada direktiv, obslužný program jedná podle direktiv v tomto souboru.
Níže je ukázka obsahu konfiguračního souboru.

Pojďme si projít několik direktiv, abychom získali představu o flexibilitě logrotate. Autor obslužného programu naštěstí vložil dostatek komentářů, aby mohl začít nováčka. Můžete také vidět man
stránku pro hlubší ponor. Direktivy weekly
, dateext
, compress
, create
a rotate 4
uvádí, že soubory protokolu se mají střídat týdně , že datum rotace bude použito jako identifikační přípona z otočených souborů, že by měly být otočené soubory komprimovány , že se má vytvořit nový soubor přijímat příchozí protokoly, a to ne více než čtyři protokoly by měly být vedeny. Jinými slovy, pátý nejnovější protokol by měl být smazán. Všimněte si také, že v mém systému kvůli přítomnosti #
před compress
komprese je ve výchozím nastavení zakázána.
Existuje také direktiva pro zahrnutí konkrétní složky:/etc/logrotate.d
. Tato složka se používá pro požadavky na rotaci protokolu specifické pro balíček. Balíčky navržené tak, aby využívaly výhody logrotate
přetáhněte konfigurační soubory do tohoto adresáře. Tato modularita je v souladu s duchem Linuxu a zvyšuje rozšiřitelnost nástroje. Konfigurační soubory obsahují podobné direktivy a případně vlastní soubory protokolu. Můžete si také vytvořit svůj vlastní konfigurační soubor pro zpracování libovolného souboru protokolu podle vašeho výběru. Stačí zadat název souboru, přidat soubor protokolu ke zpracování a umístit jej do tohoto adresáře. Nakonec existují direktivy pro soubory protokolu bez balíčků vlastníka, jako je wtmp
a další systémové protokolové soubory. man
stránka je plná dalších direktiv a uživatelům, kteří mají specifičtější potřeby rotace, důrazně doporučuji, aby se na ni podívali.
/etc/logrotate.d
Naštěstí jsem hodně mluvil o /etc/logrotate.d
dovolte mi ukázat vám obsah tohoto adresáře, abych vám myšlenky sdílené dříve přinesl domů.

A jen pro pořádek se podívejme na konfigurační soubor Samba.

Dokážete zjistit, jak je podobný logrotate.conf
? Než zatáhnu nad tímto dílem závěsy, pojďme si projít některé direktivy v tomto souboru:
/var/log/samba/*
- Soubor protokolu, který má být otočen. V tomto případě se jedná o každý soubor protokolu v adresáři protokolu Samba.
notifempty
- Směrnice uvádějící, že soubor by se neměl otáčet, pokud je prázdný.
olddir /var/log/samba/old
- Místo pro uložení starých otočených protokolů.
missingok
- Zastaví logrotate
z vyvolání chyby, pokud soubor protokolu chybí.
copytruncate
- Nezavírejte soubor protokolu. Vytvořte kopii, která bude otočeným, přejmenovaným souborem, a poté ořízněte soubor protokolu na nulovou velikost
Dokážete uhodnout, jaké jsou sharedscripts
směrnice ano? Není třeba hádat - poraďte se s man
stránku.
Zabalení
Doufejme, že to stačí k tomu, abyste mohli pracovat se správou protokolů. Logrotate
je jednoduchý, ale výkonný nástroj pro rotaci s otevřeným zdrojovým kódem. Do dalšího příspěvku, šťastné otáčení!
[ Bezplatný online kurz:Technický přehled Red Hat Enterprise Linux. ]