Kas ir „journalctl“ un kādas ir tā funkcijas?
„Journalctl“ ir efektīvs risinājums sistēmas žurnālu pārvaldībai un analīzei Linux vidē. Šo rīku var izmantot sistēmas darbību uzraudzībai, problēmu novēršanai un žurnālu izsekošanai reālajā laikā, sniedzot būtisku informāciju sistēmas problēmu efektīvai diagnosticēšanai.
Kas ir „journalctl“?
journalctl ir jaudīgs rīks notikumu žurnālu vai žurnālu failu pārlūkošanai un parādīšanai Linux vidē. Tas ir sistēmas un pakalpojumu pārvaldības pakotnes „systemd“ galvenais komponents, kas ir iekļauts daudzās mūsdienīgās Linux distribūcijās, piemēram, Ubuntu, Fedora un Arch Linux. Nosaukums „journalctl“ ir vārdu „journal“ (žurnāls) un „ctl“ (kontrole) apvienojums, kas norāda uz to, ka šo komandu izmanto žurnālu pārvaldībai un analīzei.
journalctl atvieglo piekļuvi sistēmas žurnālam, ko pārvalda systemd-journald. Sistēmas žurnāls ir centralizēts ziņojumu un notikumu apkopojums, kas rodas Linux sistēmas darbības laikā. Atšķirībā no tradicionālajiem teksta žurnāliem, journalctl nodrošina strukturētu un efektīvu veidu, kā reāllaikā meklēt, filtrēt un parādīt žurnāla datus. Tas var palīdzēt diagnosticēt problēmas vai uzraudzīt sistēmas stāvokli.
Šim nolūkam „Journalctl“ saglabā žurnāla failus binārā formātā, jo binārie žurnāla faili ir kompakti un efektīvāki nekā to teksta formāta ekvivalenti. Ņemot vērā lielo reģistrēto datu apjomu, tas ļauj ātrāk un efektīvāk meklēt konkrētus notikumus vai informāciju žurnāla failos. Pateicoties strukturētajai un šifrētajai formai, binārie žurnāla faili nodrošina arī augstāku drošības līmeni salīdzinājumā ar teksta formāta žurnāliem, jo to formāts apgrūtina manipulācijas ar žurnāla datiem.
Kā pielāgot žurnālu failu uzglabāšanas vietu
journalctl var izmantot, lai ierobežotu un konfigurētu vietu, ko žurnālu faili aizņem cietajā diskā. To dara, izmantojot pakalpojuma „systemd-journald“ iestatījumus. Konfigurācijas iestatījumi tiek saglabāti failā /etc/systemd/journald.conf. Šeit atradīsiet šādus ierakstus:
SystemMaxUse: Ierobežo žurnālu uzglabāšanas vietu sistēmas direktorijāRuntimeMaxUse: Ierobežo žurnālu uzglabāšanas vietu pagaidu direktorijā
Lai iestatītu atmiņas limitu, pievienojiet šādas rindas vai mainiet tās atbilstoši vajadzībām:
[Journal]
SystemMaxUse=50M
RuntimeMaxUse=50MbashŠajā piemērā norādītās vērtības (50M) var mainīt atbilstoši vajadzībām. Var izmantot arī citas vienības, piemēram, K (kilobaiti), M (megabaiti), G (gigabaiti) vai T (terabaiti). Pēc konfigurācijas faila rediģēšanas ir jāpārstartē systemd-journald, lai izmaiņas stātos spēkā:
sudo systemctl restart systemd-journaldbashVeicot šos soļus, tiks konfigurēts systemd-journald, lai ierobežotu diska vietu žurnālu failiem. Pārliecinieties, ka izvēlētais limits ir pietiekams, lai uzglabātu būtiskos žurnāla datus. Tajā pašā laikā ir svarīgi izvairīties no pārmērīga diska vietas patēriņa. Ņemiet vērā, ka vecākie žurnāli tiek automātiski dzēsti, tiklīdz ir sasniegts piešķirtās diska vietas limits.
Novērtēt diska vietas izmantojumu
Pirms mainīt žurnāla failu uzglabāšanas vietas apjomu, pārbaudiet, cik daudz vietas pašlaik aizņem žurnāls. Lai to izdarītu, izmantojiet --disk-usage:
journalctl --disk-usagebashŠeit ir piemērs, kā izskatās izvade:
Journals take up 8.0M on disk.bashDzē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:
Izmantojiet --vacuum-size, lai samazinātu žurnāla apjomu, norādot vēlamo izmēru. Izmantojot š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=1GbashAlternatīvi varat samazināt žurnāla apjomu, iestatot saglabāšanas 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=1yearsbashKo var darīt ar komandu journalctl?
journalctl piedāvā jaudīgas filtrēšanas iespējas, ļaujot lietotājiem pārskatīt žurnāla ierakstus, pamatojoties uz dažādiem kritērijiem. Šī funkcija ļauj mērķtiecīgi meklēt atbilstošu informāciju, atvieglojot ātrāku problēmu identificēšanu. Šeit ir daži bieži izmantoti journalctl filtrēšanas iestatījumi:
Rādīt žurnālus
Izpildot komandu journalctl, tiks parādīti pašreizējās sistēmas žurnāla ieraksti apgrieztā hronoloģiskā secībā. Lai ierakstus parādītu reāllaikā, izmantojiet journalctl -f vai journalctl --follow. Jauni ieraksti tiek automātiski 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ā, visticamā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 informāciju, varat vēl vairāk filtrēt žurnālus, izmantojot dažādas Linux komandas.
Kā filtrēt pēc laika
Izmantojot journalctl, žurnālus var filtrēt pēc konkrēta laika brīža, lai efektīvāk atrastu vajadzīgo informāciju.
Filtrēt pēc sistēmas uzsākšanas procesa
Žurnālu filtrēšana pēc sistēmas uzsākšanas procesa ir ļoti noderīga, lai izpētītu sistēmas notikumus konkrētos laikos vai dažādos sistēmas uzsākšanas scenārijos. Šī mērķtiecīgā pieeja atvieglo problēmu diagnosticēšanu, koncentrējot žurnāla ierakstus uz konkrētiem sistēmas stāvokļiem vai konfigurācijām.
- Pašreizējā sistēmas uzsākšana: Izvēloties opciju
journalctl -b, tiek parādīti visi žurnāla ieraksti, kas ir savākti kopš pēdējās sistēmas atkārtotās uzsākšanas. - Iepriekšējās uzsākšanas: Izmantojiet opciju
-b, kam seko skaitlis, lai parādītu žurnāla ierakstus par konkrētu iepriekšējo uzsākšanu. Piemēram, ja ievadātjournalctl -b 1, tiks parādīta iepriekšējā uzsākšana. - Saraksts ar visiem pieejamajiem uzsākšanas procesiem: Komanda
journalctl --list-bootsparāda sarakstu ar pieejamajiem uzsākšanas procesiem un to attiecīgajiem ID. Jūs varat izmantot vēlamo uzsākšanas procesa ID, lai parādītu žurnālus konkrētai uzsākšanai.
Lai gan dažās Linux distribūcijās iepriekšējo sistēmas uzsākšanas procesu saglabāšana ir ieslēgta pēc noklusējuma, citās lietotājiem tā var būt jāieslēdz pašiem. Lai to izdarītu, izveidojiet direktoriju, kurā tiks saglabāts žurnāls, ievadot sudo mkdir -p /var/log/journal. Alternatīvi varat rediģēt žurnāla konfigurācijas failu, izmantojot sudo nano /etc/systemd/journald.conf. Tad iestatiet opciju Storage= zem [Journal] uz persistent, lai aktivizētu pastāvīgo žurnāla reģistrēšanu:
. . .
[Journal]
Storage=persistentbashFiltrēt pēc laika perioda
Dažkārt var būt nepieciešams parādīt žurnāla ierakstus par konkrētu laika periodu. journalctl piedāvā opcijas --since un --until, kuras var izmantot, lai ierobežotu ierakstus līdz konkrētam periodam. Lai to izdarītu, izmantojiet 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"bashApvienojot šīs divas komandas, var filtrēt arī īsāku laika periodu:
journalctl --since 09:00 --until "1 hour ago"bashVarat 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"bashjournalctl atpazīst arī relatīvās vērtības, piemēram, yesterday, today vai tomorrow. Lai parādītu vakardienas ierakstus, ievadiet šādu komandu:
journalctl --since yesterdaybashKā filtrēt pēc ziņojuma raksturlielumiem
journalctl izmantošana, lai filtrētu žurnāla ierakstus pēc to nozīmīguma vai satura, ir ārkārtīgi noderīga, jo ļauj meklēt atbilstošu informāciju un koncentrēties uz konkrētiem sistēmas žurnālu aspektiem. Tas, cita starpā, nodrošina efektīvu kļūdu diagnostiku, drošības problēmu agrīnu atklāšanu un ātru veiktspējas uzraudzību.
Filtrēt pēc prioritātes
Lai filtrētu žurnālus ar journalctl pēc ziņojuma svarīguma, varat izmantot žurnāla ierakstu prioritātes kategorijas. Lai to izdarītu, varat izmantot vai nu prioritātes nosaukumu, vai tās atbilstošo skaitlisko vērtību. Jo mazāks skaitlis, jo svarīgāks ir ziņojums:
- 0: ārkārtas situācija
- 1: brīdinājums (trauksme)
- 2: crit (kritisks)
- 3: err (kļūda)
- 4: brīdinājums (brīdinājums)
- 5: paziņojums (piezīme)
- 6: info (informācija)
- 7: debug (kļūdu novēršana)
Ziņojumus ar noteiktu prioritāti var filtrēt, izmantojot opciju -p. Piemēram, šī komanda parāda tikai žurnāla ierakstus ar prioritāti „err“ (kļūda) un augstāku:
journalctl -p errbashFiltrēt pēc vienības
Žurnālu filtrēšana pēc vienības ir noderīga, lai pievērstos konkrētiem pakalpojumiem vai procesiem. Tos var filtrēt, izmantojot opciju -u. Piemēram, lai parādītu Apache tīmekļa servera žurnāla ierakstus, ievadiet šādu komandu:
journalctl -u apache2bashMeklēšanu var vēl vairāk precizēt, izmantojot relatīvus laika rādītājus. Lai noskaidrotu, vai pakalpojums šodien jau ir sniegts, varat ievadīt šādu informāciju:
journalctl -u apache2 --since todaybashjournalctl 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 hronoloģiskā secībā. Šim nolūkam paredzētā komanda ir:
journalctl -u nginx.service -u php-fpm.service --since today-u apache2 --since todaybashFiltrēt pēc procesa, lietotāja vai grupas ID
Komanda journalctl var filtrēt žurnāla ierakstus pēc procesa, lietotāja vai grupas identifikatora. Ja jums ir precīzs meklējamā procesa PID, varat izmantot opciju _PID, lai filtrētu ierakstus. Piemēram, ja PID ir 8088, komanda izskatīsies šādi:
journalctl _PID=8088bashAlternatīvi varat izmantot filtrus _UID vai _GID, lai parādītu visus ierakstus, ko reģistrē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īkojoties šādi:
id -u www-data
33bashGrāmatvedības ierakstus var filtrēt pēc identifikatora:
journalctl _UID=33 --since todaybashLai noskaidrotu, kurām grupu ID ierakstiem ir izveidoti ieraksti, varat izmantot opciju -F. Tādējādi tiek parādītas visas vērtības, kas ir saglabātas laukā „Grupu ID“:
journalctl -F _GIDbashŠeit ir izvades piemērs:
32
99
102
133
81
84
100
0
124
87bashFiltrēt pēc komponenta
Filtrēšana pēc komponenta ir noderīga, lai koncentrētos uz konkrētām lietojumprogrammām, pakalpojumiem vai procesiem. Komponenta lauku parasti izmanto dažādi pakalpojumi vai programmatūras komponenti, lai atšķirtu konkrētu informāciju žurnālos. Šī filtrēšana ļauj sašaurināt žurnāla ierakstus līdz konkrētai komponentei, lietojumprogrammai vai pakalpojuma vienībai. Piemēram, lai filtrētu ierakstus, kuros ir iekļauts izpildāmais fails bash, ievadiet šādu komandu:
journalctl /usr/bin/bashbashRādīt kodola ziņojumus
Žurnāla ierakstu filtrēšana pēc kodola ziņojumiem ar journalctl ir efektīvs veids, kā analizēt informāciju par kodola darbību Linux sistēmā. Kodola ziņojumi var liecināt par aparatūras problēmām, draiveru konfliktiem vai citiem sistēmas notikumiem.
Kernel ziņojumus, kas atrodami dmesg izvades rezultātos, var filtrēt arī no žurnāla. Tos var parādīt, izmantojot komandu `-k or ``:
journalctl -kbashPēc noklusējuma tiek parādīti pašreizējās sistēmas uzsākšanas procesa kodola ziņojumi. Jūs varat filtrēt ziņojumus no citas sistēmas uzsākšanas, izmantojot iepriekš minētos sistēmas uzsākšanas izvēles rādītājus. Ja, piemēram, vēlaties apskatīt pēdējo piecu sistēmas uzsākšanas procesu kodola ziņojumus, ievadiet:
journalctl -k -b -5bashŽurnāla attēlojuma maiņa programmā „Journalctl“
Ekrāna pielāgošana programmā journalctl ļauj lietotājiem precīzāk pārskatīt žurnālus un ātri iegūt vajadzīgo informāciju. 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 atvieglojot sistēmas kļūdu un problēmu ātru identificēšanu.
Izvades saīsināšana vai paplašināšana
Jūs varat pielāgot datu attēlošanu journalctl, saīsinot vai paplašinot izvadi. Pēc noklusējuma journalctl pagerā parāda visu ierakstu un izvada to ekrāna labajā pusē. Izvadi var saīsināt, izmantojot opciju --no-full:
journalctl --no-fullbashEkrānu var paplašināt, izmantojot -a karodziņu:
journalctl -abashNosakiet journalctl kā standarta izvadi
Programmā journalctl žurnāla izvade pēc noklusējuma tiek parādīta, izmantojot pager, piemēram, less. Tas ļauj lietotājiem apskatīt izvadi pa daļām, tādējādi atvieglojot navigāciju garos žurnāla failos. Tomēr ir gadījumi, kad ir nepieciešams parādīt žurnāla standarta izvadi. To var izdarīt šādi:
journalctl --no-pagerbashIestatī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 atbilstošo formāta identifikatoru. Piemēram, lai izvadītu žurnāla ierakstus JSON formātā, ievadiet šādu kodu:
journalctl -b -u nginx -o jsonbashŠ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" :bashProgrammā „Journalctl“ var izmantot šādus formātus:
- cat: parāda tikai ziņojuma lauku
- eksports: Binārais formāts, kas piemērots pārsūtīšanai vai saglabāšanai
- 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 parādīšanai
- short-monotonic: Standarta formāts ar monotoniem laika zīmogiem
- short-precise: standarta formāts ar mikrosekundes precizitāti
- verbose: Parāda katru žurnāla lauku, kas ir pieejams attiecīgajam ierakstam
Kā journalctl veic aktīvu procesu uzraudzību?
Veicot aktīvu procesu uzraudzību ar journalctl, komandrindas programma tail tiek izmantota, lai reāllaikā sekotu līdzi žurnāliem un parādītu jaunākos ierakstus. Tas atvieglo sistēmas notikumu uzraudzību reāllaikā un ļauj ātri reaģēt uz problēmām.
Kā parādīt pašreizē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, izmantojiet šādu komandu:
journalctl -nbashVarat iestatīt arī ierakstu skaitu, piemēram, uz 20:
journalctl -n 20bash