GNU/Linux >> Znalost Linux >  >> Linux

Journalctl:Jak číst a upravovat systémové protokoly

Úvod

Systemd zaznamenává všechny linuxové zprávy z jádra a systémových procesů. Příkaz journalctl umožňuje prohlížení a úpravu protokolů systemd, což z něj činí výkonný nástroj pro ladění služeb a procesů.

Tato příručka na příkladech ukazuje, jak číst, ovládat a udržovat systémové protokoly pomocí journalctl.

Předpoklady

  • Přístup do příkazového řádku/okna terminálu.
  • Textový editor (např. nano) pro úpravu konfiguračního souboru.
  • Uživatel s právy sudo (viz, jak přidat uživatele do sudoers).

Co je Systemd?

Systemd je správce služeb a systému Linuxu. Zatímco uživatelé nevyvolávají systemd přímo, manažer obsahuje mnoho nástrojů a démonů, které lze spouštět individuálně pro různé systémové procesy.

Jednou z nejvýkonnějších funkcí systému jsou funkce protokolování. Systemd poskytuje centralizované řešení pro protokolování všech procesů jádra a uživatelů prostřednictvím protokolů známých jako žurnály .

žurnál démon shromažďuje všechny zprávy, které systém vydává, a poté vytváří žurnál bez ohledu na program nebo proces. Démon shromažďuje data ze všech dostupných systémových prostředků a ukládá je v binárním formátu.

Poznámka: Binární formát umožňuje manipulaci s výstupem tak, aby vyhovoval vašim potřebám, a poskytuje větší flexibilitu než tradiční soubory protokolu Linux.

syntaxe journalctl

journalctl příkaz se dotazuje a manipuluje s daty deníku shromážděnými žurnálem démon. Tento nástroj je nezbytný pro systémové administrátory a doplňuje další linuxové protokolovací nástroje a softwarová řešení serveru Syslog.

Syntaxe příkazu je:

journalctl <options> <matches>

Bez jakýchkoli parametrů, journalctl příkaz vypíše celý obsah žurnálu počínaje nejstarším záznamem. <match> je jeden nebo více argumentů oddělených mezerami pro filtrování výstupních polí. Formát je "FIELD=VALUE" .

Možnosti deníku

Níže uvedená tabulka shrnuje běžné journalctl možnosti:

Možnost Popis
-a
--all
Zobrazit všechna pole, včetně netisknutelných znaků.
-f
--follow
Zobrazuje nejnovější záznamy a průběžně tiskne nové.
--no-full Zkrátí výstup.
-e
--pager-end
Přeskočí na konec pageru.
-n <number>
--lines=<number>
Zobrazuje nejnovější položky omezené na <number> událostí. Bez argumentu je výchozí hodnota deset (10).
-o <format>
--output=<format>
Zobrazí položky deníku v požadovaném <format> .
--utc Zobrazuje čas ve formátu UTC (Coordinated Universal Time).
-x
--catalog
Přidá vysvětlující text do zprávy protokolu, pokud je k dispozici.
-q
--quiet
Potlačuje informativní zprávy ve výstupu.
-b [<ID> or <+-offset>]
--boot[=<ID> or <+-offset>]
Zobrazuje protokoly z konkrétního spouštění. Vynecháte-li argument, zobrazí se aktuální zaváděcí protokoly.
-k
--dmesg
Zobrazuje pouze zprávy jádra.
--list-boots Zobrazuje tabulku čísel spouštění a jejich ID.
-g <regex>
--grep=<regex>
Filtruje výstup podle syntaxe regulárního výrazu grep.
-S <date> , -U <date>
--since=<date> , --until=<date>
Zobrazuje záznamy novější nebo starší než zadané datum.
-u <unit|pattern>
--unit=<unit|pattern>
Zobrazit protokoly pro zadanou systémovou jednotku nebo jakoukoli jednotku odpovídající <pattern> .
--disk-usage Vypočítá a zobrazí celkovou velikost deníku na disku.
--vaccuum-size=<size> Omezuje velikost archivovaného souboru deníku na .
--vaccuum-time=<time> Omezí archivované časopisy na novější než
--no-pager Zakáže pager a zobrazí se jako standardní výstup.

Zkontrolujte journalctl manuálovou stránku pomocí příkazu man pro úplný seznam možností.

Jak číst systemd

Následující část popisuje, jak číst protokoly systemd a jak používat různé možnosti zobrazení pro journalctl příkaz. Výstup je pro každý počítač jiný, protože záznamy pro každý systém jsou jedinečné.

Zobrazit všechny záznamy deníku

Chcete-li zobrazit všechny položky deníku, použijte journalctl příkaz bez jakýchkoli voleb:

journalctl

První řádek z výstupu ukazuje časový rozsah dat protokolu. Sloupce obsahují následující údaje v pořadí zleva doprava:

  • Datum a čas.
  • Hostitel.
  • Zdroj protokolu.
  • Zprávu protokolu.

Data deníku obsahují mnoho záznamů. Použijte klávesy se šipkami (podobně jako u příkazu less) pro navigaci.

Opusťte deník stisknutím q .

Zobrazit nejnovější záznamy

journalctl příkaz zobrazuje ve výchozím nastavení nejstarší položky. Chcete-li přejít na konec pageru a zobrazit nejnovější záznamy, použijte -e možnost:

journalctl -e

Výstup zobrazuje posledních 1000 záznamů, aby se ušetřilo místo.

Chcete-li řídit, kolik řádků se zobrazí na výstupu, použijte -n možnost následovaná počtem řádků. Chcete-li například zobrazit pět posledních záznamů deníku, použijte:

journalctl -n 5

-e možnost je zbytečná a předpokládá se -n volba. Pokud toto číslo vynecháte, ve výchozím nastavení se zobrazí deset nejnovějších záznamů.

Omezit protokoly na konkrétní spouštěcí systém

Chcete-li omezit protokoly na aktuální spuštění, použijte -b tag bez parametrů:

journalctl -b

Bez jakýchkoli parametrů příkaz zobrazí aktuální spouštěcí protokoly.

Přejděte na konkrétní boot přidáním parametru offset. Například zobrazit předchozí protokoly spouštění pomocí:

journalctl -b -1

Případně zobrazit nejstarší dostupný protokol spouštění pomocí:

journalctl -b +1

Alternativní způsob, jak zobrazit konkrétní boot, je použít boot ID. Načtěte ID spouštění pomocí --list-boots s:

journalctl --list-boots

První sloupec zobrazuje záporné číslo offsetu, zatímco druhý sloupec načítá ID bootování . Zkopírujte ID a přidejte jej jako parametr do příkazu, například:

journalctl -b cc07702b00884ec59312ece62604cac8

Výstup omezuje zobrazení protokolu na zadanou instanci ID.

Zobrazení protokolů v určitém časovém okně

Filtrujte deník zadáním časového limitu. Dvě možnosti omezení od nebo do zadaného času jsou:

journalctl -S <datetime>
journalctl -U <datetime>

Použijte možnosti jednotlivě nebo je zkombinujte a vytvořte časové okno.

Příkaz očekává jeden z následujících formátů data a času:

  • Konkrétní datum a čas, například 2022-04-30 09:20:00 . Při vynechání parametru času je výchozí hodnota 00:00:00 .
  • Řetězce, například "yesterday" , "today" , "2 hours ago" nebo "now" .

Níže je uveden příklad journalctl příkaz s konkrétním časovým oknem:

journalctl -S 2022-04-02 -U 2022-04-22

Příkaz vytvoří časové okno od 2. dubna 2022 do 22. dubna 2022. Výstup zobrazuje časopisy, které spadají do tohoto časového rámce.

Případně použijte vzor řetězce, například:

journalctl -S "50 minutes ago"

Výstup zobrazuje protokoly od zadaného času až po aktuální čas.

Zobrazení protokolů podle konkrétní systémové jednotky

Filtrujte protokoly podle konkrétní systémové jednotky pomocí -u tag a poskytnutí názvu jednotky. Chcete-li například filtrovat pouze záznamy servisní jednotky Jenkins, spusťte:

