GNU/Linux >> Znalost Linux >  >> Linux

Kompletní průvodce protokolováním Linuxu

Jako správce systému Linux kontroluji soubory protokolu je jedním z nejběžnějších úkolů, které možná budete muset provést.

Linuxové protokoly jsou zásadní:ukládají důležité informace o některých chybách, které se mohou ve vašem systému vyskytnout.

Mohou také ukládat informace o tom, kdo se pokouší získat přístup k vašemu systému, co konkrétní služba dělá nebo o selhání systému, ke kterému došlo dříve.

V důsledku toho vědět, jak najít , manipulovat a analyzovat soubory protokolu je určitě dovednost, kterou musíte ovládat.

V tomto tutoriálu odhalíme vše, co je třeba vědět o Linux logování.

Bude vám představen způsob architektury protokolování v systémech Linux a jak se různá virtuální zařízení a procesy vzájemně ovlivňují při protokolování záznamů.

Budeme se hlouběji zabývat protokolem Syslog a jak to přešlo ze syslogd (na starých systémech) na journalctl poháněné systemd na novějších systémech.

Typy protokolování Linux

Když se zabýváte protokolováním Linuxu, existuje několik základů, kterým musíte porozumět, než zadáte jakékoli příkazy do terminálu.

V systému Linux máte dva typy mechanismů protokolování:

  • Protokolování jádra :související s chybami, varováními nebo informacemi, které může zapsat vaše jádro;
  • Protokolování uživatelů :propojeno s uživatelským prostorem, tyto položky protokolu se týkají procesů nebo služeb, které mohou běžet na hostitelském počítači.

Rozdělením protokolování do dvou kategorií v podstatě odhalujeme, že samotná paměť je v Linuxu rozdělena do dvou kategorií:uživatelský prostor a prostor jádra .

Protokolování jádra

Začněme nejprve protokolováním souvisejícím s prostorem jádra známým také jako protokolování jádra.

V prostoru jádra se protokolování provádí pomocí Kernel Ring Buffer.

Kruhová vyrovnávací paměť jádra je kruhová vyrovnávací paměť, která je první datovou strukturou ukládající zprávy protokolu při spuštění systému.

Když spouštíte svůj počítač se systémem Linux, pokud se na obrazovce zobrazují zprávy protokolu, jsou tyto zprávy uloženy v kruhové vyrovnávací paměti jádra.

Protokolování jádra se spouští před přihlášením uživatele (spravováno démonem syslog nebo rsyslog u posledních distribucí).

Kruhový buffer jádra, stejně jako všechny ostatní soubory protokolu ve vašem systému, lze zkontrolovat.

Chcete-li otevřít protokoly související s jádrem ve vašem systému, musíte použít „dmesg “.

Poznámka :tento příkaz musíte provést jako root nebo mít privilegovaná práva, abyste mohli zkontrolovat vyrovnávací paměť jádra.

$ dmesg

Jak můžete vidět, od spuštění systému až do okamžiku, kdy jste provedli příkaz, jádro sleduje všechny akce, varování nebo chyby, které se mohou v prostoru jádra vyskytnout.

Pokud má váš systém potíže s detekcí nebo připojením disku, pravděpodobně zde budete chtít zkontrolovat chyby.

Jak můžete vidět, příkaz dmesg je docela pěkné rozhraní pro zobrazení protokolů jádra, ale jak vám příkaz dmesg tyto výsledky vytiskne?

Abychom odhalili různé používané mechanismy, podívejme se, které procesy a zařízení se starají o protokolování jádra .

Interní prvky protokolování jádra

Jak jste již pravděpodobně slyšeli, v Linuxuje vše soubor.

Pokud je vše soubor, znamená to také, žezařízení jsou soubory.

V Linuxu je vyrovnávací paměť jádra zhmotněna souborem znakového zařízení v adresáři /dev a jmenuje se kmsg.

$ ls -l /dev/ | grep kmsg

Pokud bychom měli znázornit vztah mezi zařízením kmsg a kruhovou vyrovnávací pamětí jádra, znázornili bychom to takto.

Jak vidíte, zařízení kmsg jeabstrakce používá se ke čtení a zápisu do kruhové vyrovnávací paměti jádra.

V podstatě to můžete vidět jako vstupní bod pro procesy v uživatelském prostoru pro zápis do kruhové vyrovnávací paměti jádra.

