Ako používať Journalctl na prezeranie a manipuláciu so systémovými protokolmi


Úvod

Niektoré z najpresvedčivejších výhod systemd sú tie, ktoré súvisia s protokolovaním procesov a systémov. Pri použití iných nástrojov sú protokoly zvyčajne rozptýlené po celom systéme, spracovávajú ich rôzni démoni a procesy a môže byť dosť ťažké ich interpretovať, keď zahŕňajú viacero aplikácií. systemd sa pokúša vyriešiť tieto problémy poskytnutím riešenia centralizovanej správy na zaznamenávanie všetkých procesov jadra a používateľského prostredia. Systém, ktorý zhromažďuje a spravuje tieto denníky, je známy ako žurnál.

Žurnál je implementovaný pomocou démona journald, ktorý spracováva všetky správy vytvorené jadrom, initrd, službami atď. V tejto príručke sa budeme zaoberať tým, ako používať journalctl nástroj, ktorý možno použiť na prístup a manipuláciu s údajmi uloženými v žurnále.

Všeobecná myšlienka

Jedným z impulzov za žurnálom systemd je centralizácia správy protokolov bez ohľadu na to, odkiaľ správy pochádzajú. Keďže veľkú časť procesu zavádzania a správy služieb zabezpečuje proces systemd, má zmysel štandardizovať spôsob zhromažďovania protokolov a prístupu k nim. Démon journald zhromažďuje údaje zo všetkých dostupných zdrojov a ukladá ich v binárnom formáte pre jednoduchú a dynamickú manipuláciu.

To nám dáva množstvo významných výhod. Interakciou s údajmi pomocou jediného nástroja môžu správcovia dynamicky zobrazovať údaje protokolu podľa svojich potrieb. Môže to byť také jednoduché, ako prezeranie zavádzacích údajov spred troch spustení alebo kombinovanie záznamov denníka postupne z dvoch súvisiacich služieb na odladenie komunikačného problému.

Ukladanie údajov protokolu v binárnom formáte tiež znamená, že údaje môžu byť zobrazené v ľubovoľných výstupných formátoch v závislosti od toho, čo momentálne potrebujete. Napríklad na správu denných protokolov môžete byť zvyknutí prezerať si protokoly v štandardnom formáte syslog, ale ak sa neskôr rozhodnete zobraziť prerušenia služby v grafe, môžete každú položku vypísať ako objekt JSON a vytvoriť je to spotrebný materiál pre vašu grafickú službu. Keďže údaje sa nezapisujú na disk ako obyčajný text, nie je potrebná žiadna konverzia, keď potrebujete iný formát na požiadanie.

Žurnál systemd možno použiť buď s existujúcou implementáciou syslog, alebo môže nahradiť funkčnosť syslog v závislosti od vašich potrieb. Zatiaľ čo žurnál systemd pokryje väčšinu správcovských potrieb protokolovania, môže tiež dopĺňať existujúce mechanizmy protokolovania. Môžete mať napríklad centralizovaný server syslog, ktorý používate na kompiláciu údajov z viacerých serverov, ale tiež možno budete chcieť vložiť protokoly z viacerých služieb v jednom systéme pomocou systemd denník. Oboje môžete dosiahnuť kombináciou týchto technológií.

Nastavenie systémového času

Jednou z výhod používania binárneho žurnálu na protokolovanie je možnosť ľubovoľného zobrazenia záznamov protokolu v UTC alebo v miestnom čase. V predvolenom nastavení bude systemd zobrazovať výsledky v miestnom čase.

Z tohto dôvodu sa predtým, ako začneme s denníkom, uistíme, že je správne nastavené časové pásmo. Balík systemd v skutočnosti prichádza s nástrojom s názvom timedatectl, ktorý s tým môže pomôcť.

Najprv si pozrite, aké časové pásma sú dostupné pomocou možnosti zoznam-časových pásiem:

  1. timedatectl list-timezones

