Kas yra „journalctl“ ir ką jis gali?
„Journalctl“ – tai veiksmingas sprendimas, skirtas sistemos žurnalų tvarkymui ir analizei „Linux“ aplinkose. Šis įrankis gali būti naudojamas sistemos veiklai stebėti, trikčių šalinimui ir žurnalų sekimui realiuoju laiku, suteikiant svarbią informaciją, padedančią veiksmingai diagnozuoti sistemos problemas.
Kas yra „journalctl“?
journalctl – tai galinga programa, skirta ieškoti ir rodyti įvykių žurnalus arba žurnalo failus „Linux“ sistemoje. Tai pagrindinis sistemos ir paslaugų valdymo paketo „systemd“ komponentas, kuris yra įtrauktas į daugelį šiuolaikinių „Linux“ distribucijų, pavyzdžiui, „Ubuntu“, „Fedora“ ir „Arch Linux“. Pavadinimas „journalctl“ yra sudarytas iš žodžių „journal“ (žurnalas) ir „ctl“ (valdymas), o tai reiškia, kad ši komanda naudojama žurnalams valdyti ir analizuoti.
journalctl palengvina prieigą prie sistemos žurnalo, kurį tvarko systemd-journald. Sistemos žurnalas – tai centralizuota pranešimų ir įvykių, vykstančių Linux sistemos veikimo metu, rinkinys. Skirtingai nuo tradicinių tekstinių žurnalų, journalctl suteikia struktūruotą ir veiksmingą būdą ieškoti, filtruoti ir rodyti žurnalo duomenis realiuoju laiku. Tai gali padėti diagnozuoti problemas arba stebėti sistemos būseną.
Šiuo tikslu „Journalctl“ žurnalo failus saugo dvejetaine forma, nes dvejetainiai žurnalo failai yra kompaktiškesni ir efektyvesni nei jų tekstiniai atitikmenys. Atsižvelgiant į didelį užregistruotų duomenų kiekį, tai leidžia greičiau ir efektyviau ieškoti konkrečių įvykių ar informacijos žurnalo failuose. Dėl savo struktūruoto ir šifruoto pobūdžio dvejetainiai žurnalo failai taip pat užtikrina didesnį saugumą, palyginti su tekstiniais žurnalais, nes jų formatas apsunkina žurnalo duomenų klastojimą.
Kaip nustatyti žurnalo failų saugojimo vietą
journalctl galima naudoti norint apriboti ir konfigūruoti vietą, kurią žurnalo failai užima kietajame diske. Tai atliekama per „systemd-journald“ paslaugos nustatymus. Konfigūracijos nustatymai saugomi faile /etc/systemd/journald.conf. Čia rasite šiuos įrašus:
SystemMaxUse: Apriboja žurnalų saugojimo vietą sistemos katalogeRuntimeMaxUse: Apriboja žurnalų saugojimo vietą laikinojoje kataloge
Norėdami nustatyti atminties ribą, įterpkite šias eilutes arba jas pakeiskite pagal poreikį:
[Journal]
SystemMaxUse=50M
RuntimeMaxUse=50MbashŠio pavyzdžio reikšmės (50M) gali būti keičiamos pagal poreikį. Taip pat galite naudoti kitus vienetus, pavyzdžiui, K (kilobaitai), M (megabaitai), G (gigabaitai) arba T (terabaitai). Pakeitus konfigūracijos failą, reikia iš naujo paleisti „systemd-journald“, kad pakeitimai įsigaliotų:
sudo systemctl restart systemd-journaldbashAtlikę šiuos veiksmus, „systemd-journald“ bus sukonfigūruotas taip, kad būtų apribota žurnalo failams skirta disko vieta. Įsitikinkite, kad pasirinktas limitas yra pakankamas svarbiausiems žurnalo duomenims saugoti. Tuo pačiu svarbu vengti pernelyg didelio disko vietos naudojimo. Atminkite, kad pasiekus skirtos disko vietos limitą, senesni žurnalai bus automatiškai pašalinti.
Įvertinti disko vietos naudojimą
Prieš keisdami žurnalo failų saugojimo vietos dydį, patikrinkite, kiek vietos šiuo metu užima žurnalas. Tam naudokite komandą --disk-usage:
journalctl --disk-usagebashŠtai pavyzdys, kaip atrodo galutinis rezultatas:
Journals take up 8.0M on disk.bashIštrinti senus žurnalo įrašus
Jei žurnalas užima per daug atminties, galite ištrinti senus įrašus. Tai galima padaryti dviem būdais:
Naudokite --vacuum-size, kad sumažintumėte žurnalo dydį, nurodydami norimą dydį. Taikant šį metodą, senieji įrašai bus pašalinami tol, kol bendras žurnalo užimamas vietos kiekis kietajame diske pasieks norimą dydį.
sudo journalctl --vacuum-size=1GbashBe to, žurnalą galima sutrumpinti, nustatant saugojimo laikotarpį naudojant --vacuum-time parinktį. Įrašai, senesni nei nurodytas laikas, bus ištrinti. Norėdami išsaugoti praėjusių metų žurnalo įrašus, galite naudoti šią komandą:
sudo journalctl --vacuum-time=1yearsbashKą gali „Journalctl“?
journalctl siūlo galingas filtravimo funkcijas, leidžiančias vartotojams peržiūrėti žurnalo įrašus pagal įvairius kriterijus. Ši funkcija leidžia tikslingai ieškoti reikiamos informacijos, o tai padeda greičiau nustatyti problemas. Štai keletas dažniausiai naudojamų journalctl filtravimo parinkčių:
Rodyti žurnalus
Vykdžius komandą journalctl, dabartinės sistemos žurnalo įrašai bus rodomi atvirkštine chronologine tvarka. Norėdami rodyti įrašus realiuoju laiku, naudokite journalctl -f arba journalctl --follow. Nauji įrašai rodomi automatiškai pagal jų gavimo tvarką.
Priklausomai nuo to, kiek laiko „systemd“ veikia jūsų sistemoje, greičiausiai bus rodomas milžiniškas duomenų kiekis, kuris gali siekti dešimtis ar šimtus tūkstančių eilučių. Norėdami greičiau rasti tai, ko ieškote, galite dar labiau filtruoti žurnalus naudodami įvairias Linux komandas.
Kaip filtruoti pagal laiką
Naudojant journalctl, žurnalus galima filtruoti pagal konkretų laiko momentą, todėl juose galima efektyviau ieškoti reikiamos informacijos.
Filtruoti pagal paleidimo procesą
Žurnalų filtravimas pagal paleidimo procesą yra nepakeičiamas norint išnagrinėti sistemos įvykius konkrečiu laiku arba įvairiose paleidimo situacijose. Šis tikslinis metodas supaprastina problemų diagnozavimą, nes žurnalo įrašai sutelkiami į konkrečias sistemos būsenas ar konfigūracijas.
- Dabartinis paleidimas: Pasirinkus
journalctl -b, rodomi visi žurnalo įrašai, surinkti nuo paskutinio perkrovimo. - Ankstesni paleidimai: Naudokite parinktį
-b, po kurios įveskite skaičių, kad būtų rodomi žurnalo įrašai, susiję su konkrečiu ankstesniu paleidimu. Pavyzdžiui, jei įvesitejournalctl -b 1, bus rodomas ankstesnis paleidimas. - Visų galimų paleidimų sąrašas: Komanda
journalctl --list-bootsrodo galimų paleidimų sąrašą su atitinkamais ID. Galite naudoti norimą paleidimo ID, kad būtų rodomi konkretaus paleidimo žurnalai.
Nors kai kuriose „Linux“ distribucijose ankstesnių paleidimo procesų išsaugojimas įjungtas pagal numatytuosius nustatymus, kitose distribucijose vartotojams gali tekti jį įjungti patys. Norėdami tai padaryti, sukurkite katalogą, kuriame bus saugomas žurnalas, įvesdami sudo mkdir -p /var/log/journal. Arba galite redaguoti žurnalo konfigūracijos failą, naudodami sudo nano /etc/systemd/journald.conf. Tada nustatykite parinktį Storage=, esančią po [Journal], į persistent, kad įjungtumėte nuolatinį žurnalo įrašymą:
. . .
[Journal]
Storage=persistentbashFiltruoti pagal laiko intervalą
Kartais gali prireikti peržiūrėti žurnalo įrašus už konkretų laikotarpį. journalctl siūlo parinktis --since ir --until, kurias galima naudoti įrašams apriboti iki konkretaus laikotarpio. Tam naudokite laiko formatą YYYY-MM-DD HH:MM:SS. Komanda, skirta peržiūrėti visus žurnalo įrašus nuo 2023 m. sausio 1 d. 12:00 iki 2023 m. sausio 2 d. 12:00, atrodo taip:
journalctl --since "2023-01-01 12:00:00" --until "2023-01-02 12:00:00"bashŠias dvi komandas suderinus taip pat galima filtruoti trumpesnį laikotarpį:
journalctl --since 09:00 --until "1 hour ago"bashArba galite praleisti tam tikras formato dalis. Pavyzdžiui, jei norite rodyti visus įrašus, pradedant nuo tam tikro laiko momento:
journalctl --since "2023-11-16 15:25:00"bashjournalctl taip pat atpažįsta santykines reikšmes, pavyzdžiui, yesterday, today ar tomorrow. Norėdami peržiūrėti vakarykščius įrašus, įveskite šią komandą:
journalctl --since yesterdaybashKaip filtruoti pagal pranešimų charakteristikas
journalctl naudojimas žurnalo įrašams filtruoti pagal svarbą ar turinį taip pat yra labai naudingas, nes leidžia ieškoti reikiamos informacijos ir sutelkti dėmesį į konkrečius sistemos žurnalų aspektus. Tai, be kita ko, užtikrina veiksmingą klaidų diagnostiką, ankstyvą saugumo problemų nustatymą ir greitą našumo stebėjimą.
Filtruoti pagal prioritetą
Norėdami filtruoti žurnalus pagal journalctl svarbą, galite naudoti žurnalo įrašų prioritetų kategorijas. Tam galite naudoti prioritetų pavadinimus arba jiems atitinkančias skaitmenines vertes. Kuo skaičius mažesnis, tuo pranešimas svarbesnis:
- 0: emerg (avarinis)
- 1: alert (pavojaus signalas)
- 2: krit (kritinis)
- 3: klaida (klaida)
- 4: įspėjimas (įspėjimas)
- 5: notice (pastaba)
- 6: info (informacija)
- 7: debug (trikčių šalinimas)
Naudojant parinktį -p galima filtruoti pranešimus, turinčius tam tikrą prioritetą. Pavyzdžiui, ši komanda rodo tik žurnalo įrašus, kurių prioritetas yra „err“ (klaida) ar aukštesnis:
journalctl -p errbashFiltruoti pagal vienetą
Žurnalų filtravimas pagal vienetą yra naudingas norint sutelkti dėmesį į konkrečias paslaugas ar procesus. Juos galima filtruoti naudojant parinktį -u. Pavyzdžiui, norėdami peržiūrėti žurnalo įrašus, susijusius su „Apache“ žiniatinklio serveriu, įveskite šią komandą:
journalctl -u apache2bashPaiešką galima dar labiau patikslinti naudojant santykinius laiko parametrus. Norėdami nustatyti, ar paslauga šiandien jau buvo suteikta, galite įvesti šią informaciją:
journalctl -u apache2 --since todaybashjournalctl gali sujungti duomenų įrašus iš skirtingų vienetų. Pavyzdžiui, jei jūsų „Nginx“ procesas yra susietas su „PHP FPM“ vienetu, jų įrašai gali būti sujungti chronologine tvarka. Tam skirta komanda yra:
journalctl -u nginx.service -u php-fpm.service --since today-u apache2 --since todaybashFiltruoti pagal proceso, vartotojo arba grupės ID
Komanda „journalctl“ gali filtruoti žurnalo įrašus pagal proceso, vartotojo arba grupės ID. Jei žinote tikslią proceso, kurį norite surasti, PID, galite naudoti _PID parinktį įrašams filtruoti. Pavyzdžiui, jei PID yra 8088, komanda atrodytų taip:
journalctl _PID=8088bashBe to, galite naudoti filtrus _UID arba _GID, kad būtų rodomi visi įrašai, kuriuos užregistravo konkretus vartotojas ar grupė. Pavyzdžiui, jei jūsų žiniatinklio serverio vardas yra „www-data“, vartotojo ID galite rasti atlikdami šiuos veiksmus:
id -u www-data
33bashŽurnalo įrašus galima filtruoti pagal ID:
journalctl _UID=33 --since todaybashNorėdami nustatyti, kurioms grupės ID įrašams buvo sukurti įrašai, galite pasinaudoti -F parinktimi. Tai parodys visas reikšmes, kurios buvo išsaugotos lauke „Grupės ID“:
journalctl -F _GIDbashŠtai pavyzdys, kaip atrodys rezultatas:
32
99
102
133
81
84
100
0
124
87bashFiltruoti pagal komponentą
Filtravimas pagal komponentą yra naudingas norint sutelkti dėmesį į konkrečias programas, paslaugas ar procesus. Laukelis „Komponentas“ paprastai naudojamas įvairiose paslaugose ar programinės įrangos komponentuose, siekiant išskirti konkrečią informaciją žurnaluose. Šis filtravimas leidžia susiaurinti žurnalo įrašų paiešką iki konkretaus komponento, programos ar paslaugos vieneto. Pavyzdžiui, norėdami filtruoti įrašus, kuriuose yra vykdomasis failas bash, įveskite šią komandą:
journalctl /usr/bin/bashbashRodyti branduolio pranešimus
Žurnalo įrašų filtravimas pagal branduolio pranešimus su journalctl yra veiksmingas būdas analizuoti informaciją apie branduolio veikimą Linux sistemoje. Branduolio pranešimai gali signalizuoti apie aparatinės įrangos problemas, tvarkyklių konfliktus ar kitus sistemos įvykius.
Branduolio pranešimus, kuriuos galima rasti dmesg išvestyje, taip pat galima filtruoti iš žurnalo. Juos galima peržiūrėti naudojant komandą `-k or ``:
journalctl -kbashPagal numatytuosius nustatymus rodomi dabartinio paleidimo proceso branduolio pranešimai. Naudodami anksčiau minėtus paleidimo pasirinkimo žymes, galite filtruoti pranešimus iš alternatyvaus paleidimo. Jei, pavyzdžiui, norite peržiūrėti paskutinių penkių paleidimo procesų branduolio pranešimus, įveskite:
journalctl -k -b -5bashŽurnalo rodymo nustatymų keitimas „Journalctl“
Pritaikius ekrano rodymą journalctl versijoje, vartotojai gali tiksliau ieškoti įvykių žurnaluose ir greitai išgauti reikiamą informaciją. Vartotojai gali pritaikyti ekrano rodymą taip, kad būtų rodomi įvykių žurnalo duomenys už konkretų laikotarpį arba realiuoju laiku, o tai padeda greitai nustatyti sistemos klaidas ir problemas.
Išvesties sutrumpinimas arba išplėtimas
Galite pritaikyti, kaip journalctl rodo duomenis, sutrumpindami arba išplėsdami išvestį. Pagal numatytuosius nustatymus journalctl rodo visą įrašą pageryje ir juos išdėsto ekrano dešinėje pusėje. Išvestį galima sutrumpinti naudojant --no-full parinktį:
journalctl --no-fullbashEkraną galite išplėsti naudodami žymę -a “:
journalctl -abashNustatyti journalctl į standartinį išvesties srautą
journalctl versijoje žurnalo išvestis pagal numatytuosius nustatymus rodoma naudojant pagerį, pvz., less. Tai leidžia vartotojams peržiūrėti išvestį dalimis, todėl jiems lengviau naršyti po ilgus žurnalo failus. Tačiau kartais būtina rodyti standartinę žurnalo išvestį. Štai kaip tai padaryti:
journalctl --no-pagerbashNustatyti išvesties formatus
journalctl taip pat siūlo galimybes pritaikyti žurnalų išvesties formatą. Tam galite naudoti -o parinktį su atitinkamu formato identifikatoriumi. Pavyzdžiui, norėdami išvesti žurnalo įrašus JSON formatu, įveskite šį kodą:
journalctl -b -u nginx -o jsonbashŠtai rezultatas:
{ "__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„Journalctl“ galima naudoti šiuos formatus:
- cat: rodo tik pranešimo lauką
- eksportas: Dvejetainis formatas, tinkamas perdavimui ar išsaugojimui
- json: Standartinis JSON, po vieną įrašą eilutėje
- json-pretty: JSON, suformatuotas geresniam skaitymui
- json-sse: suformatuotas išvesties JSON, leidžiantis pridėti serverio siunčiamus įvykius
- short: Standartinis syslog stiliaus išvesties formatas
- short-iso: Standartinis formatas, skirtas rodyti ISO-8601 realaus laiko žymes
- short-monotonic: Standartinis formatas su monotoniškais laiko žymėmis
- short-precise: Standartinis formatas su mikrosekundžių tikslumu
- verbose: Rodo kiekvieną žurnalo lauką, kuris yra prieinamas atitinkamam įrašui
Kaip journalctl vykdo aktyvią procesų stebėseną?
Atliekant aktyvų procesų stebėjimą naudojant journalctl, komandinės eilutės programa tail naudojama žurnalams stebėti realiuoju laiku ir rodyti naujausius įrašus. Tai leidžia lengviau stebėti sistemos įvykius realiuoju laiku ir greitai reaguoti į problemas.
Kaip peržiūrėti esamus žurnalus
Parinktį -n galima naudoti norint parodyti tam tikrą duomenų įrašų skaičių. Ji veikia lygiai taip pat kaip ir tail -n“. Norėdami parodyti paskutinius 10 įrašų, naudokite šią komandą:
journalctl -nbashTaip pat galite nustatyti įrašų skaičių, pvz., iki 20:
journalctl -n 20bash