„Jour­nalctl“ ir efektīvs ri­si­nā­jums sistēmas žurnālu pār­val­dī­bai un analīzei Linux vidē. Šo rīku var izmantot sistēmas darbību uz­rau­dzī­bai, problēmu no­vēr­ša­nai un žurnālu iz­se­ko­ša­nai reālajā laikā, sniedzot būtisku in­for­mā­ci­ju sistēmas problēmu efektīvai diag­nos­ti­cē­ša­nai.

Kas ir „jour­nalctl“?

journalctl ir jaudīgs rīks notikumu žurnālu vai žurnālu failu pār­lū­ko­ša­nai un pa­rā­dī­ša­nai Linux vidē. Tas ir sistēmas un pa­kal­po­ju­mu pār­val­dī­bas pakotnes „systemd“ galvenais kom­po­nents, kas ir iekļauts daudzās mūs­die­nī­gās Linux dis­tri­bū­ci­jās, piemēram, Ubuntu, Fedora un Arch Linux. Nosaukums „jour­nalctl“ ir vārdu „journal“ (žurnāls) un „ctl“ (kontrole) ap­vie­no­jums, kas norāda uz to, ka šo komandu izmanto žurnālu pār­val­dī­bai un analīzei.

journalctl atvieglo piekļuvi sistēmas žurnālam, ko pārvalda systemd-journald. Sistēmas žurnāls ir cen­tra­li­zēts ziņojumu un notikumu ap­ko­po­jums, kas rodas Linux sistēmas darbības laikā. Atšķirībā no tra­di­cio­nā­la­jiem teksta žurnāliem, journalctl nodrošina struk­tu­rē­tu un efektīvu veidu, kā reāllaikā meklēt, filtrēt un parādīt žurnāla datus. Tas var palīdzēt diag­nos­ti­cēt problēmas vai uzraudzīt sistēmas stāvokli.

Šim nolūkam „Jour­nalctl“ saglabā žurnāla failus binārā formātā, jo binārie žurnāla faili ir kompakti un efek­tī­vā­ki nekā to teksta formāta ek­vi­va­len­ti. Ņemot vērā lielo re­ģis­trē­to datu apjomu, tas ļauj ātrāk un efektīvāk meklēt konkrētus notikumus vai in­for­mā­ci­ju žurnāla failos. Pa­tei­co­ties struk­tu­rē­ta­jai un šif­rē­ta­jai formai, binārie žurnāla faili nodrošina arī augstāku drošības līmeni sa­lī­dzi­nā­ju­mā ar teksta formāta žurnāliem, jo to formāts apgrūtina ma­ni­pu­lā­ci­jas ar žurnāla datiem.

Kā pielāgot žurnālu failu uz­gla­bā­ša­nas vietu

journalctl var izmantot, lai ie­ro­be­žo­tu un kon­fi­gu­rē­tu vietu, ko žurnālu faili aizņem cietajā diskā. To dara, iz­man­to­jot pa­kal­po­ju­ma „systemd-journald“ ie­sta­tī­ju­mus. Kon­fi­gu­rā­ci­jas ie­sta­tī­ju­mi tiek saglabāti failā /etc/systemd/journald.conf. Šeit at­ra­dī­siet šādus ierakstus:

  • SystemMaxUse: Ierobežo žurnālu uz­gla­bā­ša­nas vietu sistēmas di­rek­to­ri­jā
  • RuntimeMaxUse: Ierobežo žurnālu uz­gla­bā­ša­nas vietu pagaidu di­rek­to­ri­jā

Lai iestatītu atmiņas limitu, pie­vie­no­jiet šādas rindas vai mainiet tās at­bil­sto­ši va­ja­dzī­bām:

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

Šajā piemērā norādītās vērtības (50M) var mainīt at­bil­sto­ši va­ja­dzī­bām. Var izmantot arī citas vienības, piemēram, K (kilobaiti), M (megabaiti), G (gigabaiti) vai T (terabaiti). Pēc kon­fi­gu­rā­ci­jas faila re­di­ģē­ša­nas ir jā­pār­star­tē systemd-journald, lai izmaiņas stātos spēkā:

sudo systemctl restart systemd-journald
bash