journalctl -u jenkins

Výstup zobrazuje záznamy žurnálu související s konkrétní jednotkou systemd (v tomto případě Jenkins).

Poznámka: Chcete-li zobrazit všechny aktuálně aktivní systémové jednotky, použijte:

systemctl list-units

Zobrazit zprávy jádra

Chcete-li zobrazit pouze zprávy protokolu žurnálu jádra, použijte -k možnost:

journalctl -k

Výstup zobrazuje zprávy jádra pouze z aktuálního spouštění s použitím -b štítek. Chcete-li najít protokoly jádra z jiné spouštěcí relace, přidejte -b tag a vyhledejte konkrétní boot.

Sledovat protokoly

Použijte -f nebo --follow pro průběžný tisk nejnovějších protokolů:

journalctl -f

Výstup vytiskne protokoly tak, jak se generují v reálném čase. Tato možnost umožňuje sledování protokolů pomocí journalctl jak přikládají.

Chcete-li prohlížeč opustit, stiskněte CTRL +C .

Filtrovat zprávy protokolu podle priority

Filtrujte zprávy protokolu podle priority pomocí následujícího příkazu:

journalctl -p <number or text priority>

Existují následující priority:

  • Nouzová situace – 0 nebo emerg
  • Upozornění – 1 nebo alert
  • Kritické – 2 nebo crit
  • Chyba – 3 nebo err
  • Upozornění – 4 nebo warning
  • Oznámení – 5 nebo notice
  • Informovat – 6 nebo info
  • Ladění – 7 nebo debug

Nižší číslo označuje zprávy s nejvyšší prioritou. Zadáním jednoúrovňové priority se také zobrazí všechny protokoly s nižší prioritou (kritičtější).

Chcete-li například zobrazit upozornění, použijte:

journalctl -p 1

Nebo alternativně:

journalctl -p alert

Výstup zobrazuje pouze zprávy na úrovni výstrahy a důležitější (pokud existují).

Filtrovat zprávy protokolu podle konkrétního uživatele

Chcete-li zobrazit protokoly uživatele, načtěte ID uživatele (UID) pomocí:

id <user>

Chcete-li načíst ID pro aktuálního uživatele, vynechejte <user> . Výstup zobrazuje hodnotu UID pro daného uživatele. Pomocí pole žurnálu UID můžete filtrovat zprávy protokolu na základě konkrétního uživatele:

journalctl _UID=<UID>

Výstup filtruje protokol žurnálu na základě zadaného ID uživatele.

Poznámka: Úplný seznam polí naleznete na systemd.journal-fields manuálová stránka:

man systemd.journal-fields

Jak upravit systémový protokolový výstup

Základním aspektem práce s protokoly jako správce systému je formátování výstupů protokolů. Systemd nabízí mnoho metod pro manipulaci s vizuálním výsledkem a načtení dat v požadovaném formátu.

Níže jsou uvedeny některé standardní možnosti úprav výstupu a příklady.

Výstup na standardní výstup

journalctl příkaz zobrazí výstup pomocí pageru. Deaktivujte pager pomocí:

journalctl --no-pager

Výsledný výstup je ve standardním výstupu (stdout). Tuto možnost použijte při analýze dat protokolu pomocí nástrojů pro úpravu textu nebo skriptů Bash.

Zkrácení nebo rozšíření výstupu

journalctl pager zobrazuje ve výstupu události rozšířeného deníku. Stisknutím vpravo a klávesy se šipkami doleva pomáhá orientovat se v textu, který neodpovídá velikosti obrazovky.

Pro omezení zkraťte journalctl výstup, použijte --no-full možnost:

journalctl --no-full

Výstup omezuje řádky na velikost obrazovky a přidává tři tečky (... ) pro označení zkráceného zobrazení.

Výstupní formáty

journalctl příkaz nabízí různé možnosti výstupních formátů. Syntaxe výstupního formátu je:

journalctl -o <output format>

Některé z dostupných formátů zahrnují:

  • cat - Zobrazí pouze pole zprávy.
  • export - Výstupy v binárním formátu, vhodném pro zálohování.
  • short - Generuje výstup podobný klasickým souborům Syslog.
  • short-precise - Zobrazuje čas v mikrosekundách.
  • json - Formátuje záznamy deníku do jednořádkových záznamů JSON.
  • json-pretty - Formátuje do struktur JSON ve více řádcích.

Chcete-li například zobrazit pomocí json-pretty formát, použijte:

journalctl -o json-pretty

Různé formáty umožňují používat data protokolu v databázích, souborech skriptů nebo je analyzovat pomocí monitorovacího softwaru.

Údržba protokolu

Ukládání dat protokolu je nákladné a zabírá místo. Níže je uvedeno několik tipů a triků, jak zjistit využití disku, udržovat datové soubory protokolu a uvolnit místo používané starými soubory protokolu.

Zobrazení využití disku

Chcete-li zkontrolovat využití disku žurnálu, spusťte následující příkaz:

journalctl --disk-usage

Výstup zobrazuje celkové obsazené místo na disku podle archivovaných a aktivních žurnálů.

Smazat staré protokoly

Odstraňte staré archivy protokolů nastavením požadovaného limitu velikosti. Příkaz vyžaduje sudo k odstranění souborů /var/log/journal .

Například nastavte velikost na 1M pomocí:

sudo journalctl --vacuum-size=1M

Zadejte heslo sudo a stiskněte Enter . Výstup vytiskne názvy a velikosti souborů a poslední řádek ukazuje množství uvolněné paměti.

Případně odstraňte archivované protokoly podle času. Všechny soubory starší než nastavený čas se odstraní a uvolní se paměť. Chcete-li například odstranit soubory starší než dva měsíce, spusťte:

sudo journalctl --vacuum-time=2months

Časové přípony jsou s , m , h , days , months , weeks nebo years .

Omezit deník

Konfigurační soubor žurnálu umožňuje nastavit limity a řídit, kolik žurnálovaných dat zabírá na disku. Chcete-li soubor upravit, spusťte:

sudo nano /etc/systemd/journald.conf

Soubor obsahuje ukázková konfigurační pole. Následující parametry se zabývají velikostí žurnálu a limity paměti:

  • SystemMaxUse - Maximální trvalé úložiště používané žurnálem.
  • SystemKeepFree - Množství volného místa, které žurnál ponechává při přidávání záznamů do trvalého úložiště.
  • SystemMaxFileSize - Nastavuje maximální velikost souborů deníku v trvalém úložišti.
  • RuntimeMaxUse - Maximální volatilní úložný prostor na disku.
  • RuntimeKeepFree - Množství volného místa pro další použití při zápisu do nestálého úložiště.
  • RuntimeMaxFileSize - Nastavuje maximální velikost souborů žurnálu v nestálém úložišti.

Ovládací prvky velikosti souboru cílí na archivované soubory, aby dosáhly limitů. Odkomentujte řádky a nastavte limity, abyste získali lepší kontrolu nad zdroji skladování a spotřeby stroje.

Závěr

Tato příručka ukázala, jak prohlížet, ovládat a spravovat protokoly žurnálu systemd prostřednictvím příkladů. journalctl command je cenný nástroj, který pomáhá odstraňovat problémy se službami Linuxu a odhalovat systémové chyby.


Linux
  1. Proměnné prostředí Linux:Jak číst a nastavovat na Linux VPS

  2. Jak na to:Správa systémových protokolů pomocí Journalctl

  3. Jak používat journalctl k analýze protokolů v Linuxu

  1. Průvodce pro začátečníky „journalctl“ – Jak používat Journalctl k prohlížení a manipulaci s protokoly Systemd

  2. Jak ladit proces spouštění systemd v CentOS/RHEL 7 a 8

  3. Jak kopírovat a upravovat soubory v prostředí Android?

  1. Jak číst a opravovat zprávy o odmítnutí SELinuxu

  2. Jak otevřít, číst a zapisovat ze sériového portu v C?

  3. Jak povolit systemd na WSL2:Ubuntu 20 a CentOS 8