Výše uvedený diagram je však neúplný, protože jádro používá jeden speciální soubor k uložení informací protokolu jádra do souboru.

Pokud bychom to měli shrnout, v podstatě bychom uvedli, že virtuální zařízení kmsg funguje jako vstupní bod pro kruhovou vyrovnávací paměť jádra, zatímco výstup tohoto procesu (řádky protokolu) jsou vytištěny do souboru /proc/kmsg.

Tento soubor lze analyzovat pouze jedním procesem, kterým je většinu času protokolovací nástroj používaný v uživatelském prostoru. Na některých distribucích to může být syslogd, ale na novějších distribucích je integrován s rsyslog.

Nástroj rsyslog má sadu vestavěných modulů, které přesměrují protokoly jádra na vyhrazené soubory v systému souborů.

Historicky byly protokoly jádra načítány démonem klogd na předchozích systémech, ale u většiny distribucí byl nahrazen rsyslog.

Na jedné straně máte protokolovací nástroje, které čtou z kruhové vyrovnávací paměti, ale také máte programy pro uživatelský prostor, které zapisují do kruhové vyrovnávací paměti:systemd (se slavným systemd-journal) například na nejnovějších distribucích.

Nyní, když víte více o protokolování jádra, pojďme se podívat, jak se protokolování provádí v uživatelském prostoru.

Protokolování na straně uživatele pomocí Syslog

Přihlašování do uživatelského prostoru je zcela odlišné od přihlašování do prostoru jádra.

Na straně uživatele je protokolování založeno na protokolu Syslog .

Syslog se standardně používá k vytváření, předávání a shromažďování protokolů vytvořených v instanci Linuxu.

Syslog definuje úrovně závažnosti i úrovně zařízení, což uživatelům pomáhá lépe porozumět protokolům vytvářeným na jejich počítačích.

Protokoly lze později analyzovat a vizualizovat na serverech označovaných jako servery Syslog.

Stručně řečeno, protokol Syslog je protokol používaný k definování formátování, odesílání a přijímání zpráv protokolu na systémech Unix.

Syslog je známý tím, že definuje formát syslog, který definuje formát, který musí aplikace používat k odesílání protokolů.

Tento formát je známý tím, že definuje dva důležité pojmy:vybavení a priority .

Vysvětlení zařízení Syslog

Stručně řečeno, úroveň zařízení se používá k určení programu nebo části systému, která vytvořila protokoly.

Ve vašem systému Linux odesílá protokoly mnoho různých nástrojů a programů. Aby bylo možné určit, který proces odeslal protokol, Syslog definuje čísla, čísla zařízení, které programy používají k odesílání protokolů Syslog.

Existuje více než 23 různých zařízení Syslog, které jsou popsány v tabulce níže.

Číselný kód Klíčové slovo Název zařízení
0 kern Zprávy jádra
1 uživatel Zprávy na uživatelské úrovni
2 mail Poštovní systém
3 démon Systémoví démoni
4 auth Bezpečnostní zprávy
5 syslog Zprávy Syslogd
6 lpr Subsystém řádkové tiskárny
7 novinky Subsystém síťových zpráv
8 uucp Podsystém UUCP
9 cron Démon hodin
10 authpriv Bezpečnostní zprávy
11 ftp Démon FTP
12 ntp NTP subsystém
13 zabezpečení Audit protokolu zabezpečení
14 konzole Upozornění protokolu konzoly
15 solaris-cron Protokoly plánování
16–23 local0 až local7 Místně využívaná zařízení

Většina těchto zařízení je vyhrazena pro systémové procesy (jako je poštovní server, pokud jej máte, nebo obslužný program cron). Některé z nich (od zařízení číslo 16 až 23) mohou být použity vlastními klienty Syslog nebo uživatelskými programy k odesílání protokolů.

Vysvětlení priorit Syslog

Úrovně závažnosti syslog se používají k tomu, jak závažná je událost protokolu, a sahají od ladění, informačních zpráv až po nouzové úrovně.

Podobně jako u úrovní zařízení Syslog jsou úrovně závažnosti rozděleny do číselných kategorií v rozsahu od 0 do 7, přičemž 0 je nejkritičtější úroveň nouzového stavu .