Veicot šos soļus, tiks kon­fi­gu­rēts systemd-journald, lai ie­ro­be­žo­tu diska vietu žurnālu failiem. Pār­lie­ci­nie­ties, ka iz­vē­lē­tais limits ir pie­tie­kams, lai uzglabātu būtiskos žurnāla datus. Tajā pašā laikā ir svarīgi iz­vai­rī­ties no pārmērīga diska vietas patēriņa. Ņemiet vērā, ka vecākie žurnāli tiek au­to­mā­tis­ki dzēsti, tiklīdz ir sasniegts pie­šķir­tās diska vietas limits.

Novērtēt diska vietas iz­man­to­ju­mu

Pirms mainīt žurnāla failu uz­gla­bā­ša­nas vietas apjomu, pār­bau­diet, cik daudz vietas pašlaik aizņem žurnāls. Lai to izdarītu, iz­man­to­jiet --disk-usage:

journalctl --disk-usage
bash

Šeit ir piemērs, kā izskatās izvade:

Journals take up 8.0M on disk.
bash

Dzēst vecos žurnāla ierakstus

Ja žurnāls aizņem pārāk daudz atmiņas, varat dzēst vecos ierakstus. To var izdarīt divos veidos:

Iz­man­to­jiet --vacuum-size, lai sa­ma­zi­nā­tu žurnāla apjomu, norādot vēlamo izmēru. Iz­man­to­jot šo metodi, tiek dzēsti vecākie ieraksti, līdz kopējā žurnāla aizņemtā vieta cietajā diskā sasniedz vēlamo izmēru.

sudo journalctl --vacuum-size=1G
bash

Al­ter­na­tī­vi varat samazināt žurnāla apjomu, iestatot sa­gla­bā­ša­nas periodu ar opciju --vacuum-time. Ieraksti, kas ir vecāki par norādīto laiku, tiks dzēsti. Lai saglabātu pēdējā gada žurnāla ierakstus, varat izmantot šādu komandu:

sudo journalctl --vacuum-time=1years
bash

Ko var darīt ar komandu journalctl?

journalctl piedāvā jaudīgas fil­trē­ša­nas iespējas, ļaujot lie­to­tā­jiem pārskatīt žurnāla ierakstus, pa­ma­to­jo­ties uz dažādiem kri­tē­ri­jiem. Šī funkcija ļauj mēr­ķtie­cī­gi meklēt at­bil­sto­šu in­for­mā­ci­ju, at­vieg­lo­jot ātrāku problēmu iden­ti­fi­cē­ša­nu. Šeit ir daži bieži izmantoti journalctl fil­trē­ša­nas ie­sta­tī­ju­mi:

Rādīt žurnālus

Izpildot komandu journalctl, tiks parādīti pa­šrei­zē­jās sistēmas žurnāla ieraksti apgrieztā hro­no­lo­ģis­kā secībā. Lai ierakstus parādītu reāllaikā, iz­man­to­jiet journalctl -f vai journalctl --follow. Jauni ieraksti tiek au­to­mā­tis­ki parādīti tādā secībā, kādā tie ienāk.

Atkarībā no tā, cik ilgi systemd jau darbojas jūsu sistēmā, vis­ti­ca­māk, tiks parādīts pārāk liels datu apjoms, kas var sastāvēt no desmitiem vai simtiem tūkstošu rindu. Lai ātrāk atrastu vajadzīgo in­for­mā­ci­ju, varat vēl vairāk filtrēt žurnālus, iz­man­to­jot dažādas Linux komandas.

Kā filtrēt pēc laika

Iz­man­to­jot journalctl, žurnālus var filtrēt pēc konkrēta laika brīža, lai efektīvāk atrastu vajadzīgo in­for­mā­ci­ju.

Filtrēt pēc sistēmas uz­sāk­ša­nas procesa

Žurnālu fil­trē­ša­na pēc sistēmas uz­sāk­ša­nas procesa ir ļoti noderīga, lai izpētītu sistēmas notikumus konkrētos laikos vai dažādos sistēmas uz­sāk­ša­nas sce­nā­ri­jos. Šī mēr­ķtie­cī­gā pieeja atvieglo problēmu diag­nos­ti­cē­ša­nu, kon­cen­trē­jot žurnāla ierakstus uz kon­krē­tiem sistēmas stā­vok­ļiem vai kon­fi­gu­rā­ci­jām.

  1. Pa­šrei­zē­jā sistēmas uzsākšana: Iz­vē­lo­ties opciju journalctl -b, tiek parādīti visi žurnāla ieraksti, kas ir savākti kopš pēdējās sistēmas at­kār­to­tās uz­sāk­ša­nas.
  2. Ie­priek­šē­jās uz­sāk­ša­nas: Iz­man­to­jiet opciju -b, kam seko skaitlis, lai parādītu žurnāla ierakstus par konkrētu ie­priek­šē­jo uzsākšanu. Piemēram, ja ievadāt journalctl -b 1, tiks parādīta ie­priek­šē­jā uzsākšana.
  3. Saraksts ar visiem pie­eja­ma­jiem uz­sāk­ša­nas procesiem: Komanda journalctl --list-boots parāda sarakstu ar pie­eja­ma­jiem uz­sāk­ša­nas procesiem un to at­tie­cī­ga­jiem ID. Jūs varat izmantot vēlamo uz­sāk­ša­nas procesa ID, lai parādītu žurnālus konkrētai uz­sāk­ša­nai.

