systemd

Master journalctl izprot systemd žurnālus

Master journalctl izprot systemd žurnālus
Systemd ir jauns rīku pārvaldības pakalpojums. Sākotnēji to izveidoja Red Hat, un tas ļauj labāk pārvaldīt pakalpojumus, izmantojot centralizētu procesu, kas uzrauga un palaiž pakalpojumus pēc nepieciešamības. Bet systemd ietver arī konteineru sistēmu, cron sistēmu, veidu, kā nodrošināt pakalpojumu pagaidu direktorijus drošā veidā, kā arī reģistrēšanas sistēmu - šeit mēs koncentrēsimies uz to.

Saprast žurnālus ir svarīgi: ja jūs kādreiz iekrītat serverī, kurā ir kļūda vai uzlauzts, parasti vienīgais veids, kā saprast, kas noticis, ir žurnāli. Galvenā lietojumprogramma, kuru izmantosim, ir journalctl, tātad raksta nosaukums. Tāpēc uzmanīgi klausieties, kā īstajā dienā, iespējams, priecājaties uzzināt, kā tas darbojas.

Kur glabājas systemd žurnāli? Un kādā formātā tas tiek glabāts?

Mēs pieņemsim, ka jums ir normāla sistēma, jo systemd var pielāgot tā, lai tas atrastos ārkārtas vietās. Kā arī daži Linux izplatījumi, piemēram, Ubuntu 16.04 pēc noklusējuma atspējoja pastāvīgu reģistrēšanu, kas neļauj systemd pareizi veikt savu darbu. Ja jums ir šāds izplatījums, rediģējiet / etc / systemd / journald.conf failu, mainiet Storage = auto uz Storage = persistent un visbeidzot restartējiet.

Tātad jūs parasti atradīsit systemd žurnālfailus mapē / var / log / journal. Žurnālu sistēma pati par sevi ir pakalpojums, ko sauc par system-journalnald.apkalpošana.  Mēģināsim uzskaitīt failus šajā direktorijā:

# ls / var / log / journal / -R
/ var / log / journal /:
15e43c1734090ac7fbea6b40fcd99d31
 
/ var / log / journal / 15e43c1734090ac7fbea6b40fcd99d31:
system @ a39da368947bd2ba-231f9bfc18a7a356.žurnāls ~
sistēma @ 62ac1299826d036cb043d6c06a9493b7-000000000000000001-00067d6410099a19.žurnāls
user-1000 @ b27e98812223a9bc-387e0521703f73d9.žurnāls ~
user-1000 @ 2123bc076b58569fe1fb13e9dbc1b0e0-000000000000000001-0007fe36ac2810e0.žurnāls
lietotājs-1000.žurnāls
[daudz citu failu, piemēram, iepriekš minēto ...]

Tā kā es vēlos, lai jūs turpinātu lasīt, man nācās saīsināt izvadi, jo tajā ir daudz failu (manā piemērā vairāk nekā 60 faili), atvainojiet par to! Varbūt kārdina atvērt?

# head --bytes = 512 / var / log / journal / 15e43c1734090ac7fbea6b40fcd99d31 / [aizsargāts pa e-pastu]
b58569fe1fb13e9dbc1b0e0-000000000000000001-0007fe36ac2810e0.žurnāls
?s, q?n / FLz???Ulz?l?]????
?_?b???z????o?y1KN ?i?eO??W?u?  ?=?x0?L?d?7??X4n #?e? d3l?
lpp??o | MFO:?!qs?.tK??R?\??1?| 5  ????$?g??#?S??;??B7???????t???Jā????mN?q????ZQ
?Yv?e?????BD?C?? wF??d |
?2?? 7???????[??Un?= 8????c?2 = p?&?"   ?0
????*????_??  ???
5?????yk?G? ?6?|??u??w: # 12?Jā??
3 TU;???"?jX??2?x '?=??[[e-pasts aizsargāts]
[e-pasts aizsargāts]?_?>??3S???,lR?.?$?g?L???s?/ E??M1??q???

Hei, redz, tas patiesībā neizskatās kā parasti redzamie žurnālfaili? Neuztraucieties, šis fails nav bojāts, jūs tikko atklājāt sistēmasd aspektu: systemd glabā failus binārā formātā. Tāpēc tas ir pēc iespējas mazāks: strukturēti dati, piemēram, laiks vai atrašanās vieta, tiek glabāti tieši binārā formātā, kas parasti aizņem mazāk baitu nekā teksts. Bet tas nav vienīgais iemesls.

systemd ne tikai glabā žurnāla līnijas. Tās mērķis ir atvieglot apaļkoku uzraudzību un izpēti. Lai palīdzētu šajā uzdevumā, žurnāla ziņojumi patiesībā ir teksta rinda, kurai pievienoti tādi dati kā žurnāla smagums (brīdinājums, kļūda utt.).) vai pat laukus, kas būtu noderīgi tikai jūsu lietojumprogrammai (piemēram, pieprasīts URL).

