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. ]