Lai gan dažās Linux dis­tri­bū­ci­jās ie­priek­šē­jo sistēmas uz­sāk­ša­nas procesu sa­gla­bā­ša­na ir ieslēgta pēc no­klu­sē­ju­ma, citās lie­to­tā­jiem tā var būt jāieslēdz pašiem. Lai to izdarītu, iz­vei­do­jiet di­rek­to­ri­ju, kurā tiks saglabāts žurnāls, ievadot sudo mkdir -p /var/log/journal. Al­ter­na­tī­vi varat rediģēt žurnāla kon­fi­gu­rā­ci­jas failu, iz­man­to­jot sudo nano /etc/systemd/journald.conf. Tad iestatiet opciju Storage= zem [Journal] uz persistent, lai ak­ti­vi­zē­tu pastāvīgo žurnāla re­ģis­trē­ša­nu:

. . . 
[Journal] 
Storage=persistent
bash

Filtrēt pēc laika perioda

Dažkārt var būt ne­pie­cie­šams parādīt žurnāla ierakstus par konkrētu laika periodu. journalctl piedāvā opcijas --since un --until, kuras var izmantot, lai ie­ro­be­žo­tu ierakstus līdz konkrētam periodam. Lai to izdarītu, iz­man­to­jiet laika formātu YYYY-MM-DD HH:MM:SS. Komanda, lai parādītu visus žurnāla ierakstus laika posmā no 2023. gada 1. janvāra plkst. 12:00 līdz 2023. gada 2. janvāra plkst. 12:00, izskatās šādi:

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

Ap­vie­no­jot šīs divas komandas, var filtrēt arī īsāku laika periodu:

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

Varat arī izlaist daļu no formāta. Piemēram, ja vēlaties parādīt visus ierakstus, sākot no noteiktā laika brīža:

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

journalctl atpazīst arī relatīvās vērtības, piemēram, yesterday, today vai tomorrow. Lai parādītu va­kar­die­nas ierakstus, ievadiet šādu komandu:

journalctl --since yesterday
bash

Kā filtrēt pēc ziņojuma rak­stur­lie­lu­miem

journalctl iz­man­to­ša­na, lai filtrētu žurnāla ierakstus pēc to no­zī­mī­gu­ma vai satura, ir ārkārtīgi noderīga, jo ļauj meklēt at­bil­sto­šu in­for­mā­ci­ju un kon­cen­trē­ties uz kon­krē­tiem sistēmas žurnālu aspektiem. Tas, cita starpā, nodrošina efektīvu kļūdu diag­nos­ti­ku, drošības problēmu agrīnu atklāšanu un ātru veikt­spē­jas uz­rau­dzī­bu.

Filtrēt pēc prio­ri­tā­tes

Lai filtrētu žurnālus ar journalctl pēc ziņojuma svarīguma, varat izmantot žurnāla ierakstu prio­ri­tā­tes ka­te­go­ri­jas. Lai to izdarītu, varat izmantot vai nu prio­ri­tā­tes nosaukumu, vai tās at­bil­sto­šo skait­lis­ko vērtību. Jo mazāks skaitlis, jo svarīgāks ir ziņojums:

  • 0: ārkārtas situācija
  • 1: brī­di­nā­jums (trauksme)
  • 2: crit (kritisks)
  • 3: err (kļūda)
  • 4: brī­di­nā­jums (brī­di­nā­jums)
  • 5: pa­zi­ņo­jums (piezīme)
  • 6: info (in­for­mā­ci­ja)
  • 7: debug (kļūdu novēršana)