Zobrazí sa zoznam časových pásiem dostupných vo vašom systéme. Keď nájdete ten, ktorý sa zhoduje s umiestnením vášho servera, môžete ho nastaviť pomocou možnosti set-timezone:

  1. sudo timedatectl set-timezone zone

Aby ste sa uistili, že váš počítač teraz používa správny čas, použite samotný príkaz timedatectl alebo s možnosťou status. Displej bude rovnaký:

  1. timedatectl status
Output
Local time: Fri 2021-07-09 14:44:30 EDT Universal time: Fri 2021-07-09 18:44:30 UTC RTC time: Fri 2021-07-09 18:44:31 Time zone: America/New_York (EDT, -0400) System clock synchronized: yes NTP service: active RTC in local TZ: no

Prvý riadok by mal zobrazovať správny čas.

Základné prezeranie denníkov

Ak chcete zobraziť protokoly, ktoré zhromaždil démon journald, použite príkaz journalctl.

Ak sa použije samostatne, každý záznam denníka, ktorý je v systéme, sa zobrazí na pageri (zvyčajne menej), aby ste si ho mohli prezerať. Najstaršie záznamy budú hore:

  1. journalctl
Output
-- Logs begin at Tue 2015-02-03 21:48:52 UTC, end at Tue 2015-02-03 22:29:38 UTC. -- Feb 03 21:48:52 localhost.localdomain systemd-journal[243]: Runtime journal is using 6.2M (max allowed 49. Feb 03 21:48:52 localhost.localdomain systemd-journal[243]: Runtime journal is using 6.2M (max allowed 49. Feb 03 21:48:52 localhost.localdomain systemd-journald[139]: Received SIGTERM from PID 1 (systemd). Feb 03 21:48:52 localhost.localdomain kernel: audit: type=1404 audit(1423000132.274:2): enforcing=1 old_en Feb 03 21:48:52 localhost.localdomain kernel: SELinux: 2048 avtab hash slots, 104131 rules. Feb 03 21:48:52 localhost.localdomain kernel: SELinux: 2048 avtab hash slots, 104131 rules. Feb 03 21:48:52 localhost.localdomain kernel: input: ImExPS/2 Generic Explorer Mouse as /devices/platform/ Feb 03 21:48:52 localhost.localdomain kernel: SELinux: 8 users, 102 roles, 4976 types, 294 bools, 1 sens, Feb 03 21:48:52 localhost.localdomain kernel: SELinux: 83 classes, 104131 rules . . .

Pravdepodobne budete mať stránky a stránky s údajmi, cez ktoré sa budete môcť posúvať, čo môžu byť desiatky alebo stovky tisíc riadkov, ak je systemd vo vašom systéme dlhší čas. To ukazuje, koľko údajov je dostupných v databáze časopisov.

Formát bude známy tým, ktorí sú zvyknutí na štandardné zaznamenávanie syslog. Toto však v skutočnosti zhromažďuje údaje z väčšieho počtu zdrojov ako tradičné implementácie syslog. Zahŕňa protokoly z procesu skorého zavádzania, jadra, initrd a štandardnej chyby aplikácie a von. Všetky sú dostupné v časopise.

Môžete si všimnúť, že všetky zobrazené časové pečiatky sú miestneho času. Toto je dostupné pre každú položku denníka, keď máme v našom systéme správne nastavený miestny čas. Všetky denníky sa zobrazujú pomocou týchto nových informácií.

Ak chcete zobraziť časové pečiatky v UTC, môžete použiť príznak --utc:

  1. journalctl --utc

Filtrovanie denníka podľa času

Aj keď je prístup k takej veľkej zbierke údajov určite užitočný, také veľké množstvo informácií môže byť ťažké alebo nemožné manuálne skontrolovať a spracovať. Z tohto dôvodu sú jednou z najdôležitejších funkcií journalctl možnosti filtrovania.

Zobrazenie protokolov z aktuálneho spustenia

Najzákladnejšie z nich, ktoré môžete používať denne, je príznak -b. Zobrazí sa vám všetky záznamy denníka, ktoré boli zhromaždené od posledného reštartu.

  1. journalctl -b

To vám pomôže identifikovať a spravovať informácie, ktoré sa týkajú vášho aktuálneho prostredia.

V prípadoch, keď túto funkciu nepoužívate a zobrazujete spustenie viac ako jeden deň, uvidíte, že journalctl vložil riadok, ktorý vyzerá takto, vždy, keď systém zlyhá:

Output
. . . -- Reboot -- . . .

To vám môže pomôcť logicky rozdeliť informácie do bootovacích relácií.

Minulé čižmy

Aj keď bežne budete chcieť zobraziť informácie z aktuálneho spustenia, určite sú chvíle, kedy by boli užitočné aj predchádzajúce spustenia. Žurnál dokáže uložiť informácie z mnohých predchádzajúcich spustení, takže journalctl možno vytvoriť tak, aby informácie zobrazoval jednoducho.

Niektoré distribúcie umožňujú predvolene ukladať informácie o predchádzajúcom spustení, zatiaľ čo iné túto funkciu deaktivujú. Ak chcete povoliť trvalé zavádzanie informácií, môžete vytvoriť adresár na uloženie žurnálu zadaním:

  1. sudo mkdir -p /var/log/journal

Alebo môžete upraviť konfiguračný súbor žurnálu:

  1. sudo nano /etc/systemd/journald.conf

V sekcii [Journal] nastavte možnosť Storage= na \persistent, čím povolíte trvalé zapisovanie do denníka:

. . .
[Journal]
Storage=persistent

Keď je na vašom serveri povolené ukladanie predchádzajúcich zavádzaní, journalctl poskytuje niekoľko príkazov, ktoré vám pomôžu pracovať s bootmi ako jednotkou delenia. Ak chcete zobraziť topánky, o ktorých vie journald, použite možnosť --list-boots s journalctl:

journalctl --list-boots
Output
-2 caf0524a1d394ce0bdbcff75b94444fe Tue 2015-02-03 21:48:52 UTC—Tue 2015-02-03 22:17:00 UTC -1 13883d180dc0420db0abcb5fa26d6198 Tue 2015-02-03 22:17:03 UTC—Tue 2015-02-03 22:19:08 UTC 0 bed718b17a73415fade0e4e7f4bea609 Tue 2015-02-03 22:19:12 UTC—Tue 2015-02-03 23:01:01 UTC

Tým sa zobrazí riadok pre každé spustenie. Prvý stĺpec je offset pre boot, ktorý možno použiť na jednoduchý odkaz na boot pomocou journalctl. Ak potrebujete absolútnu referenciu, ID zavádzania je v druhom stĺpci. Čas, na ktorý sa relácia zavádzania vzťahuje, môžete určiť pomocou dvoch špecifikácií času uvedených na konci.

Na zobrazenie informácií z týchto topánok môžete použiť informácie z prvého alebo druhého stĺpca.

Ak chcete napríklad zobraziť denník z predchádzajúceho zavedenia, použite relatívny ukazovateľ -1 s príznakom -b:

  1. journalctl -b -1

Môžete tiež použiť boot ID na spätné volanie údajov z bootovania:

  1. journalctl -b caf0524a1d394ce0bdbcff75b94444fe

Časové okná

Aj keď je zobrazovanie záznamov v protokole podľa zavádzania neuveriteľne užitočné, často si možno budete chcieť vyžiadať časové intervaly, ktoré nie sú v súlade so zavádzaním systému. To môže platiť najmä pri práci s dlho bežiacimi servermi s výraznou dobou prevádzkyschopnosti.

Môžete filtrovať podľa ľubovoľných časových limitov pomocou možností --since a --until, ktoré obmedzujú zobrazované záznamy na záznamy po alebo pred daným časom.

Časové hodnoty môžu mať rôzne formáty. Pre hodnoty absolútneho času by ste mali použiť nasledujúci formát:

  1. YYYY-MM-DD HH:MM:SS

Napríklad všetky záznamy od 10. januára 2015 o 17:15 môžeme zobraziť zadaním:

  1. journalctl --since "2015-01-10 17:15:00"

Ak komponenty vyššie uvedeného formátu ponecháte vypnuté, použijú sa niektoré predvolené hodnoty. Napríklad, ak dátum vynecháte, bude sa predpokladať aktuálny dátum. Ak zložka času chýba, nahradí sa \00:00:00 (polnoc). Pole sekúnd môže byť tiež vynechané a predvolene je \00:

  1. journalctl --since "2015-01-10" --until "2015-01-11 03:00"

Časopis tiež rozumie niektorým relatívnym hodnotám a pomenovaným skratkám. Môžete napríklad použiť slová \včera, \dnes, \zajtra alebo \teraz. Relatívne časy môžete zadať tak, že pred očíslovanú hodnotu pridáte znak „-“ alebo „+“ alebo použijete slová ako „pred“ v konštrukcii vety.

Ak chcete získať údaje zo včera, môžete zadať:

  1. journalctl --since yesterday

Ak ste dostali hlásenia o prerušení služby od 9:00 do hodiny pred hodinou, môžete zadať:

  1. journalctl --since 09:00 --until "1 hour ago"

Ako vidíte, je pomerne jednoduché definovať flexibilné časové okná na filtrovanie záznamov, ktoré chcete vidieť.

Filtrovanie podľa záujmu o správu

Vyššie sme sa naučili niekoľko spôsobov, ako môžete filtrovať údaje denníka pomocou časových obmedzení. V tejto časti sa budeme zaoberať tým, ako filtrovať podľa toho, o akú službu alebo komponent máte záujem. Žurnál systemd poskytuje rôzne spôsoby, ako to urobiť.

Podľa jednotky

Možno najužitočnejší spôsob filtrovania je podľa jednotky, o ktorú máte záujem. Na filtrovanie týmto spôsobom môžeme použiť možnosť -u.

Ak chcete napríklad zobraziť všetky protokoly z jednotky Nginx v našom systéme, môžete zadať:

  1. journalctl -u nginx.service

Zvyčajne budete pravdepodobne chcieť filtrovať aj podľa času, aby ste zobrazili linky, ktoré vás zaujímajú. Ak chcete napríklad skontrolovať, ako služba dnes funguje, môžete zadať:

  1. journalctl -u nginx.service --since today

Tento typ zamerania sa stáva mimoriadne užitočným, keď využijete schopnosť denníka prekladať záznamy z rôznych jednotiek. Napríklad, ak je váš proces Nginx pripojený k jednotke PHP-FPM na spracovanie dynamického obsahu, môžete zlúčiť položky z oboch v chronologickom poradí zadaním oboch jednotiek:

  1. journalctl -u nginx.service -u php-fpm.service --since today

To môže výrazne uľahčiť zistenie interakcií medzi rôznymi programami a ladiacimi systémami namiesto jednotlivých procesov.

Podľa ID procesu, používateľa alebo skupiny

Niektoré služby vytvárajú rôzne podriadené procesy, aby mohli pracovať. Ak ste našli presné PID procesu, ktorý vás zaujíma, môžete filtrovať aj podľa toho.

Na tento účel môžeme filtrovať zadaním poľa _PID. Napríklad, ak PID, ktoré nás zaujíma, je 8088, mohli by sme zadať:

  1. journalctl _PID=8088

Inokedy možno budete chcieť zobraziť všetky záznamy zaznamenané od konkrétneho používateľa alebo skupiny. Môžete to urobiť pomocou filtrov _UID alebo _GID. Ak napríklad váš webový server beží pod používateľom www-data, ID používateľa nájdete zadaním:

  1. id -u www-data
Output
33

Potom môžete použiť vrátené ID na filtrovanie výsledkov denníka:

  1. journalctl _UID=33 --since today

Žurnál systemd má veľa polí, ktoré možno použiť na filtrovanie. Niektoré z nich sú odovzdávané z procesu, ktorý sa zaznamenáva, a niektoré sú aplikované journald pomocou informácií, ktoré získava zo systému v čase zaznamenávania.

Úvodné podčiarknutie znamená, že pole _PID je druhého typu. Žurnál automaticky zaznamenáva a indexuje PID procesu, ktorý sa zaznamenáva na neskoršie filtrovanie. O všetkých dostupných poliach denníka sa môžete dozvedieť zadaním:

  1. man systemd.journal-fields

O niektorých z nich budeme diskutovať v tejto príručke. Zatiaľ si však prejdeme ešte jednu užitočnú možnosť, ktorá súvisí s filtrovaním podľa týchto polí. Voľba -F sa môže použiť na zobrazenie všetkých dostupných hodnôt pre dané pole denníka.

Ak chcete napríklad zistiť, pre ktoré skupiny ID má žurnál systemd položky, môžete zadať:

  1. journalctl -F _GID
Output
32 99 102 133 81 84 100 0 124 87

Toto vám ukáže všetky hodnoty, ktoré má žurnál uložené pre pole ID skupiny. To vám môže pomôcť pri zostavovaní vašich filtrov.

Podľa cesty komponentu

Môžeme tiež filtrovať zadaním polohy cesty.

Ak cesta vedie k spustiteľnému súboru, journalctl zobrazí všetky položky, ktoré zahŕňajú daný spustiteľný súbor. Ak chcete napríklad nájsť položky, ktoré zahŕňajú spustiteľný súbor bash, môžete zadať:

  1. journalctl /usr/bin/bash

Zvyčajne, ak je pre spustiteľný súbor k dispozícii jednotka, táto metóda je čistejšia a poskytuje lepšie informácie (záznamy z pridružených podriadených procesov atď.). Niekedy to však nie je možné.

Zobrazenie správ jadra

Správy jadra, tie, ktoré sa zvyčajne nachádzajú vo výstupe dmesg, sa dajú získať aj z denníka.

Ak chcete zobraziť iba tieto správy, môžeme do nášho príkazu pridať príznaky -k alebo --dmesg:

  1. journalctl -k

V predvolenom nastavení sa zobrazia správy jadra z aktuálneho zavedenia systému. Alternatívne spustenie môžete určiť pomocou bežných príznakov výberu zavádzania, o ktorých sme hovorili vyššie. Ak chcete napríklad získať správy spred piatich spustení, môžete zadať:

  1. journalctl -k -b -5

Podľa priority

Jedným z filtrov, o ktorý sa správcovia systému často zaujímajú, je priorita správy. Aj keď je často užitočné zaznamenávať informácie na veľmi podrobnej úrovni, pri skutočnom spracovaní dostupných informácií môžu protokoly s nízkou prioritou pôsobiť rušivo a mätúco.

Pomocou journalctl môžete pomocou voľby -p zobraziť iba správy so zadanou prioritou alebo vyššou. To vám umožní odfiltrovať správy s nižšou prioritou.

Ak chcete napríklad zobraziť iba záznamy zaznamenané na úrovni chyby alebo vyššej, môžete zadať:

  1. journalctl -p err -b

Zobrazia sa vám všetky správy označené ako chybové, kritické, výstražné alebo núdzové. Žurnál implementuje štandardné úrovne správ syslog. Môžete použiť názov priority alebo jej zodpovedajúcu číselnú hodnotu. V poradí od najvyššej po najnižšiu prioritu sú to:

  • 0: objaví sa
  • 1: upozornenie
  • 2: krit
  • 3: chyba
  • 4: varovanie
  • 5: upozornenie
  • 6: informácie
  • 7: ladenie

Vyššie uvedené čísla alebo názvy možno použiť zameniteľne s voľbou -p. Výberom priority sa zobrazia správy označené na zadanej úrovni a správy nad ňou.

Úprava zobrazenia denníka

Vyššie sme demonštrovali výber vstupu pomocou filtrovania. Existujú aj iné spôsoby, ako môžeme upraviť výstup. Zobrazenie journalctl môžeme prispôsobiť rôznym potrebám.

Skrátiť alebo rozbaliť výstup

Spôsob, akým journalctl zobrazuje údaje, môžeme upraviť tak, že mu povieme, aby zmenšil alebo zväčšil výstup.

V predvolenom nastavení journalctl zobrazí celý záznam v pageri, čo umožní, aby sa záznamy odvíjali na pravej strane obrazovky. K týmto informáciám sa dostanete stlačením klávesu so šípkou doprava.

Ak chcete radšej skrátiť výstup a vložiť tri bodky tam, kde boli informácie odstránené, môžete použiť možnosť --no-full:

  1. journalctl --no-full
Output
. . . Feb 04 20:54:13 journalme sshd[937]: Failed password for root from 83.234.207.60...h2 Feb 04 20:54:13 journalme sshd[937]: Connection closed by 83.234.207.60 [preauth] Feb 04 20:54:13 journalme sshd[937]: PAM 2 more authentication failures; logname...ot

Môžete tiež ísť opačným smerom a povedať journalctl, aby zobrazil všetky svoje informácie bez ohľadu na to, či obsahuje netlačiteľné znaky. Môžeme to urobiť pomocou príznaku -a:

  1. journalctl -a

Výstup na štandardný výstup

V predvolenom nastavení journalctl zobrazuje výstup v pageri pre ľahšiu spotrebu. Ak však plánujete spracovávať údaje pomocou nástrojov na manipuláciu s textom, pravdepodobne budete chcieť mať možnosť výstupu na štandardný výstup.

Môžete to urobiť pomocou možnosti --no-pager:

  1. journalctl --no-pager

V závislosti od vašich potrieb to možno okamžite preniesť do obslužného programu na spracovanie alebo presmerovať do súboru na disku.

Výstupné formáty

Ak spracovávate zápisy do denníka, ako je uvedené vyššie, s najväčšou pravdepodobnosťou budete mať jednoduchší čas na analýzu údajov, ak budú v spotrebnejšom formáte. Našťastie je možné časopis zobraziť v rôznych formátoch podľa potreby. Môžete to urobiť pomocou voľby -o so špecifikátorom formátu.

Záznamy žurnálu môžete vypísať napríklad v JSON zadaním:

  1. journalctl -b -u nginx -o json
Output
{ "__CURSOR" : "s=13a21661cf4948289c63075db6c25c00;i=116f1;b=81b58db8fd9046ab9f847ddb82a2fa2d;m=19f0daa;t=50e33c33587ae;x=e307daadb4858635", "__REALTIME_TIMESTAMP" : "1422990364739502", "__MONOTONIC_TIMESTAMP" : "27200938", "_BOOT_ID" : "81b58db8fd9046ab9f847ddb82a2fa2d", "PRIORITY" : "6", "_UID" : "0", "_GID" : "0", "_CAP_EFFECTIVE" : "3fffffffff", "_MACHINE_ID" : "752737531a9d1a9c1e3cb52a4ab967ee", "_HOSTNAME" : "desktop", "SYSLOG_FACILITY" : "3", "CODE_FILE" : "src/core/unit.c", "CODE_LINE" : "1402", "CODE_FUNCTION" : "unit_status_log_starting_stopping_reloading", "SYSLOG_IDENTIFIER" : "systemd", "MESSAGE_ID" : "7d4958e842da4a758f6c1cdc7b36dcc5", "_TRANSPORT" : "journal", "_PID" : "1", "_COMM" : "systemd", "_EXE" : "/usr/lib/systemd/systemd", "_CMDLINE" : "/usr/lib/systemd/systemd", "_SYSTEMD_CGROUP" : "/", "UNIT" : "nginx.service", "MESSAGE" : "Starting A high performance web server and a reverse proxy server...", "_SOURCE_REALTIME_TIMESTAMP" : "1422990364737973" } . . .

To je užitočné pri analýze pomocou nástrojov. Môžete použiť formát json-pretty, aby ste lepšie spracovali dátovú štruktúru pred jej odovzdaním spotrebiteľovi JSON:

  1. journalctl -b -u nginx -o json-pretty
Output
{ "__CURSOR" : "s=13a21661cf4948289c63075db6c25c00;i=116f1;b=81b58db8fd9046ab9f847ddb82a2fa2d;m=19f0daa;t=50e33c33587ae;x=e307daadb4858635", "__REALTIME_TIMESTAMP" : "1422990364739502", "__MONOTONIC_TIMESTAMP" : "27200938", "_BOOT_ID" : "81b58db8fd9046ab9f847ddb82a2fa2d", "PRIORITY" : "6", "_UID" : "0", "_GID" : "0", "_CAP_EFFECTIVE" : "3fffffffff", "_MACHINE_ID" : "752737531a9d1a9c1e3cb52a4ab967ee", "_HOSTNAME" : "desktop", "SYSLOG_FACILITY" : "3", "CODE_FILE" : "src/core/unit.c", "CODE_LINE" : "1402", "CODE_FUNCTION" : "unit_status_log_starting_stopping_reloading", "SYSLOG_IDENTIFIER" : "systemd", "MESSAGE_ID" : "7d4958e842da4a758f6c1cdc7b36dcc5", "_TRANSPORT" : "journal", "_PID" : "1", "_COMM" : "systemd", "_EXE" : "/usr/lib/systemd/systemd", "_CMDLINE" : "/usr/lib/systemd/systemd", "_SYSTEMD_CGROUP" : "/", "UNIT" : "nginx.service", "MESSAGE" : "Starting A high performance web server and a reverse proxy server...", "_SOURCE_REALTIME_TIMESTAMP" : "1422990364737973" } . . .

Na zobrazenie je možné použiť nasledujúce formáty:

  • cat: Zobrazí iba samotné pole správy.
  • export: Binárny formát vhodný na prenos alebo zálohovanie.
  • json: Štandardný JSON s jednou položkou na riadok.
  • json-pretty: JSON formátovaný pre lepšiu čitateľnosť pre ľudí
  • json-sse: výstup vo formáte JSON je zabalený, aby bola udalosť pridaná zo servera kompatibilná
  • short: Predvolený výstup v štýle syslog
  • short-iso: Predvolený formát rozšírený tak, aby zobrazoval časové pečiatky nástenných hodín ISO 8601.
  • krátky-monotónny: Predvolený formát s monotónnymi časovými pečiatkami.
  • short-precise: Predvolený formát s presnosťou na mikrosekundu
  • verbose: Zobrazuje každé pole denníka dostupné pre záznam vrátane tých, ktoré sú zvyčajne interne skryté.

Tieto voľby vám umožňujú zobraziť účtovné zápisy v akomkoľvek formáte, ktorý najlepšie vyhovuje vašim aktuálnym potrebám.

Aktívne monitorovanie procesov

Príkaz journalctl napodobňuje, koľko administrátorov používa tail na monitorovanie aktívnej alebo nedávnej aktivity. Táto funkcia je zabudovaná do journalctl, čo vám umožňuje pristupovať k týmto funkciám bez toho, aby ste museli používať iný nástroj.

Zobrazenie nedávnych protokolov

Na zobrazenie nastaveného počtu záznamov môžete použiť voľbu -n, ktorá funguje presne ako tail -n.

V predvolenom nastavení sa zobrazí posledných 10 záznamov:

  1. journalctl -n

Počet položiek, ktoré chcete vidieť, môžete zadať číslom za -n:

  1. journalctl -n 20

Sledovanie denníkov

Ak chcete aktívne sledovať záznamy počas ich zapisovania, môžete použiť príznak -f. Opäť to funguje tak, ako by ste mohli očakávať, ak máte skúsenosti s používaním tail -f:

  1. journalctl -f

Ak chcete ukončiť tento príkaz, napíšte CTRL+C.

Údržba denníka

Možno vás zaujíma cena za ukladanie všetkých údajov, ktoré sme doteraz videli. Okrem toho vás môže zaujímať vyčistenie niektorých starších protokolov a uvoľnenie miesta.

Hľadanie aktuálneho využitia disku

Množstvo miesta, ktoré žurnál momentálne zaberá na disku, môžete zistiť pomocou príznaku ---disk-usage:

  1. journalctl --disk-usage
Output
Archived and active journals take up 8.0M in the file system.

Odstránenie starých denníkov

Ak chcete zmenšiť svoj denník, môžete to urobiť dvoma rôznymi spôsobmi (dostupné s systemd verzie 218 a novšej).

Ak použijete možnosť --vacuum-size, môžete si žurnál zmenšiť uvedením veľkosti. Toto odstráni staré položky, kým celkový priestor žurnálu zaberaný na disku nedosiahne požadovanú veľkosť:

  1. sudo journalctl --vacuum-size=1G

Ďalším spôsobom, ako môžete žurnál zmenšiť, je poskytnúť čas uzávierky pomocou možnosti --vacuum-time. Všetky záznamy po tomto čase budú vymazané. To vám umožní ponechať záznamy, ktoré boli vytvorené po určitom čase.

Ak chcete napríklad zachovať záznamy za posledný rok, môžete zadať:

  1. sudo journalctl --vacuum-time=1years

Obmedzenie rozšírenia denníka

Svoj server môžete nakonfigurovať tak, aby obmedzil, koľko miesta môže žurnál zaberať. Môžete to urobiť úpravou súboru /etc/systemd/journald.conf.

Na obmedzenie rastu denníka možno použiť nasledujúce položky:

  • SystemMaxUse=: určuje maximálny priestor na disku, ktorý môže žurnál využiť v trvalom úložisku.
  • SystemKeepFree=: Určuje množstvo priestoru, ktorý by mal žurnál ponechať voľný pri pridávaní záznamov žurnálu do trvalého úložiska.
  • SystemMaxFileSize=: Ovláda, do akej veľkosti môžu jednotlivé súbory žurnálu narásť do trvalého úložiska pred otočením.
  • RuntimeMaxUse=: určuje maximálny priestor na disku, ktorý možno použiť v nestálom úložisku (v rámci súborového systému /run).
  • RuntimeKeepFree=: určuje množstvo priestoru, ktorý sa má vyhradiť na iné použitie pri zapisovaní údajov do nestáleho úložiska (v rámci súborového systému /run).
  • RuntimeMaxFileSize=: Určuje množstvo miesta, ktoré môže individuálny súbor žurnálu zaberať v nestálom úložisku (v rámci súborového systému /run) pred otočením.

Nastavením týchto hodnôt môžete ovládať, ako journald spotrebuje a zachová miesto na vašom serveri. Majte na pamäti, že SystemMaxFileSize a RuntimeMaxFileSize zacielia na archivované súbory, aby dosiahli stanovené limity. Toto je dôležité mať na pamäti pri interpretácii počtu súborov po vysávaní.

Záver

Ako môžete vidieť, žurnál systemd je neuveriteľne užitočný na zhromažďovanie a správu údajov vášho systému a aplikácií. Väčšina flexibility pochádza z rozsiahlych automaticky zaznamenávaných metadát a centralizovanej povahy protokolu. Príkaz journalctl uľahčuje využitie pokročilých funkcií žurnálu a rozsiahlu analýzu a relačné ladenie rôznych komponentov aplikácie.

Súvisiace články: