systemd

A master journalctl megérti a systemd naplóit

A master journalctl megérti a systemd naplóit
A Systemd az új eszközkezelő szolgáltatás. A Red Hat eredetileg létrehozta, lehetővé teszi a szolgáltatások jobb kezelését egy központosított folyamat révén, amely szükség szerint figyeli és elindítja a szolgáltatásokat. De a systemd magában foglal egy konténer rendszert, egy cron rendszert, egy módot az ideiglenes könyvtárak biztonságos szolgáltatására, valamint egy naplózási rendszert is - erre fogunk itt összpontosítani.

A naplók megértése fontos: ha valaha olyan szerverre esel, amely hibát tartalmaz vagy feltört, akkor általában csak a naplók segítségével értheted meg a történteket. A fő alkalmazás, amelyet használni fogunk, a journalctl, ezért a cikk neve. Figyeljen hát figyelmesen, mivel a megfelelő napon örülhet, ha tudja, hogyan működik.

Hol vannak tárolva a systemd naplók? És milyen formátumban van tárolva?

Feltételezzük, hogy normális rendszere van, mert a systemd testreszabható kivételes helyekre. Valamint néhány Linux disztribúció, például az Ubuntu 16.04 alapértelmezés szerint letiltotta a tartós naplózást, ami megakadályozza, hogy a systemd megfelelően végezze a munkáját. Ha rendelkezik ilyen terjesztéssel, akkor szerkessze az / etc / systemd / journald fájlt.conf fájlt, módosítsa a Storage = auto értéket Storage = persistent értékre, végül indítsa újra.

Tehát általában a systemd naplózza a fájlokat a / var / log / journal könyvtárban. A naplózó rendszer maga is a system-journald nevű szolgáltatás.szolgáltatás.  Próbáljuk meg felsorolni a fájlokat ebben a könyvtárban:

# ls / var / log / napló / -R
/ var / log / journal /:
15e43c1734090ac7fbea6b40fcd99d31
 
/ var / log / journal / 15e43c1734090ac7fbea6b40fcd99d31:
system @ a39da368947bd2ba-231f9bfc18a7a356.napló ~
rendszer @ 62ac1299826d036cb043d6c06a9493b7-000000000000000001-00067d6410099a19.folyóirat
user-1000 @ b27e98812223a9bc-387e0521703f73d9.napló ~
user-1000 @ 2123bc076b58569fe1fb13e9dbc1b0e0-000000000000000001-0007fe36ac2810e0.folyóirat
felhasználó-1000.folyóirat
[sok más fájl, mint a fenti ...]

Mivel azt akarom, hogy folytassa az olvasást, le kellett rövidítenem a kimenetet, mivel sok fájlt tartalmaz (a példámban több mint 60 fájl), sajnálom ezt! Kísértés, hogy talán kinyit egyet?

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

Hé, látja, ez valójában nem úgy néz ki, mint a szokásos naplófájlok, amelyeket jól lát? Ne aggódjon, ez a fájl nem sérült, csak a systemd egyik aspektusát fedezte fel: a systemd bináris formátumban tárolja a fájlokat. Ezért a lehető legkisebb: a strukturált adatokat, például az időt vagy a helyet egyenesen binárisan tárolják, ami általában kevesebb bájtot igényel, mint a szöveg. De nem csak ez az oka.

A systemd nem csak naplósorokat tárol. Célja a rönkök megfigyelésének és feltárásának megkönnyítése. Ebben a feladatban a naplóüzenetek valójában szövegsorok, amelyeket olyan adatok kísérnek, mint a napló súlyossága (figyelmeztetés, hiba stb.).), vagy akár olyan mezők is, amelyek csak az alkalmazásod számára lehetnek hasznosak (például URL kért).

# journalctl --output = részletes - minden
PRIORITÁS = 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.szolgáltatás
_TRANSPORT = napló
_PID = 1
_COMM = systemd
_EXE = / usr / lib / systemd / systemd
_CMDLINE = / usr / lib / systemd / systemd --switched-root --system --deserialize 76
_SYSTEMD_CGROUP = / init.hatálya
_SYSTEMD_UNIT = init.hatálya
_SYSTEMD_SLICE =-.szelet
_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 = Indult dnf makecache.
# journalctl --catalog --lines = 3000 --pager-end "_TRANSPORT = kernel" EREDMÉNY = kész
_SOURCE_REALTIME_TIMESTAMP = 1532886335471422

Mondtam, hogy sok mező van (itt 25 mező vagy 29 számláló időbélyeg van), a fenti kódrészletek mindegyike csak egy naplóüzenetre vonatkozik! Nagy előnye, hogy a naplóüzenet bármely mezőjének szűrésével futtathat keresést. Ez valóban lehetővé teszi a haladó szűrést.

Az egyik legkézenfekvőbb szűrő, amelyet szeretne, a szolgáltatás szerinti szűrés. Mint fent láthatja, van egy UNIT mező, így könnyedén szűrhet, hogy csak naplóüzeneteket kapjon egy szolgáltatásból. Erről később még többet mesélek.

De ez az adatmennyiség mást is jelent: szinte minden esetben soha nem nyit meg naplófájlt manuálisan, és soha nem fog megérinteni a / var / log / journal mappába. A naplózással kapcsolatos feladatokhoz a journalctl fájlt fogja használni. Nincs ilyen naplóforgatási dolog, mindent a naplóüzenet ideje kezel.

