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