Ziņojumus ar noteiktu prio­ri­tā­ti var filtrēt, iz­man­to­jot opciju -p. Piemēram, šī komanda parāda tikai žurnāla ierakstus ar prio­ri­tā­ti „err“ (kļūda) un augstāku:

journalctl -p err
bash

Filtrēt pēc vienības

Žurnālu fil­trē­ša­na pēc vienības ir noderīga, lai pie­vēr­stos kon­krē­tiem pa­kal­po­ju­miem vai procesiem. Tos var filtrēt, iz­man­to­jot opciju -u. Piemēram, lai parādītu Apache tīmekļa servera žurnāla ierakstus, ievadiet šādu komandu:

journalctl -u apache2
bash

Meklēšanu var vēl vairāk precizēt, iz­man­to­jot relatīvus laika rādītājus. Lai no­skaid­ro­tu, vai pa­kal­po­jums šodien jau ir sniegts, varat ievadīt šādu in­for­mā­ci­ju:

journalctl -u apache2 --since today
bash

journalctl var apvienot datu ierakstus no dažādām vienībām. Piemēram, ja jūsu Nginx process ir saistīts ar PHP FPM vienību, to ierakstus var apvienot hro­no­lo­ģis­kā secībā. Šim nolūkam paredzētā komanda ir:

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

Filtrēt pēc procesa, lietotāja vai grupas ID

Komanda journalctl var filtrēt žurnāla ierakstus pēc procesa, lietotāja vai grupas iden­ti­fi­ka­to­ra. Ja jums ir precīzs meklējamā procesa PID, varat izmantot opciju _PID, lai filtrētu ierakstus. Piemēram, ja PID ir 8088, komanda iz­ska­tī­sies šādi:

journalctl _PID=8088
bash

Al­ter­na­tī­vi varat izmantot filtrus _UID vai _GID, lai parādītu visus ierakstus, ko re­ģis­trē­jis konkrēts lietotājs vai grupa. Piemēram, ja jūsu tīmekļa servera nosaukums ir „www-data“, lietotāja ID varat atrast, rī­ko­jo­ties šādi:

id -u www-data
33
bash

Grā­mat­ve­dī­bas ierakstus var filtrēt pēc iden­ti­fi­ka­to­ra:

journalctl _UID=33 --since today
bash

Lai no­skaid­ro­tu, kurām grupu ID ie­rak­stiem ir izveidoti ieraksti, varat izmantot opciju -F. Tādējādi tiek parādītas visas vērtības, kas ir sa­gla­bā­tas laukā „Grupu ID“:

journalctl -F _GID
bash

Šeit ir izvades piemērs:

32
99
102
133
81
84
100
0
124
87
bash

Filtrēt pēc kom­po­nen­ta

Fil­trē­ša­na pēc kom­po­nen­ta ir noderīga, lai kon­cen­trē­tos uz konkrētām lie­to­jum­prog­ram­mām, pa­kal­po­ju­miem vai procesiem. Kom­po­nen­ta lauku parasti izmanto dažādi pa­kal­po­ju­mi vai prog­ram­ma­tū­ras kom­po­nen­ti, lai atšķirtu konkrētu in­for­mā­ci­ju žurnālos. Šī fil­trē­ša­na ļauj sa­šau­ri­nāt žurnāla ierakstus līdz konkrētai kom­po­nen­tei, lie­to­jum­prog­ram­mai vai pa­kal­po­ju­ma vienībai. Piemēram, lai filtrētu ierakstus, kuros ir iekļauts iz­pil­dā­mais fails bash, ievadiet šādu komandu:

journalctl /usr/bin/bash
bash

Rādīt kodola ziņojumus

Žurnāla ierakstu fil­trē­ša­na pēc kodola zi­ņo­ju­miem ar journalctl ir efektīvs veids, kā analizēt in­for­mā­ci­ju par kodola darbību Linux sistēmā. Kodola ziņojumi var liecināt par ap­ara­tū­ras problēmām, draiveru kon­flik­tiem vai citiem sistēmas no­ti­ku­miem.