# journalctl --output = daudzbalsīgs - viss
PRIORITĀTE = 6
_UID = 0
_GID = 0
_CAP_EFFECTIVE = 3fffffffff
_BOOT_ID = ee4cc2ce7e8273aaffb5fc59c873ce7b
_MACHINE_ID = bc422e0feaab64bb7dd218c24e6830e5
_HOSTNAME = Linux
SYSLOG_FACILITY = 3
SYSLOG_IDENTIFIER = systemd
UNIT = dnf-makecache.apkalpošana
_TRANSPORT = žurnāls
_PID = 1
_COMM = systemd
_EXE = / usr / lib / systemd / systemd
_CMDLINE = / usr / lib / systemd / systemd - pārslēgta sakne - sistēma - deserializēt 76
_SYSTEMD_CGROUP = / init.darbības joma
_SYSTEMD_UNIT = iniciēt.darbības joma
_SYSTEMD_SLICE =-.šķēle
_SELINUX_CONTEXT = system_u: system_r: init_t: s0
CODE_FILE = src / core / job.c
CODE_LINE = 795
CODE_FUNCTION = job_log_status_message
MESSAGE_ID = a76e08846f5f0971371dbb11126e62e1
MESSAGE = Sākta dnf makecache.
# journalctl --catalog --lines = 3000 - pager-end "_TRANSPORT = kodols" RESULT = izdarīts
_SOURCE_REALTIME_TIMESTAMP = 1532886335471422

Es jums teicu, ka ir daudz lauku (šeit ir 25 lauki vai 29 skaitīšanas laika zīmogi), visi iepriekšējie fragmenti ir paredzēti tikai vienam žurnāla ziņojumam! Lielais ieguvums ir tas, ka jūs varat palaist meklēšanu, filtrējot jebkuru šī žurnāla ziņojuma lauku. Tas patiešām ļauj uzlabot filtrēšanu.

Viens no visredzamākajiem filtriem, ko vēlaties, ir filtrēt pēc pakalpojuma. Kā redzat iepriekš, ir lauks UNIT, lai jūs varētu viegli filtrēt, lai no viena pakalpojuma saņemtu tikai žurnāla ziņojumus. Es jums pastāstīšu vairāk par to vēlāk.

Bet šis datu apjoms nozīmē arī kaut ko citu: gandrīz visos gadījumos jūs nekad neatverat žurnālfailu manuāli un nekad nepieskarieties mapei / var / log / journal. Jūs izmantosiet journalctl jebkuram uzdevumam, kas saistīts ar reģistrēšanu. Nav tādas žurnāla pagriešanas lietas, visu pārvalda žurnāla ziņojuma laiks.

Lauku skaits būs atkarīgs arī no tā, cik laba ir systemd integrācija jūsu lietojumprogrammā. Jo vairāk lauku satur žurnāla ziņojums, jo labāk tas ir. Attiecībā uz bāzes sistēmas pakalpojumiem, systemd jau rūpējās par labu integrāciju, bet attiecībā uz citām lietojumprogrammām un pakalpojumiem integrācijas kvalitāte ir ļoti atšķirīga. Parasti tam laika gaitā vajadzētu kļūt labākam, jo ​​cilvēki pierod pie sistēmas.

Labi, tagad ir pienācis laiks atklāt journalctl funkcijas.

Visbiežāk lietotās journalctl komandas

Pirmā komanda, kuru varētu vēlēties apskatīt, ir tā, kas parāda Linux kodola žurnālus. Jā, systemd apstrādā arī kodola žurnālu glabāšanu, lai jūs varētu iegūt arī iepriekšējo zābaku žurnālus. Šeit ir komanda:

# journalctl --catalog --lines = 3000 - pager-end "_TRANSPORT = kodols"

Tas parāda peidžeri, kurā varat redzēt pēdējos ziņojumus. Izmantojot ritināšanas taustiņus (↑ / ↓) vai Page Up / Page Down, varat ritināt līdz pēdējām 3000 rindām. Karodziņš -catalog norāda journalctl parādīt kontekstu ap žurnāla līnijām, līdzīgi kā datora atkārtota palaišana vai citos gadījumos pakalpojuma apturēšana / palaišana. Es vienmēr ielieku šo karodziņu, jo konteksts vienmēr ir svarīgs, tas palīdz uzzināt, kurā situācijā parādījās žurnāla līnija, lai jūs varētu uzminēt, kāpēc esat ieguvis šo žurnāla līniju.

Tagad varbūt jūs vēlaties redzēt tikai žurnāla līnijas no pašreizējās sāknēšanas:

# journalctl --catalog --lines = 35000 --pager-end - boot "_TRANSPORT = kodols"

Ņemiet vērā, ka komandrindas -boot arguments darbojas visās situācijās, ne tikai ar kodola žurnāliem. Ja vēlaties sākt no sākuma:

# journalctl --catalog --boot "_TRANSPORT = kodols"

Es nezinu, vai tas attiecas uz jums, bet man ir pietiekami daudz kodola žurnālu! Un kā ar vispārēju pārskatu par jūsu mašīnu?

# journalctl --catalog --lines = 3000 --pager-end

Oho, jūsu sistēmā notiek daudzas lietas! Šeit būtu noderīga mazliet filtrēšana. Viens no visbiežāk izmantotajiem filtriem atbilst noteiktam pakalpojumam (piemēram, jūsu SSH serverim vai HTTP serverim), SSD pakalpojuma systemd vienības faila nosaukums ir sshd.pakalpojumu, tātad:

# journalctl --catalog --lines = 3000 --pager-end --vienība = sshd.pakalpojumu

Tas ir forši, vai ne? Tas ir izmantojams tikai tad, ja jūs zināt pakalpojuma nosaukumu, bet daudzos gadījumos jūs nezināt šī pakalpojuma nosaukumu. Ja esat nonācis šādā situācijā, jūs varētu vēlēties pakalpojumu sarakstu, to aprakstus un statusu:

# systemctl saraksta vienības - tips = pakalpojums

Labi, šī problēma tagad ir atrisināta. Bet dažreiz jums ir kļūdas ziņojums, ko saņemat no ārējas sistēmas, piemēram, savas vietnes, vai no lietojumprogrammas uz darbvirsmas. Tāpēc jūs, iespējams, vēlēsities meklēt konkrētu vārdu vai teikumu žurnāla ziņojumā. Kopš systemd v237, tas tagad ir iespējams.

Žurnālāctl meklēšana nav reģistrjutīga, ja meklējamais vārds ir viss ar mazajiem burtiem. Tātad, ja meklējat vārdu ports, tas meklēs arī vārdu ports ar lielajiem burtiem. Piemērs:

# journalctl --catalog --lines = 3000 --pager-end --grep = "ports"

Tagad, ja meklējat tādu vārdu kā CPU, tas meklēs tikai CPU ar visiem lielajiem burtiem, tas netiks meklēts CPU.

# journalctl --catalog --lines = 3000 --pager-end --grep = "CPU"

Jūs atceraties kļūdas ziņojumu no ārējās sistēmas? Parasti šajos ziņojumos ir laika zīmogs. Lai filtrētu žurnāla ziņojumu, ieteicams izmantot šo laika zīmogu. journalctl var uzskaitīt visus žurnāla ziņojumus kopš noteikta datuma un laika ar argumentu -since:

# Journalctl --catalog --since = "2018/07/30 09:30:00"

Ja šī ārējā sistēma ir attāla vai izmanto UTC laika zīmogus, ieteicams filtrēt, pamatojoties uz UTC datumu un laiku, un terminālā parādīt UTC laika zīmogus, tāpēc jums tas nav jāpārvērš savā galvā, kas mēdz būt tiešām mulsinoši. Lai to izdarītu, jums ir jāpievieno UTC pēc laika virknes-argumentā. Pēc tam jums būs jāpievieno karogs -utc. Tā, piemēram:

# Journalctl --catalog --since = "2018/07/30 10:45:00 UTC" --utc

Ņemiet vērā, ka jūs varat izmantot karodziņu -utc atsevišķi, šajā gadījumā tas visus datumus un laikus parādīs UTC laika joslā.

# journalctl --catalog --lines = 3000 --pager-end - utt

Žurnālus labāk pārvalda ar journalctl

Kā jūs varat redzēt, ar visām iepriekšējām komandām, systemd journaling padara filtrēšanas un tā atkļūdošanas vieglāk, kā jūs varat izvēlēties caur visiem baļķu līnijām, izmantojot vienu komandu, journalctl. Daži no jums droši vien zināja senos laikus, kad jums bija manuāli jāatver visi faili mapē / var / log, lai iegūtu vispārēju priekšstatu par problēmu un to, kas notika. Izmantojot visus šeit uzzinātos padomus, jums būs noderīgi rīki, lai skatītu savus žurnāla ziņojumus tā, kā vēlaties.

Microsoft Sculpt Touch bezvadu peles apskats
Es nesen lasīju par Microsoft Sculpt Touch bezvadu pele un nolēma to nopirkt. Pēc kāda laika izmantošanas es nolēmu dalīties savā pieredzē ar to. Šo b...
AppyMouse ekrāna skārienpaliktnis un peles rādītājs Windows planšetdatoriem
Planšetdatoru lietotājiem bieži pietrūkst peles rādītāja, it īpaši, ja viņi parasti lieto klēpjdatorus. Skārienekrāna viedtālruņiem un planšetdatoriem...
Vidējā peles poga nedarbojas sistēmā Windows 10
The peles vidējā poga palīdz jums ritināt garas tīmekļa lapas un ekrānus ar lielu datu daudzumu. Ja tas apstājas, jūs galu galā izmantosiet tastatūru,...