A Journalctl egy hatékony megoldás a rendszer naplóinak kezelésére és elemzésére Linux környezetben. Ez az eszköz felhasználható a rendszer tevékenységének figyelemmel kísérésére, hibaelhárításra és valós idejű naplókövetésre, így fontos információkat nyújt a rendszerproblémák hatékony diagnosztizálásához.

Mi az a Journalctl?

journalctl egy hatékony segédprogram az eseménynaplók vagy naplófájlok lekérdezéséhez és megjelenítéséhez Linux alatt. Ez a systemd rendszer- és szolgáltatáskezelő csomag központi eleme, amely számos modern Linux-disztribúcióban megtalálható, például az Ubuntu, a Fedora és az Arch Linux rendszerben. A „journalctl” név a „journal” (napló) és a „ctl” (vezérlés) szavakból áll, utalva arra, hogy a parancs a naplók vezérlésére és elemzésére szolgál.

journalctl egyszerűsíti a systemd-journald által kezelt rendszer naplóhoz való hozzáférést. A rendszer napló egy központi gyűjteménye azoknak az üzeneteknek és eseményeknek, amelyek a Linux rendszer működése során keletkeznek. A hagyományos szövegalapú naplókhoz képest journalctl strukturált és hatékony módszert kínál a naplóadatok valós idejű keresésére, szűrésére és megjelenítésére. Ez segíthet a problémák diagnosztizálásában vagy a rendszer állapotának figyelemmel kísérésében.

Ebből a célból a Journalctl a naplófájlokat bináris formátumban menti, mivel a bináris naplófájlok kompaktabbak és hatékonyabbak, mint szöveges társaik. A naplózott adatok nagy mennyisége miatt ez lehetővé teszi a naplófájlokban szereplő konkrét események vagy információk gyorsabb és hatékonyabb keresését. Strukturált és titkosított jellegüknek köszönhetően a bináris naplófájlok a szöveges naplókhoz képest fokozott biztonságot nyújtanak, mivel formátumuk megnehezíti a naplóadatok manipulálását.

A naplófájlok tárolási helyének beállítása

journalctl segítségével korlátozható és konfigurálható a naplófájlok által a merevlemezen elfoglalt tárhely. Ez a systemd-journald szolgáltatás beállításaiban történik. A konfigurációs beállítások a /etc/systemd/journald.conf fájlban vannak tárolva. Itt a következő bejegyzéseket találja:

  • SystemMaxUse: Korlátozza a rendszerkönyvtárban a naplófájlok tárolási helyét
  • RuntimeMaxUse: Korlátozza a naplófájlok tárolási helyét az ideiglenes könyvtárban

A memória korlátjának beállításához adja hozzá a következő sorokat, vagy módosítsa azokat szükség szerint:

[Journal] 
SystemMaxUse=50M 
RuntimeMaxUse=50M
bash

A példában szereplő értékek (50M) szükség szerint módosíthatók. Más egységeket is használhat, például K (kilobájt), M (megabájt), G (gigabájt) vagy T (terabájt). A konfigurációs fájl szerkesztése után a systemd-journald programot újra kell indítani, hogy a módosítások hatályba lépjenek:

sudo systemctl restart systemd-journald
bash

Ezeket a lépéseket követve a systemd-journald úgy lesz konfigurálva, hogy korlátozza a naplófájlok számára rendelkezésre álló lemezterületet. Győződjön meg arról, hogy a választott korlát elegendő a fontos naplóadatok tárolásához. Ugyanakkor fontos, hogy ne használjon túlzott mennyiségű lemezterületet. Ne feledje, hogy a régebbi naplók automatikusan törlődnek, ha a kiosztott lemezterület korlátja elérte a határértéket.

A lemezterület használatának értékelése

A naplófájlok tárolási helyének beállítása előtt ellenőrizze, hogy a napló jelenleg mennyi tárhelyet foglal el. Ehhez használja --disk-usage:

journalctl --disk-usage
bash

Íme egy példa a kimenet megjelenésére:

Journals take up 8.0M on disk.
bash

Régi naplóbejegyzések törlése

Ha a Journal túl sok memóriát foglal, törölheti a régi naplóbejegyzéseket. Kétféle módon teheti ezt meg:

--vacuum-size segítségével csökkentheti a napló méretét a méret megadásával. Ezzel a módszerrel a régi bejegyzések eltávolításra kerülnek, amíg a napló által elfoglalt teljes tárhely a merevlemezen el nem éri a kívánt méretet.

sudo journalctl --vacuum-size=1G
bash

Alternatív megoldásként a --vacuum-time opcióval beállíthat egy megőrzési időszakot, amelynek letelte után a naplóbejegyzések törlésre kerülnek. Az elmúlt év naplóbejegyzéseinek megőrzéséhez a következő parancsot használhatja:

sudo journalctl --vacuum-time=1years
bash

Mit tud a Journalctl?

journalctl hatékony szűrési lehetőségeket kínál, amelyek segítségével a felhasználók különböző kritériumok alapján válogathatnak a naplóbejegyzések között. Ez a funkció lehetővé teszi a releváns információk célzott keresését, megkönnyítve a problémák gyorsabb azonosítását. Íme néhány gyakran használt journalctl szűrési lehetőség:

Naplók megjelenítése

A journalctl parancs végrehajtásával a jelenlegi rendszer naplóbejegyzései fordított időrendben jelennek meg. journalctl -f vagy journalctl --follow parancsokkal a bejegyzések valós időben jeleníthetők meg. Az új bejegyzések automatikusan megjelennek érkezésük sorrendjében.

Attól függően, hogy a systemd mennyi ideje fut a rendszerén, valószínűleg kezelhetetlen mennyiségű adatot fog látni, amely több tízezer vagy akár több százezer sor hosszú is lehet. Ahhoz, hogy gyorsabban megtalálja, amit keres, különböző Linux parancsok segítségével tovább szűrheti a naplókat.

Hogyan szűrhetünk idő szerint?

journalctl használatával a naplófájlok egy adott időpont szerint szűrhetők, így hatékonyabban kereshetők a releváns információk.

Szűrés a rendszerindítási folyamat szerint

A naplófájlok boot folyamat szerinti szűrése rendkívül hasznosnak bizonyul a rendszeresemények pontos időpontokban vagy boot forgatókönyvek során történő vizsgálatához. Ez a célzott megközelítés egyszerűsíti a problémák diagnosztizálását azáltal, hogy a naplóbejegyzéseket konkrét rendszerállapotokra vagy konfigurációkra összpontosítja.

  1. Jelenlegi rendszerindítás: journalctl -b parancsával az utolsó újraindítás óta összegyűjtött összes naplóbejegyzés megjelenik.
  2. Korábbi indítások: A -b opciót egy számmal követve megjelenítheti egy adott korábbi indítás naplóbejegyzéseit. Például, ha beírja journalctl -b 1, akkor a korábbi indítás jelenik meg.
  3. Az összes elérhető indítási folyamat listája: Az journalctl --list-boots parancs az elérhető indítások listáját jeleníti meg a hozzájuk tartozó azonosítókkal. A kívánt indítási azonosítóval megjelenítheti egy adott indítás naplóit.

Míg egyes Linux-disztribúciókban a korábbi rendszerindítási folyamatok mentése alapértelmezés szerint aktiválva van, más disztribúciókban a felhasználóknak először aktiválniuk kell ezt a funkciót. Ehhez hozzon létre egy könyvtárat, ahová a napló mentésre kerül, sudo mkdir -p /var/log/journal beírásával. Alternatív megoldásként szerkesztheti a napló konfigurációs fájlját sudo nano /etc/systemd/journald.conf segítségével. Ezután állítsa be az Storage= opciót [Journal] alatt persistent értékre a folyamatos naplózás aktiválásához:

. . . 
[Journal] 
Storage=persistent
bash

Szűrés időintervallum szerint

Előfordulhat, hogy egy adott időszakra vonatkozó naplóbejegyzéseket kell megjeleníteni. journalctl --since és --until opciókat kínál, amelyekkel a bejegyzéseket egy adott időszakra lehet korlátozni. Ehhez használja a YYYY-MM-DD HH:MM:SS időformátumot. A 2023. január 1. 12:00 és 2023. január 2. 12:00 közötti összes naplóbejegyzés megjelenítésére szolgáló parancs így néz ki:

journalctl --since "2023-01-01 12:00:00" --until "2023-01-02 12:00:00"
bash

A két parancs kombinálásával rövidebb időtartamra is szűrhetünk:

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

Alternatív megoldásként a formátum egyes részeit is kihagyhatja. Például, ha egy bizonyos időponttól kezdődően az összes bejegyzést meg szeretné jeleníteni:

