Zobrazenie a analýza denníkov Systemd pomocou Journalctl [Kompletná príručka]


Táto príručka vysvetľuje základy obslužného programu journalctl Systemd a jeho rôznych príkazov. Tieto príkazy môžete použiť na riešenie problémov s protokolmi pracovnej plochy a servera v systéme Linux. Takto môžete použiť journalctl na zobrazenie a analýzu denníkov Systemd s rôznymi príkladmi.

Úvod

Mnohí hovoria, že Systemd nie je dobrý, zaťažuje systém a je to vždy diskutovaná téma. Nemôžete však poprieť, že poskytuje dobrú sadu nástrojov na správu a odstraňovanie problémov so systémom. Predstavte si, že skončíte s nefunkčným systémom bez GUI. Pravdepodobne si pokazil boot a GRUB tiež. V takýchto scenároch alebo vo všeobecnosti môžete zaviesť systém zo systému LIVE, pripojiť svoj oddiel Linux a preskúmať protokoly Systemd, aby ste zistili problém.

Systemd má tri základné komponenty, ako je uvedené nižšie -

  • systemd: Správca systému a služieb pre operačné systémy Linux.
  • systemctl: Príkaz na introspekciu a kontrolu stavu správcu systému a služieb.
  • systemd-analyze: poskytuje štatistiky výkonu pri spúšťaní systému a získava ďalšie informácie o stave a sledovaní od správcu systému a služieb

Okrem týchto troch existujú ďalšie služby, ktoré systemd poskytuje, ako napríklad - journald, logind, networkd atď. V tejto príručke budeme hovoriť o službe journald systemd.

journald - démon systemd journal

Podľa návrhu systemd poskytuje centralizovaný spôsob odovzdávania všetkých protokolov operačného systému z procesov, aplikácií atď. Všetky tieto udalosti protokolovania spracováva démon journald systemd. Démon journald zhromažďuje všetky protokoly z celého operačného systému Linux a ukladá témy ako binárne údaje do súborov.

Výhody centralizovaného zaznamenávania udalostí, systémové problémy ako binárne dáta sú mnohé. Napríklad, pretože systémové protokoly sú uložené ako binárne a nie ako text - môžete prekladať mnohými spôsobmi, ako napríklad text, objekty JSON pre rôzne potreby. Okrem toho je veľmi ľahké sledovať jednu udalosť, pretože protokoly sa ukladajú postupne prostredníctvom manipulácie s dátumom a časom.

Pamätajte, že protokolové súbory, ktoré journald zhromažďuje, sú v tisíckach riadkov a aktualizujú sa pre každú udalosť, každé spustenie. Takže ak máte dlho spustený operačný systém Linux - veľkosť denníkov by mala byť v GB. Keďže záznamy sú v tisícoch, je lepšie filtrovať pomocou základných príkazov, aby ste sa dozvedeli viac o systémových problémoch.

Žurnálovaný konfiguračný súbor

Konfiguračný súbor journald sa nachádza v nižšie uvedenej ceste. Obsahuje rôzne príznaky o tom, ako prebieha protokolovanie. Môžete sa pozrieť na súbor a vykonať potrebné zmeny. Odporúčam však neupravovať tento súbor, pokiaľ neviete, čo robíte.

/etc/systemd/journald.conf

Kde journald ukladá binárne protokolové súbory

Journald ukladá protokoly v binárnom formáte. Sú uložené v adresári pod touto cestou.

/var/log/journal

Napríklad v nižšie uvedenej ceste je adresár, ktorý obsahuje všetky doterajšie systémové protokoly.

cesta k súboru denníka journalctl

Na otvorenie týchto súborov nepoužívajte príkaz cat ani nano alebo vi. Nezobrazili by sa správne.

Na prezeranie a analýzu protokolov Systemd použite journalctl

Základný príkaz journald

Základný príkaz na zobrazenie protokolov pomocou démona žurnálu je -

journalctl

journalctl

Získate tak všetky záznamy denníka vrátane chýb, varovaní atď. zo všetkých aplikácií a procesov. Zobrazuje zoznam s najstarším protokolom v hornej časti a aktuálnymi protokolmi v dolnej časti. Ak chcete listovať riadok po riadku, musíte stláčať ENTER. Na posúvanie môžete použiť aj klávesy PAGE UP a PAGE DOWN. Stlačením q opustíte toto zobrazenie.

Ako zobraziť denníkové záznamy pre časové pásma

Žurnálctl štandardne zobrazuje čas protokolu v aktuálnom systémovom časovom pásme. Vo svojom príkaze však môžete jednoducho zadať časové pásmo na konverziu rovnakého denníka na iné časové pásmo. Ak chcete napríklad zobraziť protokoly v UTC, použite nižšie uvedený príkaz.

journalctl --utc

journalctl -utc

Ako zobraziť iba chyby, varovania atď. v denníkoch denníka

Protokoly, ktoré systém generuje, majú rôzne priority. Niektoré protokoly môžu byť varovaním, ktoré možno ignorovať, alebo môžu byť kritickými chybami. Možno sa budete chcieť pozrieť iba na chyby, nie na upozornenia. To je možné aj pomocou nižšie uvedeného príkazu.

Na zobrazenie núdzových systémových správ použite:

journalctl -p 0

journalctl -p 0

Chybové kódy

0: emergency
1: alerts
2: critical
3: errors
4: warning
5: notice
6: info
7: debug

Keď zadáte kód chyby, zobrazia sa všetky správy z tohto kódu a vyššie. Napríklad, ak zadáte nižšie uvedený príkaz, zobrazia sa všetky správy s prioritou 2, 1 a 0

journalctl -p 2

Ako zobraziť denníky denníka pre konkrétne spustenie

Keď spúšťate príkaz journalctl, zobrazuje informácie z aktuálneho zavádzania, ktoré je z aktuálnej relácie, ktorú spúšťate. Ale je tiež možné zobraziť informácie o minulých topánkach.

Denníky sa aktualizujú pri každom reštarte. Journald sleduje záznamy v rôznych topánkach. Na zobrazenie protokolov pri zavádzaní použite príkaz uvedený nižšie.

journalctl --list-boots

journalctl list-boots

  • Prvé číslo zobrazuje jedinečné číslo žurnálovanej zavádzacej stopy, ktoré môžete použiť v nasledujúcom príkaze na analýzu konkrétneho zavedenia.
  • Druhé číslo je boot ID, ktoré tiež môžete zadať v príkazoch.
  • Nasledujúce dve kombinácie dátumu a času predstavujú trvanie protokolov uložených v príslušnom súbore. Je to super praktické, ak chcete zistiť protokol alebo chybu z konkrétneho dátumu, času.

Ak chcete zobraziť konkrétne číslo zavádzania, zadajte prvé číslo alebo ID zavádzania, ako je uvedené nižšie.

journalctl -b -45
journalctl -b 8bab42c7e82440f886a3f041a7c95b98

journalctl -b 45

Môžete tiež použiť prepínač -x, ktorý môže pridať vysvetlenie systémových chybových správ na displeji. To je v určitých situáciách záchrana života.

journalctl -xb -p 3

journalctl -xb

Ako zobraziť denníky denníka pre konkrétny čas, trvanie dátumu

Journalctl je dostatočne výkonný na to, aby poskytoval „anglický“ argument v samotnom príkaze na manipuláciu s časom a dátumom.

Prepínač --since môžete použiť s kombináciou „včera“, „dnes“, „zajtra“ alebo „teraz“.

Niektoré z príkladov rôznych príkazov nižšie. Môžete si ich upraviť podľa svojich potrieb. Sú samovysvetľujúce. Formát dátumu a času v nižšie uvedených príkazoch je "RRRR-MM-DD HH:MM:SS"

journalctl --since "2020-12-04 06:00:00"
journalctl --since "2020-12-03" --until "2020-12-05 03:00:00"
journalctl --since yesterday
journalctl --since 09:00 --until "1 hour ago"

journalctl -od 09:00 -do

Vyššie uvedené môžete kombinovať aj s prepínačmi úrovne chýb.

Ako zobraziť denníky denníka špecifické pre jadro

Správy Linuxového jadra možno extrahovať aj z denníkov denníkov. Na zobrazenie správ jadra z aktuálneho zavedenia použite iba príkaz nižšie.

journalctl -k

Ako zobraziť denníky denníka pre službu, PID

Špecifické protokoly zo servisnej jednotky systemd môžete odfiltrovať iba z protokolov journald. Ak chcete napríklad zistiť protokoly zo služby NetworkManager, použite príkaz uvedený nižšie.

journalctl -u NetworkManager.service

služba journalctl NetworkManager

Ak nepoznáte názov služby, môžete pomocou nižšie uvedeného príkazu vypísať služby systemd vo vašom systéme.

systemctl list-units --type=service

Ako zobraziť denníky denníka pre používateľa, skupinu

Ak analyzujete protokoly servera, tento príkaz je užitočný tam, kde je prihlásených viacero používateľov. ID používateľa môžete najskôr zistiť pomocou nižšie uvedeného príkazu z mena používateľa. Ak chcete napríklad zistiť ID používateľa „debugpoint“ -

id -u debugpoint

Potom použite toto ID s prepínačom _UID na zobrazenie denníkov generovaných používateľom.

journalctl _UID=1000 --since today

journalctl _UID

Podobne použite prepínač _GID na zistenie toho istého pre skupiny používateľov.

Ako zobraziť denníky denníka pre spustiteľný súbor

Môžete tiež zistiť denníky žurnálu konkrétneho programu alebo spustiteľného súboru. Napríklad, ak chcete zistiť správy gnome-shell, môžete spustiť nižšie uvedený príkaz.

journalctl /usr/bin/gnome-shell --since today

journalctl gnome-shell

Záverečné poznámky

Dúfam, že vám táto príručka pomôže použiť journalctl na zobrazenie analýzy systémových protokolov na vašej pracovnej ploche Linux alebo pri riešení problémov so serverom. Správa žurnálu systemd je mimoriadne výkonná, ak viete, ako používať príkazy, trochu vám uľahčí život počas ladenia. Všetky hlavné mainstreamové distribúcie Linuxu v súčasnosti používajú Systemd. Ubuntu, Debian, Fedora, Arch - všetky používajú systemd pre svoje predvolené ponuky OS. V prípade, že vás zaujímajú distribúcie Linuxu bez systemd, možno budete chcieť vyskúšať MX-Linux, Gentoo, Slackware, Void Linux.

Súvisiace články