Mi az a Journalctl és mire képes?
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étRuntimeMaxUse: 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=50MbashA 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-journaldbashEzeket 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-usagebashÍme egy példa a kimenet megjelenésére:
Journals take up 8.0M on disk.bashRé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=1GbashAlternatí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=1yearsbashMit 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.
- Jelenlegi rendszerindítás:
journalctl -bparancsával az utolsó újraindítás óta összegyűjtött összes naplóbejegyzés megjelenik. - Korábbi indítások: A
-bopciót egy számmal követve megjelenítheti egy adott korábbi indítás naplóbejegyzéseit. Például, ha beírjajournalctl -b 1, akkor a korábbi indítás jelenik meg. - Az összes elérhető indítási folyamat listája: Az
journalctl --list-bootsparancs 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=persistentbashSzű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"bashA két parancs kombinálásával rövidebb időtartamra is szűrhetünk:
journalctl --since 09:00 --until "1 hour ago"bashAlternatí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"bashjournalctl 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 yesterdaybashHogyan 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 errbashSzű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 apache2bashA 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 todaybashjournalctl 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 todaybashSzű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=8088bashAlternatí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
33bashA naplóbejegyzéseket az azonosító segítségével lehet szűrni:
journalctl _UID=33 --since todaybashA -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 _GIDbashÍme egy példa a kimenetre:
32
99
102
133
81
84
100
0
124
87bashSzű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/bashbashKernel ü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 -kbashA 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 -5bashA 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-fullbashA kijelzőt a -a flag segítségével bővítheti:
journalctl -abashÁ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-pagerbashKimeneti 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 jsonbashItt 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" :bashA 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 -nbashBeállíthatja a bejegyzések számát is, pl. 20-ra:
journalctl -n 20bash