journalctl --since "2023-11-16 15:25:00"
bash

journalctl relatív értékeket is felismer, például yesterday, today vagy tomorrow. A tegnapi bejegyzések megjelenítéséhez írja be a következőket:

journalctl --since yesterday
bash

Hogyan szűrhetünk üzenetjellemzők szerint?

journalctl használata a naplóbejegyzések fontosság vagy tartalom alapján történő szűrésére szintén rendkívül hasznos, mivel lehetővé teszi a releváns információk keresését és a rendszer naplók bizonyos aspektusaira való összpontosítást. Ez többek között hatékony hibadiagnosztikát, a biztonsági problémák korai felismerését és gyors teljesítményfigyelést tesz lehetővé.

Szűrés prioritás szerint

journalctl üzenetfontossággal rendelkező naplókat a naplóbejegyzések prioritási kategóriáival szűrheti. Ehhez használhatja a prioritás nevét vagy a hozzá tartozó numerikus értéket. Minél alacsonyabb a szám, annál fontosabb az üzenet:

  • 0: emerg (vészhelyzet)
  • 1: riasztás (riadó)
  • 2: kritikus (kritikus)
  • 3: err (hiba)
  • 4: figyelmeztetés (figyelmeztetés)
  • 5: notice (figyelmeztetés)
  • 6: info (információ)
  • 7: debug (hibakeresés)

A -p opcióval szűrhetők a bizonyos prioritású üzenetek. Például a következő parancs csak az „err” (hiba) és annál magasabb prioritású naplóbejegyzéseket jeleníti meg:

journalctl -p err
bash

Szűrés egység szerint

A naplófájlok egységek szerinti szűrése hasznos lehet, ha bizonyos szolgáltatásokra vagy folyamatokra szeretnénk összpontosítani. Ezeket a -u opcióval lehet szűrni. Például az Apache webszerver naplóbejegyzéseinek megjelenítéséhez írja be a következőket:

journalctl -u apache2
bash

A keresés tovább finomítható relatív időértékek használatával. Annak megállapításához, hogy a szolgáltatás már elvégzésre került-e a mai napon, a következőket írhatja be:

journalctl -u apache2 --since today
bash

journalctl különböző egységek adatainak összevonására is képes. Például, ha az Nginx folyamatod egy PHP FPM egységhez van kapcsolva, akkor azok bejegyzései időrendben összevonhatók. Ehhez a következő parancsot használd:

journalctl -u nginx.service -u php-fpm.service --since today-u apache2 --since today
bash

Szűrés folyamat, felhasználó vagy csoport azonosító szerint

A Journalctl a naplóbejegyzéseket folyamat, felhasználó vagy csoport azonosítója szerint szűrheti. Ha ismeri a keresni kívánt folyamat pontos PID-jét, akkor a _PID opcióval szűrheti a bejegyzéseket. Például, ha a PID 8088, akkor a parancs így néz ki:

journalctl _PID=8088
bash

Alternatív megoldásként a _UID vagy _GID szűrőket is használhatja egy adott felhasználó vagy csoport által naplózott összes bejegyzés megjelenítéséhez. Ha például a webszerver neve „www-data”, a felhasználói azonosítót a következőképpen találhatja meg:

id -u www-data
33
bash

A naplóbejegyzéseket az azonosító segítségével lehet szűrni:

journalctl _UID=33 --since today
bash

A -F opcióval meghatározhatja, hogy mely csoportazonosítókhoz lettek bejegyzések létrehozva. Ezzel a Csoportazonosító mezőhöz mentett összes érték megjelenik:

journalctl -F _GID
bash

Íme egy példa a kimenetre:

32
99
102
133
81
84
100
0
124
87
bash

Szűrés komponens szerint

A komponensek szerinti szűrés hasznos lehet, ha konkrét alkalmazásokra, szolgáltatásokra vagy folyamatokra szeretne koncentrálni. A komponens mezőt általában különböző szolgáltatások vagy szoftverkomponensek használják a naplófájlokban található konkrét információk megkülönböztetésére. Ez a szűrés lehetővé teszi a naplóbejegyzések egy adott komponensre, alkalmazásra vagy szolgáltatási egységre való leszűkítését. Például bash végrehajtható fájlt tartalmazó bejegyzések szűréséhez írja be a következő parancsot:

journalctl /usr/bin/bash
bash

