systemd

Pagrindinis žurnalas supranta systemd žurnalus

Pagrindinis žurnalas supranta systemd žurnalus
„Systemd“ yra nauja įrankių valdymo paslauga. Iš pradžių sukūrė „Red Hat“, tai leidžia geriau valdyti paslaugas per centralizuotą procesą, kuris stebi ir paleidžia paslaugas, jei reikia. Bet sistemoje taip pat yra konteinerių sistema, „cron“ sistema, būdas saugiai teikti laikinus katalogus paslaugoms, taip pat registravimo sistema - čia mes ir sutelksime dėmesį.

Suprasti žurnalus yra svarbu: jei kada nors pateksite į serverį, kuriame yra klaida arba kuris yra nulaužtas, paprastai vienintelis būdas suprasti, kas įvyko, yra žurnalai. Pagrindinė programa, kurią ketiname naudoti, yra journalctl, taigi ir straipsnio pavadinimas. Taigi klausykitės atidžiai, nes tinkama diena galite džiaugtis sužinoję, kaip tai veikia.

Kur saugomi sistemos žurnalai? Ir kokiu formatu jis saugomas?

Darysime prielaidą, kad turite įprastą sistemą, nes „systemd“ galima pritaikyti išskirtinėms vietoms. Taip pat kai kurie „Linux“ paskirstymai, pvz., „Ubuntu 16“.04 pagal numatytuosius nustatymus išjungė nuolatinį registravimą, o tai neleidžia sistemai tinkamai atlikti savo darbo. Jei turite tokį platinimą, redaguokite / etc / systemd / journald.conf failą, pakeiskite „Storage = auto“ į „Storage = persistent“ ir galiausiai paleiskite iš naujo.

Taigi paprastai „systemd“ įrašo failus į / var / log / journal. Žurnalų sudarymo sistema pati yra paslauga, vadinama „system-journalnald“.paslaugą.  Pabandykime išvardyti failus šiame kataloge:

# ls / var / log / journal / -R
/ var / log / journal /:
15e43c1734090ac7fbea6b40fcd99d31
 
/ var / log / journal / 15e43c1734090ac7fbea6b40fcd99d31:
system @ a39da368947bd2ba-231f9bfc18a7a356.žurnalas ~
sistema @ 62ac1299826d036cb043d6c06a9493b7-000000000000000001-00067d6410099a19.žurnalas
„user-1000“ @ b27e98812223a9bc-387e0521703f73d9.žurnalas ~
vartotojas-1000 @ 2123bc076b58569fe1fb13e9dbc1b0e0-000000000000000001-0007fe36ac2810e0.žurnalas
vartotojo-1000.žurnalas
[daugybė kitų failų, panašių į aukščiau nurodytus ...]

Kadangi noriu, kad toliau skaitytumėte, turėjau sutrumpinti išvestį, nes joje yra daug failų (mano pavyzdyje daugiau nei 60 failų), atsiprašau dėl to! Pagunda gal vieną atidaryti?

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

Ei, žiūrėk, tai tikrai neatrodo kaip įprasti žurnalo failai, kuriuos matote teisingai? Nesijaudinkite, šis failas nėra sugadintas, jūs ką tik atradote „systemd“ aspektą: „systemd“ saugo failus dvejetainiu formatu. Štai kodėl jie yra kuo mažesni: struktūriniai duomenys, pvz., Laikas ar vieta, saugomi tiesiai dvejetainiais failais, kurie paprastai užima mažiau baitų nei tekstas. Bet tai nėra vienintelė priežastis.

systemd saugo ne tik žurnalo eilutes. Jo tikslas - palengvinti rąstų stebėjimą ir tyrimą. Kad būtų lengviau atlikti šią užduotį, žurnalo pranešimai iš tikrųjų yra teksto eilutė kartu su tokiais duomenimis kaip žurnalo sunkumas (įspėjimas, klaida ir kt.).) ar net laukai, kurie būtų naudingi tik jūsų programai (pvz., prašoma URL).