A mezők száma attól is függ, hogy mennyire jó a systemd integrálása az alkalmazásba. Minél több mezőt tartalmaz egy naplóüzenet, annál jobb. Az alaprendszer-szolgáltatások esetében a systemd már gondoskodott a jó integrációról, de más alkalmazások és szolgáltatások esetében az integráció minősége nagyon változó. Normális esetben ennek az idő múlásával jobbnak kell lennie, mivel az emberek megszokják a systemd-t.

Oké, most itt az ideje, hogy felfedezzük a journalctl funkcióit.

A legtöbbször használt parancsok a journalctl fájlhoz

Az első parancs, amelyet érdemes megnézni, a Linux kernel naplóit mutatja. Igen, a systemd kezeli a kernel naplóinak tárolását is, így megkaphatja a korábbi bootok naplóit is. Itt van a parancs:

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

Ez egy személyhívót mutat, ahol láthatja az utolsó üzeneteket. A nyílgombokkal (↑ / ↓) vagy az Oldal fel / Oldal lefelé görgethet az utolsó 3000 sorig. A -catalog zászló utasítja a journalctl-t, hogy a kontextust mutassa a naplósorok körül, hasonlóan a számítógép újraindításához vagy más összefüggésben a szolgáltatás leállításához / indításához. Mindig ezt a zászlót teszem, mivel a kontextus mindig számít, segít megtudni, hogy a naplósor melyik helyzetben jelent meg, így kitalálhatja, miért kapta ezt a napló sort.

Most talán csak az aktuális rendszerindítás naplósorait szeretné látni:

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

Vegye figyelembe, hogy a -boot parancssori argumentum minden helyzetben működik, nemcsak a kernel naplóival. Ha inkább az elejétől kezdi:

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

Nem tudom, hogy ez vonatkozik-e rád, de elegem van a kernelnaplókból! És mi van azzal, ha általános áttekintést nyújt a gépéről?

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

Hú, nagyon sok minden történik a rendszerén! Hasznos lenne egy kis szűrés. Az egyik leggyakrabban használt szűrő megfelel egy adott szolgáltatásnak (például az SSH-kiszolgálónak vagy a HTTP-kiszolgálónak), az SSH-szolgáltatás systemd egység fájlneve sshd.szolgáltatás, tehát:

# journalctl --catalog --lines = 3000 --pager-end --unit = sshd.szolgáltatás

Ez klassz, nem igaz? Nos, csak akkor használható, ha tudja a szolgáltatás nevét - de sok esetben nem tudja a szolgáltatás nevét. Ha ilyen helyzetben van, akkor érdemes felsorolni a szolgáltatásokat, azok leírását és állapotát:

# systemctl list-egységek --type = szolgáltatás

Oké, ez a probléma már megoldódott. De néha hibaüzenetet kap, amelyet egy külső rendszertől, például a saját webhelyétől vagy az asztali alkalmazás egyikétől kap. Tehát valószínűleg keresni szeretne egy adott szót vagy mondatot a naplóüzenetben. A systemd v237 óta ez már lehetséges.

A journalctl-ben a keresés nem különbözteti meg a kis- és nagybetűket, ha a keresett szó mind kisbetűvel szerepel. Tehát ha a port szóra keres, akkor a nagybetűs betűkkel is a port szóra keres. Egy példa:

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

Most, ha olyan szóra keres, mint a CPU, akkor csak a nagybetűkkel keres a CPU-ban, a CPU-ban nem fog keresni.

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

Emlékszik a külső rendszer hibaüzenetére? Általában ezek az üzenetek időbélyeget tartalmaznak. A naplóüzenet szűréséhez érdemes használni azt az időbélyeget. A journalctl fel tudja sorolni az összes naplóüzenetet egy adott dátum és idő óta a -since argumentummal:

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

Ha ez a külső rendszer távoli, vagy UTC időbélyegeket használ, akkor érdemes az UTC dátum és idő alapján szűrni, és a terminálban megjeleníteni az UTC időbélyegeket, hogy ne kelljen fejben átalakítania, ami általában igazán zavaró. Ehhez hozzá kell adnia az UTC-t az időbeli karakterlánc után-ince argumentum után. Ezután hozzá kell adnia az -utc zászlót. Tehát például:

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

Ne feledje, hogy az -utc zászlót egyedül is használhatja, ebben az esetben alapvetően az összes dátumot és időpontot UTC időzóna formájában jeleníti meg.

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

A naplókat jobban kezelheti a journalctl

Amint az összes korábbi parancsnál látható, a systemd naplózása megkönnyíti a szűrést és a hibakeresést, mivel az összes naplósorból egyetlen parancs segítségével választhat, a journalctl. Néhányan valószínűleg ismerték az ősi időket, amikor minden fájlt manuálisan kellett megnyitniuk a / var / log könyvtárban, hogy általános képet kapjanak a problémáról és a történtekről. Az itt elsajátított összes tipp birtokában szilárd eszközökkel rendelkezik, amelyekkel a naplóüzeneteket a kívánt módon tekintheti meg.

5 legjobb arcade játék Linuxhoz
Manapság a számítógépek komoly gépek, amelyeket játékra használnak. Ha nem sikerül megszerezni az új magas pontszámot, akkor tudni fogja, mire gondolo...
Csata a Wesnothért 1.13.6 Megjelent a fejlesztés
Csata a Wesnothért 1.13.A múlt hónapban megjelent 6 a hatodik fejlesztési kiadás az 1-ben.13.x sorozat, és számos fejlesztést hajt végre, nevezetesen ...
A League of Legends telepítése az Ubuntu 14-re.04
Ha rajongsz a League of Legendsért, akkor ez egy lehetőség arra, hogy teszteld a League of Legends játékot. Ne feledje, hogy a LOL a PlayOnLinux rends...