Kernel üzenetek megjelenítése

journalctl kernel üzenetek naplóbejegyzéseinek szűrése hatékony módszer a Linux rendszer kernel működésével kapcsolatos információk elemzésére. A kernel üzenetek jelzéseket adhatnak hardverproblémákról, illesztőprogram-ütközésekről vagy egyéb rendszereseményekről.

A dmesg kimenetben található kernel üzenetek szintén kiszűrhetők a naplóból. Ezek a `-k or ``jelzőkkel jeleníthetők meg:

journalctl -k
bash

A rendszer alapértelmezés szerint a jelenlegi indítási folyamat kernel üzeneteit jeleníti meg. A korábban említett indítási kiválasztási jelzők segítségével szűrhetők az alternatív indításból származó üzenetek. Ha például az utolsó öt indítási folyamat kernel üzeneteit szeretné megtekinteni, írja be a következő parancsot:

journalctl -k -b -5
bash

A napló megjelenítésének módosítása a Journalctl-ben

journalctl ban a kijelző testreszabásával a felhasználók pontosabban kereshetnek a naplófájlokban, és gyorsan kivonhatják az információkat. A felhasználók testreszabhatják a kijelzőt úgy, hogy az egy adott időszakra vonatkozó naplóadatokat vagy valós idejű adatokat mutasson, így könnyebben azonosíthatók a rendszerhibák és problémák.

A kimenet rövidítése vagy bővítése

journalctl adatok megjelenítését úgy testreszabhatja, hogy rövidíti vagy kibővíti a kimenetet. Alapértelmezés szerint journalctl a teljes bejegyzést megjeleníti a pagerben, és a képernyő jobb oldalán futtatja őket. A kimenet a --no-full opcióval rövidíthető:

journalctl --no-full
bash

A kijelzőt a -a flag segítségével bővítheti:

journalctl -a
bash

Állítsa journalctl standard kimenetre

journalctl a napló kimenete alapértelmezés szerint egy less hasonló lapozóval jelenik meg. Ez lehetővé teszi a felhasználók számára, hogy a kimenetet fokozatosan tekintsék meg, így könnyebben navigálhatnak a hosszú naplófájlokban. Vannak azonban olyan esetek, amikor a naplók standard kimenetének megjelenítése szükséges. Ehhez a következőket kell tennie:

journalctl --no-pager
bash

Kimeneti formátumok beállítása

journalctl lehetőséget kínál a naplófájlok kimeneti formátumának testreszabására is. Ehhez használhatja a -o opciót a megfelelő formátumazonosítóval. Például, ha a naplóbejegyzéseket JSON formátumban szeretné kinyomtatni, írja be a következő kódot:

journalctl -b -u nginx -o json
bash

Itt van az eredmény:

{ "__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" :
bash

A Journalctl programban a következő formátumok használhatók:

  • cat: Csak az üzenet mezőt jeleníti meg
  • export: Bináris formátum, amely alkalmas átvitelre vagy mentésre
  • json: Standard JSON, egy bejegyzés soronként
  • json-pretty: Olvashatóságot javító JSON formátum
  • json-sse: Csomagolt JSON formátumú kimenet, amely lehetővé teszi a szerver által küldött események hozzáadását
  • short: Standard syslog stílusú kimenet
  • short-iso: ISO-8601 órajel időbélyegek megjelenítésére alkalmas szabványos formátum
  • short-monotonic: Standard formátum monoton időbélyegekkel
  • short-precise: Standard formátum mikroszekundum pontossággal
  • verbose: Az adott bejegyzéshez rendelkezésre álló összes naplómező megjelenítése

Hogyan végzi journalctl az aktív folyamatfigyelést?

journalctl aktív folyamatfigyelés során a tail parancssori programot használják a naplófájlok valós idejű nyomon követésére és a legfrissebb bejegyzések megjelenítésére. Ez megkönnyíti a rendszeresemények valós idejű figyelemmel kísérését és a problémákra való gyors reagálást.

Az aktuális naplófájlok megjelenítése

A -n opcióval meghatározott számú adatrekordot lehet megjeleníteni. Pontosan ugyanúgy működik, mint tail -n. Az utolsó 10 bejegyzés megjelenítéséhez használja a következő parancsot:

journalctl -n
bash

Beállíthatja a bejegyzések számát is, pl. 20-ra:

journalctl -n 20
bash
Ugrás a főmenübe