Opět je zde tabulka pro všechny úrovně priority dostupné v Syslog.

Zde jsou úrovně závažnosti syslog popsané v tabulce:

Hodnota Závažnost Klíčové slovo
0 Nouzový stav emerg
1 Upozornění alert
2 Kritické crit
3 Chyba err
4 Upozornění warning
5 Upozornění alert
6 Informační info
7 Ladění debug

Architektura Syslog

Syslog také definuje několik technických termínů, které se používají při budování architektury logovacích systémů:

  • Původce :také známý jako „klient Syslog“, původce je zodpovědný za odeslání zprávy ve formátu Syslog přes síť nebo do správné aplikace;
  • Relé :přenos se používá k předávání zpráv po síti. Přenos může zprávy transformovat, aby je například obohatil (známé příklady zahrnují Logstash nebo fluentd);
  • Sběratel :také známé jako „Syslog servery“, kolektory se používají k ukládání, vizualizaci a načítání protokolů z více aplikací. Kolektor může zapisovat protokoly do široké škály různých výstupů:místní soubory, databáze nebo mezipaměti.

Jak můžete vidět, protokol Syslog se řídí architekturou klient-server jsme viděli v předchozích tutoriálech.

Jeden klient Syslog vytváří zprávy a odesílá je volitelným místním nebo vzdáleným přenosům, které lze dále přenášet na servery Syslog.

Nyní, když víte, jak je architekturován protokol Syslog, co náš vlastní systém Linux?

Řídí se touto architekturou?

Linuxová architektura místního protokolování

Přihlašování do místního systému Linux se řídí přesnými principy, které jsme popsali dříve.

Bez dalších okolků, zde je způsob, jakým je protokolování architekturováno v systému Linux (v nejnovějších distribucích)

Podle výše popsané architektury originator-relay-collector v případě místního systému Linux:

  • Původci jsou klientské aplikace které mohou vkládat knihovny syslog nebo journald za účelem odesílání protokolů;
  • Ve výchozím nastavení nejsou lokálně implementována žádná relé;
  • Sběratelé jsou rsyslog a démon journald naslouchání na předdefinovaných soketech pro příchozí protokoly.

Kde jsou tedy protokoly uloženy poté, co je obdrží sběratelé?

Umístění souboru protokolu Linux

Ve vašem systému Linux jsou protokoly uloženy ve složce /var/log adresář.

Protokoly v adresáři /var/log jsou rozděleny do funkcí Syslog, které jsme viděli dříve, za nimiž následuje přípona protokolu:auth.log, daemon.log, kern.log nebo dpkg.log.

Pokud byste si prohlédli soubor auth.log, byly by vám předloženy protokoly týkající se ověřování a autorizace ve vašem systému Linux.

Podobně soubor cron.log zobrazuje informace související se službou cron ve vašem systému.

Jak však můžete vidět z výše uvedeného diagramu, na vašem linuxovém serveru koexistují dva různé systémy protokolování:rsyslog a systemd-journal.

Koexistence Rsyslog a systemd-journal

Historicky démon byl zodpovědný za shromažďování protokolů z vašich aplikací v systému Linux.

Na mnoha starých distribucích byla tato úloha přiřazena démonovi s názvem syslogd ale v posledních distribucích byl nahrazen démonem rsyslog .

Když systemd nahradil stávající proces init v posledních distribucích, přišel s vlastním způsobem získávání a ukládání protokolů:systemd-journal.

Nyní oba systémy koexistují ale mělo se za to, že jejich koexistence je zpětně kompatibilní se způsoby, jakými bývaly protokoly architektovány v minulosti.

Hlavní rozdíl mezi rsyslog a systemd-journal je v tom, že rsyslog zachová protokoly do souborů protokolu dostupných na adrese /var/log zatímco journald nebude uchovávat data, pokud k tomu není nakonfigurován.

Umístění souborů deníku

Jak jste pochopili z poslední sekce,systemd-journal nástroj také sleduje aktivity protokolování ve vašem systému.

Některé aplikace, které jsou nakonfigurovány jako služby (například Apache HTTP Server), mohou komunikovat přímo se systemd journal.

Systemd journal ukládá protokoly centralizovaným způsobem je /run/log/journal adresář.

Soubory protokolu jsou uloženy jako binární soubory od systemd, takže soubory nebudete moci prohlížet pomocí obvyklých příkazů cat nebo less.