# journalctl --output = verbose --viskas
PRIORITETAS = 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.paslaugą
_ TRANSPORTAS = žurnalas
_PID = 1
_COMM = systemd
_EXE = / usr / lib / systemd / systemd
_CMDLINE = / usr / lib / systemd / systemd --switched-root --system --deserialize 76
_SYSTEMD_CGROUP = / inic.taikymo sritį
_SYSTEMD_UNIT = inicijuoti.taikymo sritį
_SYSTEMD_SLICE =-.griežinėlis
_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
PRANEŠIMAS = Pradėta „dnf makecache“.
# journalctl --catalog --lines = 3000 --pager-end "_TRANSPORT = kernel" REZULTATAS = atlikta
_SOURCE_REALTIME_TIMESTAMP = 1532886335471422

Aš jums sakiau, kad laukų yra daug (čia yra 25 laukai arba 29 skaičiavimo laiko žymos), visi aukščiau pateikti fragmentai skirti tik vienam žurnalo pranešimui! Didelis pranašumas yra tas, kad galite paleisti paiešką filtruodami bet kurį šio žurnalo pranešimo lauką. Tai tikrai leidžia išplėstinį filtravimą.

Vienas iš akivaizdžiausių norimų filtrų yra filtravimas pagal paslaugą. Kaip matote aukščiau, yra laukas UNIT, kad galėtumėte lengvai filtruoti, kad iš vienos paslaugos gautumėte tik žurnalo pranešimus. Aš apie tai pasakysiu vėliau.

Tačiau toks duomenų kiekis reiškia ir kažką kita: beveik visais atvejais niekada neatidarysite žurnalo failo rankiniu būdu ir niekada neliesite aplanko / var / log / journal. Visoms užduotims, susijusioms su registravimu, naudosite „journalctl“. Nėra tokio žurnalo kaitaliojimo dalyko, viską valdo žurnalo pranešimo laikas.

Be to, laukų skaičius priklausys nuo to, ar gerai jūsų sistemoje integruota jūsų programa. Kuo daugiau laukų yra žurnalo pranešime, tuo geriau. Kalbant apie bazinės sistemos paslaugas, systemd jau rūpinosi geru integravimu, tačiau kitų programų ir paslaugų atveju integracijos kokybė labai skiriasi. Paprastai tai laikui bėgant turėtų pagerėti, kai žmonės įpranta prie sistemos.

Gerai, dabar atėjo laikas atrasti journalctl funkcijas.

Dažniausiai komandos „journalctl“ naudojamos

Pirmoji komanda, į kurią galbūt norėsite atkreipti dėmesį, yra ta, kuri rodo „Linux“ branduolio žurnalus. Taip, „systemd“ taip pat tvarko branduolio žurnalų saugojimą, todėl galite gauti ir ankstesnių įkrovų žurnalus. Štai komanda:

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

Tai parodo ieškiklį, kuriame galite pamatyti paskutinius pranešimus. Naudodamiesi rodyklių klavišais (↑ / ↓) arba Page Up / Page Down galite slinkti iki paskutinių 3000 eilučių. „-Catalog“ vėliava nurodo „journalctl“ rodyti kontekstą aplink žurnalo linijas, panašiai kaip kompiuterio perkrovimas arba, kitu atveju, paslaugos sustabdymas / paleidimas. Aš visada dedu šią vėliavą, nes kontekstas visada yra svarbus, tai padeda žinoti, kurioje situacijoje atsirado žurnalo eilutė, todėl galite atspėti, kodėl gavote šią žurnalo eilutę.

Dabar galbūt norite matyti tik žurnalo eilutes iš dabartinio įkrovos:

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

Atkreipkite dėmesį, kad komandinės eilutės -boot argumentas veikia visose situacijose, ne tik su branduolio žurnalais. Jei norite pradėti nuo pradžių:

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

Nežinau, ar jums taip yra, bet man pakanka branduolio žurnalų! O ką daryti, jei turėsite bendrą savo mašinos apžvalgą?

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

Oho, jūsų sistemoje vyksta daugybė dalykų! Čia būtų naudinga šiek tiek filtruoti. Vienas iš dažniausiai naudojamų filtrų atitinka konkrečią paslaugą (pvz., Jūsų SSH serverį ar HTTP serverį), SSD paslaugos „systemd unit“ failo vardas yra sshd.paslauga, taigi:

