GNU/Linux >> Znalost Linux >  >> Linux

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

Úvod

V některých novějších distribucích Linuxu byly „init.d“ nebo „rsyslogd“ nahrazeny programem nazvaným JournalCTL. Dříve se protokoly obvykle nacházely v konkrétním umístění pro každý samostatný soubor protokolu, takže nebylo snadné je najít, spravovat a manipulovat s nimi. Systemd usnadnil přístup k těmto souborům protokolů tím, že je centralizoval a všechny procesy jádra a uživatelů zaznamenával do jednoho „žurnálu“. Journalctl je nejnovější verze tohoto, což usnadňuje správu těchto souborů.

V této příručce vysvětlíme základy journalctl a také stručný přehled navrhovaných použití programu.

Předpoklady

Musíte mít distribuci Linuxu s journalctl jako program pro správu systémových protokolů, například CentOS 7.  Pokud nemáte server, zvažte super rychlý virtuální privátní server SSD od Atlantic.Net.

Jak spravovat systémové protokoly pomocí Journalctl

Nastavení systémového času

Než začnete s čímkoli jiným, důrazně se doporučuje nastavit systémový čas. Protože systemd se zapisuje jako binární žurnál, můžete své záznamy protokolovat buď v UTC nebo v místním (serverovém) čase. Ve výchozím nastavení systemd zobrazuje výsledky v místním čase. Aby nedošlo k pozdějším nejasnostem, zkontrolujeme, zda je čas nastaven správně. Systemd má vestavěný program nazvaný „timedatectl“, který je pro tento účel.

Nejprve zkontrolujte, zda je vaše časové pásmo dostupné v možnostech zóny:

timedatectl list-timezones

Zobrazí se všechna dostupná časová pásma na vašem serveru. Po nalezení toho, který odpovídá vaší poloze (nebo umístění vašeho serveru), jej nastavte:

sudo timedatectl set-timezone (zone)

Poté zkontrolujeme, zda se to správně projevilo:

timedatectl status

Na prvním řádku se zobrazí správný čas.

Řízení přístupu

usermod -a -G adm username

Nahraďte „username“ jménem uživatele. Tento uživatel získá stejný přístup k journalctl jako uživatel root. Tento ovládací prvek však funguje pouze v případě, že je povoleno trvalé úložiště.

Základní prohlížení protokolu

V tomto okamžiku lze zadat několik příkazů. Základní příkaz zobrazí výstup všech obecných záznamů, přičemž nejdříve zobrazí nejstarší záznamy:

journalctl

Tím získáte všechny soubory protokolu, ale získáte všechny soubory protokolu. To znamená, že pokud budete mít příležitost, budete mít zobrazeny stovky nebo tisíce nebo více řádků protokolu. Je to podobné tomu, co byste viděli, kdybyste se podívali do „/var/log/messages/“ v předchozích verzích.

Aktuální spouštěcí relace

Máme také příkaz, který zobrazí protokoly, které se vyskytly pouze při aktuálním spouštění.

journalctl -b

To znamená, že žádné informace z předchozích relací spouštění nebudou zobrazeny.

Předchozí relace spouštění

Pokud potřebujete zkontrolovat protokoly předchozích spouštěcích relací, existuje také možnost. Některé verze ve výchozím nastavení umožňují protokolování předchozích relací spouštění. Abyste zajistili, že váš je nastaven na protokolování, doporučujeme tuto funkci povolit. To lze provést vytvořením adresáře

sudo mkdir -p /var/log/journal

nebo přímou úpravou konfiguračního souboru žurnálu

sudo nano /etc/systemd/journald.conf

V souboru pod [Journal] nastavte volbu „Storage=“ na „persistent“, aby bylo povoleno trvalé protokolování. Uložte a ukončete tento soubor a nastavení se projeví v budoucnu.
Po uložení zobrazíte dostupné možnosti pro spouštěcí soubory ke kontrole

journalctl --list-boots

Uvidíte řádek pro každou dostupnou zaváděcí relaci. ID posunu je prvním sloupcem, zatímco ID spouštění je druhým sloupcem. K zadání příkazu můžete použít buď ID offsetu, nebo boot ID:

journalctl -b (offset/boot ID)

Konkrétní časový rámec

Místo toho si můžete přát zkontrolovat soubory protokolu podle zadaného časového rámce, který může zahrnovat několik spouštěcích relací nebo jej omezit na určité časové okno v rámci jedné spouštěcí relace. Lze zadat omezení –od a –dokud, která zobrazí pouze události po a před konkrétním protokolem.
Pro všechny časové hodnoty by měl být použit následující formát:

YYYY-MM-DD HH:MM:SS

Pokud si chcete prohlédnout události, které se staly od 10:00 5. července 2015, můžeme toho dosáhnout následujícím příkazem:

journalctl --since “2015-07-05 10:00:00”

Mějte prosím na paměti, že tyto údaje budou založeny buď na čase serveru nebo UTC, v závislosti na tom, co jste nastavili ve svých preferencích dříve v tomto tutoriálu.
Pokud je datum vynecháno, deník bude předpokládat dnešní datum. Pokud je čas vynechán, předpokládá se půlnoc (00:00:00). Také nemusíte zahrnout pole sekund, v takovém případě se bude předpokládat „00“ sekund.

Nechybí ani přátelské příkazy, např.

journalctl --since yesterday

a

journalctl --since 02:00 --until “3 hours ago”

Možnosti filtrování

Podle jednotek

Nejužitečnější dostupnou funkcí je filtrování jednotek. Filtrování -u dává možnost zobrazit pouze konkrétní „jednotku“, což vám umožňuje vidět věci, které se staly pouze v souvislosti s určitým programem nebo systémy. Jako vždy můžete pomocí tohoto přidat filtry pro časové rámce.

journalctl -u nginx.service

nebo

journalctl -u nginx.service --since yesterday

Podle ID procesu, uživatele nebo skupiny

Pokud jste již zkontrolovali dostatek informací k získání PID procesu, který hledáte, můžete je místo toho filtrovat. Toto se spouští s _PID

journalctl _PID=4345

Podle polohy

K dispozici je také filtrování na základě umístění cesty. Pokud vybíráte cestu ke spustitelnému souboru, journalctl zobrazí všechny položky související s tímto spustitelným souborem. Pokud například hledáte protokoly obsahující bash,

journalctl /usr/bin/bash

Tato metoda obvykle zahrnuje podrobnější informace o procesech a podřízených procesech, jsou-li k dispozici. Někdy to však není možné.

Zprávy jádra

Zprávy jádra by se obvykle nacházely ve výstupu dmesg, ale můžeme je také získat pomocí journalctl. To by bylo s filtrem -k nebo -dmesg.

journalctl -k

Zobrazí se zprávy jádra, které se vyskytly během aktuální relace spouštění. Opět to lze vždy upravit pomocí výše uvedených možností. Pokud jste si chtěli prohlédnout zprávy jádra z předchozí relace zavádění,

journalctl -k -b -1

Priorita

Priorita je často preferovanou metodou kontroly protokolů. Journalctl lze použít k zobrazení zpráv pouze nad určitou úrovní priority. Níže jsou uvedeny úrovně priority:

0:objevit se

1:upozornění

2:krit

3:chyba

4:varování

5:upozornění

6:info

7:ladění

Můžete použít buď název úrovně priority, nebo odpovídající číslo. Pokud chcete vidět pouze protokoly s prioritou varování nebo vyšší, můžete zadat příkaz

journalctl -p warning -b

nebo

journalctl -p 4 -b

Zadané pole

Chcete-li zobrazit seznam časopisů, které se vyskytují v určitém poli, použijte modifikátor -F

journal -F fieldname

kde „fieldname“ je nahrazeno polem, které hledáte. Máte také možnost zobrazit pouze záznamy protokolu, které vyhovují konkrétní podmínce

journalctl fieldname=value

Zkrátit nebo rozšířit výstup

Journalctl lze upravit tak, aby zmenšil nebo rozšířil zobrazení výstupních dat. Ve výchozím nastavení journalctl zobrazí celý záznam a vyžaduje, abyste se pomocí šipek posouvali doprava. Místo toho můžeme tento výstup zkrátit, což zobrazí tři tečky pro odstraněné informace s možností –no-full.

journalctl --no-full

Alternativně můžete časopisu journalctl sdělit, aby zobrazil všechny informace, bez ohledu na to, zda znak považuje za netisknutelný. To se provádí pomocí modifikátoru -a.

journalctl -a

Změnit na standardní výstup

journalctl --no-pager

Výstupní formáty

Pokud pro záznamy deníku používáte textový editor, jak jsme probrali výše, deník lze podle potřeby prohlížet v jiných formátech. To lze provést pomocí modifikátoru -o a specifikátoru formátu.

Můžete si například přečíst deník v JSON zadáním

journalctl -b -u nginx -o json

Pro možnosti zobrazení můžete použít následující:

kočka — Zobrazí samotné pole zprávy

exportovat — Binární formát pro přenos nebo zálohování

json — standardní JSON, jedna položka na řádek

json-pretty — Formát JSON, ale je snáze čitelný

json-sso — Formát JSON zalomený, aby byla událost add server-send kompatibilní

krátké — Výchozí výstup syslog

krátké iso — Výchozí výstup, který zobrazuje časová razítka nástěnných hodin ISO 8601

krátký-monotónní — Výchozí výstup s monotónním časovým razítkem

krátká-přesná — Výchozí výstup s mikrosekundovým časovým razítkem

podrobné — Zobrazí všechna pole deníku pro daný záznam, včetně skrytých

Aktivní monitorování procesu

Journalctl napodobuje, kteří správci používají tail pro monitorování. To bylo zabudováno do journalctl umožňující přístup k těmto funkcím, aniž byste museli zapojovat další nástroje.

Zobrazení posledních protokolů

Volbu -n lze použít k zobrazení určitého počtu záznamů. Bez zahrnutí upravujícího čísla se ve výchozím nastavení zobrazí deset (10) výsledků.

journalctl -n

Místo toho můžete určit, kolik položek chcete vidět

journalctl -n 20

Sledování protokolů

Modifikátor -f lze použít ke sledování protokolů během jejich zápisu.

journalctl -f

Údržba deníku

Existuje několik příkazů, které lze použít k vyčištění některých starších protokolů kvůli volnému prostoru na pevném disku.

Nejprve můžete zjistit, kolik místa zabírají žurnály pomocí modifikátoru –disk-usage.

journalctl --disk-usage

Existují dva různé způsoby, jak to vyčistit. První je zmenšit deník na základě velikosti. Tím se odstraní záznamy od nejstarších po nejnovější, dokud není dosaženo požadovaného místa na disku.

sudo journalctl --vacuum-size-2G

Alternativní způsob, jak zmenšit deník, je k určitému datu. Volba –vacuum-time vymaže všechny záznamy do určitého data.

Chcete-li zachovat záznamy pouze z minulého roku, můžete zadat

sudo journalctl --vacuum-time-1years

Omezení velikosti deníku

Máte možnost nastavit limity na množství vesmírných žurnálů, které mohou zabrat.

nano /etc/systemd/journald.conf

Tyto změny lze provést pomocí kterékoli z následujících úprav pole

SystemMaxUse= Maximální místo na disku

SystemKeepFree= Množství místa, které by mělo zůstat k dispozici

SystemMaxFileSize= Jak velké mohou být jednotlivé soubory deníku před otočením

RuntimeMaxUse= Maximální místo na disku, které lze použít v nestálém úložišti  (/run filesystem)

RuntimeKeepFree= Množství místa, které by mělo být ponecháno dostupné pro ostatní v nestálém úložišti (/run filesystem)

RuntimeMaxFilesize= Jak velký může být jednotlivý soubor žurnálu v nestálém úložišti (v rámci souborového systému /run) před otočením

Děkujeme, že jste postupovali podle tohoto návodu. Vraťte se sem, kde najdete další aktualizace a zvažte vedoucí hostitelský server VPS na trhu od Atlantic.Net.


Linux
  1. Jak používat Ansible k nastavení monitorování systému pomocí Prometheus

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

  3. Jak získat systémové statistiky pomocí node.js

  1. Jak vymazat Journalctl?

  2. Jak sledovat protokoly ověřování systému v Ubuntu

  3. Jak vytvořit systémový oddíl EFI?

  1. Jak duální boot Kali Linux a Windows 10

  2. Jak monitorovat systém Linux pomocí příkazu Glances

  3. Jak duální spouštění Linuxu Mint 20 s Windows 10