Místo toho chcete použít „journalctl ” za účelem kontroly souborů protokolu vytvořených systemd-journal.

$ journalctl

Existuje mnoho různých možností, které můžete použít s journalctl, ale většinou chcete zůstat u možnosti „-r“ a „-u“.

Chcete-li zobrazit nejnovější záznamy deníku, použijte „journalctl “ pomocí „-r “.

$ journalctl -r

Pokud chcete zobrazit protokoly související s konkrétní službou , použijte volbu „-u“ a zadejte název služby.

$ journalctl -u <service>

Chcete-li například zobrazit protokoly související se službou SSH, spustili byste následující příkaz

$ journalctl -u ssh

Nyní, když jste viděli, jak můžete číst konfigurační soubory, pojďme se podívat, jak můžete snadno nakonfigurovat své protokolovací nástroje.

Konfigurace protokolování Linuxu

Jak jste pravděpodobně pochopili z předchozích částí, protokolování Linuxu je založeno na dvou důležitých komponentách:rsyslog a systemd-journal.

Každý z těchto nástrojů má svůj vlastní konfigurační soubor a v následujících kapitolách uvidíme, jak je lze nakonfigurovat.

Konfigurace systémového deníku

Konfigurační soubory pro žurnál systemd jsou umístěny v /etc/systemd adresář.

$ sudo vi /etc/systemd/journald.conf

Soubor s názvem „journald.conf ” se používá k konfiguraci démona deníku v posledních distribucích.

Jednou z nejdůležitějších možností v konfiguraci deníku je „Úložiště ” parametr.

Jak bylo uvedeno výše, soubory žurnálu se ve vašem systému neuchovávají a při příštím restartu budou ztraceny.

Aby byly vaše žurnálové protokoly trvalé, nezapomeňte upravit tento parametr na „persistent“ a restartovat démona žurnálu systemd.

Chcete-li restartovat démona žurnálu, použijte příkaz „systemctl“ s volbou „restart“ a zadejte název služby.

$ sudo systemctl restart systemd-journald

V důsledku toho budou protokoly žurnálu uloženy do adresáře /var/log/journal vedle souborů protokolu rsyslog.

$ ls -l /var/log/journal

Pokud vás zajímá konfigurace systemd-journal, přečtěte si dokumentaci poskytovanou FreeDesktop.

Konfigurace Rsyslog

Na druhou stranu, službu rsyslog lze nakonfigurovat pomocí /etc/rsyslog.conf konfigurační soubor.

$ sudo vi /etc/rsyslog.conf

Jak bylo uvedeno výše, rsyslog je v podstatě kolektor Syslog, ale hlavní koncept, kterému musíte rozumět, je, že Rsyslog pracuje s moduly.

Jeho modulární architektura poskytuje zásuvné moduly, jako jsou nativní způsoby přenosu protokolů do souboru, shellu, databáze nebo soketů.

Při práci s rsyslogem jsou dvě hlavní sekce, které stojí za vaši pozornost:moduly a pravidla .

Rsyslog Moduly

Ve výchozím nastavení jsou ve vašem systému povoleny dva moduly:imuxsock (poslech na syslog socketu) a imjournal (v podstatě přeposílání protokolů žurnálu do rsyslog).

Poznámka :může být také aktivován imklog (odpovědný za shromažďování protokolů jádra).

Pravidla Rsyslog

Pravidla sekce rsyslog je pravděpodobně nejdůležitější.

Na rsyslog, ale stejné principy můžete najít na starých distribucích se systemd, sekce pravidel definuje, který protokol by měl být uložen do vašeho souborového systému v závislosti na jejich zařízení a prioritě.

Jako příklad si uveďme následující konfigurační soubor rsyslog.

První sloupec popisuje použitá pravidla:na levé straně tečky definujete zařízení a na pravé straně závažnost .

Zástupný znak „*“ znamená, že funguje pro všechny závažnosti.

V důsledku toho, pokud chcete upravit konfiguraci protokolování v pořadí, řekněte například, že vás zajímají pouze konkrétní závažnosti, toto je soubor, který byste upravili.

Nástroje pro monitorování protokolů Linux

V předchozí části jsme viděli, jak můžete snadno konfigurovat své protokolovací nástroje, ale jaké nástroje můžete použít, abyste mohli snadno číst své protokoly Linuxu?