# journalctl --catalog --lines = 3000 --pager-end --unit = sshd.paslaugą

Tai šaunu, ar ne? Na, tai galima naudoti tik tuo atveju, jei žinote paslaugos pavadinimą, tačiau daugeliu atvejų nežinote tos paslaugos pavadinimo. Jei esate tokioje situacijoje, galite norėti paslaugų sąrašą, jų aprašymus ir būseną:

# systemctl sąrašo vienetai --type = paslauga

Gerai, ši problema dabar išspręsta. Tačiau kartais turite klaidos pranešimą, kurį gaunate iš išorinės sistemos, pvz., Savo svetainės, arba iš programos darbalaukyje. Taigi tikriausiai norėsite ieškoti konkretaus žodžio ar sakinio žurnalo pranešime. Nuo „systemd v237“ dabar tai įmanoma.

„Journalctl“ paieškoje nėra didžiųjų ir mažųjų raidžių, jei visas jūsų ieškomas žodis yra mažosiomis raidėmis. Taigi, jei ieškosite žodžio prievadas, jis taip pat ieškos žodžio prievadas didžiosiomis raidėmis. Pavyzdys:

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

Dabar, jei ieškosite tokio žodžio kaip procesorius, jis ieškos tik procesoriaus su visomis didžiosiomis raidėmis, jis neieškos procesoriaus.

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

Prisimenate klaidos pranešimą iš išorinės sistemos? Paprastai šiuose pranešimuose yra laiko žyma. Norėdami filtruoti žurnalo pranešimą, galbūt norėsite naudoti tą laiko žymę. journalctl gali išvardyti visus žurnalo pranešimus nuo tam tikros datos ir laiko su argumentu -since:

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

Jei ta išorinė sistema yra nuotolinė arba naudoja UTC laiko žymes, norėsite filtruoti pagal UTC datą ir laiką ir terminale rodyti UTC laiko žymes, kad jums nereikėtų jos konvertuoti į galvą tikrai paini. Norėdami tai padaryti, turite pridėti UTC po laiko eilutės argumente. Tada turėsite pridėti vėliavą -utc. Taigi, pavyzdžiui:

# journalctl --catalog --since = "2018-07-30 10:45:00 UTC" - kt

Atkreipkite dėmesį, kad galite naudoti tik vėliavą -utc, šiuo atveju visos datos ir laikai bus rodomi UTC laiko juostoje.

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

Žurnalai yra geriau tvarkomi naudojant „journalctl“

Kaip matote su visomis ankstesnėmis komandomis, „systemd“ žurnalų sudarymas palengvina filtravimą ir derinimą, nes galite pasirinkti per visas žurnalo eilutes naudodami vieną komandą „journalctl“. Kai kurie iš jūsų tikriausiai žinojo senovės laikus, kai turėjote rankiniu būdu atidaryti kiekvieną failą aplanke / var / log, kad suprastumėte problemą ir kas nutiko. Atsižvelgdami į visus čia išmoktus patarimus, turėsite patikimų įrankių, kad galėtumėte pažvelgti į savo žurnalo pranešimus taip, kaip to norite.

Pelės kairiuoju pelės mygtuku mygtukas neveikia „Windows 10“
Jei naudojate specialią pelę su savo nešiojamuoju kompiuteriu arba staliniu kompiuteriu, tačiau neveikia pelės kairysis mygtukas dėl tam tikrų priežas...
Žymeklis peršoka arba juda atsitiktinai, kai rašote „Windows 10“
Jei pastebite, kad pelės žymeklis peršoka arba juda pats, automatiškai, atsitiktinai, kai vedate „Windows“ nešiojamąjį kompiuterį ar kompiuterį, kai k...
Kaip pakeisti pelės ir jutiklinių plokščių slinkimo kryptį sistemoje „Windows 10“
Pelė ir Jutiklinė dalisTai ne tik palengvina skaičiavimus, bet ir efektyvesnį bei mažiau laiko reikalaujantį. Mes neįsivaizduojame gyvenimo be šių pri...