Kernel ziņojumus, kas atrodami dmesg izvades re­zul­tā­tos, var filtrēt arī no žurnāla. Tos var parādīt, iz­man­to­jot komandu `-k or ``:

journalctl -k
bash

Pēc no­klu­sē­ju­ma tiek parādīti pa­šrei­zē­jās sistēmas uz­sāk­ša­nas procesa kodola ziņojumi. Jūs varat filtrēt ziņojumus no citas sistēmas uz­sāk­ša­nas, iz­man­to­jot iepriekš minētos sistēmas uz­sāk­ša­nas izvēles rādītājus. Ja, piemēram, vēlaties apskatīt pēdējo piecu sistēmas uz­sāk­ša­nas procesu kodola ziņojumus, ievadiet:

journalctl -k -b -5
bash

Žurnāla at­tē­lo­ju­ma maiņa programmā „Jour­nalctl“

Ekrāna pie­lā­go­ša­na programmā journalctl ļauj lie­to­tā­jiem precīzāk pārskatīt žurnālus un ātri iegūt vajadzīgo in­for­mā­ci­ju. Lietotāji var pielāgot ekrānu tā, lai tas rādītu žurnāla datus par konkrētu laika periodu vai reāllaikā, tādējādi at­vieg­lo­jot sistēmas kļūdu un problēmu ātru iden­ti­fi­cē­ša­nu.

Izvades sa­īsi­nā­ša­na vai pa­pla­ši­nā­ša­na

Jūs varat pielāgot datu at­tē­lo­ša­nu journalctl, saīsinot vai pa­pla­ši­not izvadi. Pēc no­klu­sē­ju­ma journalctl pagerā parāda visu ierakstu un izvada to ekrāna labajā pusē. Izvadi var saīsināt, iz­man­to­jot opciju --no-full:

journalctl --no-full
bash

Ekrānu var pa­pla­ši­nāt, iz­man­to­jot -a karodziņu:

journalctl -a
bash

Nosakiet journalctl kā standarta izvadi

Programmā journalctl žurnāla izvade pēc no­klu­sē­ju­ma tiek parādīta, iz­man­to­jot pager, piemēram, less. Tas ļauj lie­to­tā­jiem apskatīt izvadi pa daļām, tādējādi at­vieg­lo­jot na­vi­gā­ci­ju garos žurnāla failos. Tomēr ir gadījumi, kad ir ne­pie­cie­šams parādīt žurnāla standarta izvadi. To var izdarīt šādi:

journalctl --no-pager
bash

Iestatīt izvades formātus

journalctl piedāvā arī iespējas pielāgot žurnālu izvades formātu. Lai to izdarītu, varat izmantot -o opciju kopā ar at­bil­sto­šo formāta iden­ti­fi­ka­to­ru. Piemēram, lai izvadītu žurnāla ierakstus JSON formātā, ievadiet šādu kodu:

journalctl -b -u nginx -o json
bash

Šeit ir izvade:

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

Programmā „Jour­nalctl“ var izmantot šādus formātus:

  • cat: parāda tikai ziņojuma lauku
  • eksports: Binārais formāts, kas piemērots pār­sū­tī­ša­nai vai sa­gla­bā­ša­nai
  • json: Standarta JSON ar vienu ierakstu katrā rindā
  • json-pretty: JSON, kas formatēts labākai lasāmībai
  • json-sse: Ietvertā JSON formātā izvade, kas ļauj pievienot servera nosūtītos notikumus
  • short: Standarta syslog stila izvade
  • short-iso: Standarta formāts ISO-8601 reālā laika laika zīmogu pa­rā­dī­ša­nai
  • short-monotonic: Standarta formāts ar mo­no­to­niem laika zīmogiem
  • short-precise: standarta formāts ar mik­ro­se­kun­des pre­ci­zi­tā­ti
  • verbose: Parāda katru žurnāla lauku, kas ir pieejams at­tie­cī­ga­jam ierakstam

journalctl veic aktīvu procesu uz­rau­dzī­bu?

Veicot aktīvu procesu uz­rau­dzī­bu ar journalctl, ko­man­drin­das programma tail tiek izmantota, lai reāllaikā sekotu līdzi žurnāliem un parādītu jaunākos ierakstus. Tas atvieglo sistēmas notikumu uz­rau­dzī­bu reāllaikā un ļauj ātri reaģēt uz problēmām.

Kā parādīt pa­šrei­zē­jos žurnālus

Opciju -n var izmantot, lai parādītu noteiktu skaitu datu ierakstu. Tā darbojas tieši tāpat kā tail -n. Lai parādītu pēdējos 10 ierakstus, iz­man­to­jiet šādu komandu:

journalctl -n
bash

Varat iestatīt arī ierakstu skaitu, piemēram, uz 20:

journalctl -n 20
bash
Go to Main Menu