Nejjednodušší způsob, jak číst a sledovat vaše protokoly Linuxu, je použít příkaz tail s možností „-f“ pro následování.

$ tail -f <file>

Chcete-li si například přečíst protokoly zapsané v souboru auth.log, spustili byste následující příkaz.

$ tail -f /var/log/auth.log

Dalším skvělým způsobem čtení linuxových protokolů je použití grafických aplikací, pokud používáte desktopové prostředí Linuxu.

Protokoly ” aplikace je grafická aplikace navržená tak, aby vypisovala aplikační a systémové logy, které mohou být uloženy v různých log souborech (buď v rsyslog nebo journald).

Linuxové protokolovací nástroje

Nyní, když jste viděli, jak lze protokolování nakonfigurovat v systému Linux, pojďme se podívat na několik nástrojů, které můžete použít v případě, že chcete protokolovat zprávy.

Použití loggeru

Protokol obslužný program je pravděpodobně jedním z nejjednodušších protokolovacích klientů.

Logger se používá k odesílání zpráv protokolu do systémového protokolu a lze jej spustit pomocí následující syntaxe.

$ logger <options> <message>

Řekněme například, že chcete odeslat nouzovou zprávu z auth zařízení do vašeho nástroje rsyslog, spustili byste následující příkaz.

$ logger -p auth.emerg "Somebody tried to connect to the system"

Pokud byste si nyní prohlédli soubor /var/log/auth.log, mohli byste najít zprávu, kterou jste právě přihlásili na server rsyslog.

$ tail -n 10 /var/log/auth.log | grep --color connect

Logger je velmi užitečný při použití například ve skriptech Bash.

Co když ale chcete protokolovat soubory pomocí systemd-journal?

Pomocí systemd-cat

Abyste mohli odesílat zprávy do žurnálu systemd, musíte použít příkaz „systemd-cat“ a zadat příkaz, který chcete spustit.

$ systemd-cat <command> <arguments>

Pokud chcete odeslat výstup příkazu „ls -l“ do žurnálu, napište následující příkaz

$ systemd-cat ls -l

Je také možné posílat protokoly „prostého textu“ do žurnálu propojením příkazu echo do obslužného programu systemd-cat.

$ echo "This is a message to journald" | systemd-cat

Použití zdi

Příkaz wall nesouvisí přímo s logovacími nástroji, ale může být docela užitečný pro správu systému Linux.

Příkaz wall se používá k odesílání zpráv všem přihlášeným uživatelům.

$ wall -n <message>

Pokud byste například napsali zprávu všem přihlášeným uživatelům, abyste je informovali o příštím restartu serveru, spustili byste následující příkaz.

$ wall -n "Server reboot in five minutes, close all important applications"

Závěr

V tomto tutoriálu jste se dozvěděli více o protokolování Linuxu :jak je to postaveno a jak různé komponenty protokolování (jmenovitě rsyslog a žurnál ) interagovat spolu.

Dozvěděli jste se více o protokolu Syslog a jak lze nakonfigurovat kolektory, aby zaznamenávaly konkrétní události ve vašem systému.

Logování Linuxu je široké téma a existuje mnoho dalších témat, která můžete na toto téma prozkoumat.

Věděli jste, že můžete vytvořit centralizované systémy protokolování, abyste mohli sledovat protokoly na více počítačích?

Pokud vás zajímá centralizované protokolování, přečtěte si našeho průvodce!

Pokud vás také zajímá administrace systému Linux, máme na webu kompletní sekci věnovanou této problematice, takže se na ni určitě podívejte!


Linux
  1. Kompletní průvodce pro použití AsciiDoc v Linuxu

  2. Instalace jádra Linuxu 5.15 na Ubuntu 20.04 – průvodce krok za krokem?

  3. Instalujte Linux Mint 19 na VirtualBox:Kompletní průvodce

  1. Jak nainstalovat Void Linux:Kompletní průvodce krok za krokem

  2. Kompletní průvodce pro začátečníky k protokolování dockeru

  3. Kompletní průvodce LVM v Linuxu pro začátečníky

  1. Průvodce pro začátečníky oprávněními pro Linux

  2. Grep Regex:Kompletní průvodce

  3. Příkaz Dmesg v Linuxu