Naplóüzenetek kezelése Systemd alatt a Journalctl segítségével [Átfogó útmutató]
A Systemd egy élvonalbeli rendszer- és szolgáltatásmenedzser Linux rendszerek számára: egy init démon csere, amelynek célja a folyamatok párhuzamos elindítása a rendszerindításkor. Mostanra számos jelenlegi mainstream disztribúció támogatja, beleértve a Fedora, Debian, Ubuntu, OpenSuSE, Arch, RHEL, CentOS stb.
Korábban kifejtettük az „init” és a „systemd” történetét; ahol megbeszéltük, hogy mi a két démon, miért kellett technikailag az „init”-et „systemd”-re cserélni, valamint a systemd főbb jellemzőit.
A systemd egyik fő előnye a többi általános init rendszerhez képest, hogy támogatja a rendszer- és folyamatnaplózás központi kezelését napló segítségével. Ebből a cikkből megtudhatja, hogyan kezelheti és tekintheti meg a naplóüzeneteket a systemd alatt a journalctl paranccsal Linux alatt.
Fontos: Mielőtt továbblépne ebben az útmutatóban, érdemes megtanulnia, hogyan kezelheti a "Systemd" szolgáltatásokat és egységeket a "Systemctl" paranccsal, valamint hogyan hozhat létre és futtathat újakat szervizegységek a systemd-ben shell szkriptek használatával Linuxban. Ha azonban a fentiekkel minden rendben van, folytassa az olvasást.
A Journald konfigurálása naplóüzenetek gyűjtéséhez a Systemd alatt
A journald egy démon, amely a teljes rendszer naplóbejegyzéseit gyűjti össze és írja; ezek lényegében rendszerindító üzenetek, üzenetek a kernelből és a syslogból vagy különféle alkalmazásokból, és az összes üzenetet egy központi helyen – naplófájlban – tárolja.
A journald viselkedését az alapértelmezett konfigurációs fájlon keresztül szabályozhatja: /etc/systemd/journald.conf, amely a fordításkor jön létre. Ez a fájl olyan beállításokat tartalmaz, amelyek értékeit a helyi környezeti követelményeknek megfelelően módosíthatja.
Az alábbiakban egy példa látható a fájl kinézetére, a cat paranccsal megtekintve.
cat /etc/systemd/journald.conf
See journald.conf(5) for details.
[Journal]
#Storage=auto
#Compress=yes
#Seal=yes
#SplitMode=uid
#SyncIntervalSec=5m
#RateLimitInterval=30s
#RateLimitBurst=1000
#SystemMaxUse=
#SystemKeepFree=
#SystemMaxFileSize=
#SystemMaxFiles=100
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=
#RuntimeMaxFiles=100
#MaxRetentionSec=
#MaxFileSec=1month
#ForwardToSyslog=yes
#ForwardToKMsg=no
#ForwardToConsole=no
#ForwardToWall=yes
#TTYPath=/dev/console
#MaxLevelStore=debug
#MaxLevelSyslog=debug
#MaxLevelKMsg=notice
#MaxLevelConsole=info
#MaxLevelWall=emerg
Vegye figyelembe, hogy a /usr/lib/systemd/*.conf.d/ különböző csomagtelepítések és konfigurációs kivonatok, valamint a futásidejű konfigurációk a /run/systemd/journald.conf fájlban találhatók. d/*.conf, amelyet nem feltétlenül használ.
A naplóadattárolás engedélyezése a lemezen
Számos Linux disztribúció, köztük az Ubuntu és származékai, például a Linux Mint, alapértelmezés szerint nem teszik lehetővé a rendszerindító üzenetek tartós tárolását a lemezen.
Ezt úgy engedélyezheti, hogy a „Tárolás” lehetőséget „persistent” értékre állítja, az alábbiak szerint. Ezzel létrehozza a /var/log/journal könyvtárat, és az összes naplófájlt ebben tárolja.
sudo vi /etc/systemd/journald.conf
OR
sudo nano /etc/systemd/journald.conf
[Journal]
Storage=persistent
További beállításokhoz gépelve keresse meg az összes konfigurálandó beállítás jelentését a „[Journal]” szakaszban.
man journald.conf
A helyes rendszeridő beállítása a Timedatectl paranccsal
A naplózott szolgáltatást használó systemd rendszerben történő megbízható naplókezelés érdekében ellenőrizze, hogy az időbeállítások, beleértve az időzónát is, helyesek-e a rendszeren.
A rendszer aktuális dátum- és időbeállításainak megtekintéséhez írja be.
timedatectl
OR
timedatectl status
Local time: Thu 2017-06-15 13:29:09 EAT
Universal time: Thu 2017-06-15 10:29:09 UTC
RTC time: Thu 2017-06-15 10:29:09
Time zone: Africa/Kampala (EAT, +0300)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no
A megfelelő időzóna és esetleg rendszeridő beállításához használja az alábbi parancsokat.
sudo timedatectl set-timezone Africa/Kampala
sudo timedatectl set-time “13:50:00”
Naplóüzenetek megtekintése a Journalctl paranccsal
A journalctl egy segédprogram, amellyel megtekintheti a systemd napló tartalmát (amelyet a naplózott szolgáltatás ír).
Az összes összegyűjtött napló megjelenítéséhez szűrés nélkül írja be a következőt:
journalctl
-- Logs begin at Wed 2017-06-14 21:56:43 EAT, end at Thu 2017-06-15 12:28:19 EAT
Jun 14 21:56:43 tecmint systemd-journald[336]: Runtime journal (/run/log/journal
Jun 14 21:56:43 tecmint kernel: Initializing cgroup subsys cpuset
Jun 14 21:56:43 tecmint kernel: Initializing cgroup subsys cpu
Jun 14 21:56:43 tecmint kernel: Initializing cgroup subsys cpuacct
Jun 14 21:56:43 tecmint kernel: Linux version 4.4.0-21-generic (buildd@lgw01-21)
Jun 14 21:56:43 tecmint kernel: Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-
Jun 14 21:56:43 tecmint kernel: KERNEL supported cpus:
Jun 14 21:56:43 tecmint kernel: Intel GenuineIntel
Jun 14 21:56:43 tecmint kernel: AMD AuthenticAMD
Jun 14 21:56:43 tecmint kernel: Centaur CentaurHauls
Jun 14 21:56:43 tecmint kernel: x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]
Jun 14 21:56:43 tecmint kernel: x86/fpu: Supporting XSAVE feature 0x01: 'x87 flo
Jun 14 21:56:43 tecmint kernel: x86/fpu: Supporting XSAVE feature 0x02: 'SSE reg
Jun 14 21:56:43 tecmint kernel: x86/fpu: Supporting XSAVE feature 0x04: 'AVX reg
Jun 14 21:56:43 tecmint kernel: x86/fpu: Enabled xstate features 0x7, context si
Jun 14 21:56:43 tecmint kernel: x86/fpu: Using 'eager' FPU context switches.
Jun 14 21:56:43 tecmint kernel: e820: BIOS-provided physical RAM map:
Jun 14 21:56:43 tecmint kernel: BIOS-e820: [mem 0x0000000000000000-0x00000000000
Jun 14 21:56:43 tecmint kernel: BIOS-e820: [mem 0x0000000000090000-0x00000000000
Jun 14 21:56:43 tecmint kernel: BIOS-e820: [mem 0x0000000000100000-0x000000001ff
Jun 14 21:56:43 tecmint kernel: BIOS-e820: [mem 0x0000000020000000-0x00000000201
Jun 14 21:56:43 tecmint kernel: BIOS-e820: [mem 0x0000000020200000-0x00000000400
Naplóüzenetek megtekintése a rendszerindítás alapján
A --list-boots
kapcsolóval megjelenítheti a rendszerindítási számok listáját (az aktuális rendszerindításhoz viszonyítva), azok azonosítóit, valamint a rendszerindításhoz tartozó első és utolsó üzenet időbélyegét.
journalctl --list-boots
-1 9fb590b48e1242f58c2579defdbbddc9 Thu 2017-06-15 16:43:36 EAT—Thu 2017-06-15 1
0 464ae35c6e264a4ca087949936be434a Thu 2017-06-15 16:47:36 EAT—Thu 2017-06-15 1
A naplóbejegyzések megtekintéséhez az aktuális rendszerindításból (szám: 0), használja a -b
kapcsolót így (ugyanúgy, mint a fenti mintakimenet).
journalctl -b
és az előző rendszerindításból származó napló megtekintéséhez használja a -1
relatív mutatót a -b
opcióval az alábbiak szerint.
journalctl -b -1
Alternatív megoldásként használja a rendszerindító azonosítót így.
journalctl -b 9fb590b48e1242f58c2579defdbbddc9
Naplóüzenetek szűrése idő alapján
Ha az időt koordinált világidő (UTC) formátumban szeretné használni, adja hozzá az --utc
paramétereket az alábbiak szerint.
journalctl --utc
Ha látni szeretné az összes bejegyzést egy adott dátum és időpont óta, pl. 2017. június 15-én 8:15-kor írja be ezt a parancsot.
journalctl --since "2017-06-15 08:15:00"
journalctl --since today
journalctl --since yesterday
Legutóbbi naplóüzenetek megtekintése
A legutóbbi naplóüzenetek (alapértelmezés szerint 10) megtekintéséhez használja a -n
jelzőt az alábbiak szerint.
journalctl -n
journalctl -n 20
Kernel által generált naplóüzenetek megtekintése
Ha csak a kernel üzeneteit szeretné látni, hasonlóan a dmesg parancs kimenetéhez, használja a -k
jelzőt.
journalctl -k
journalctl -k -b
journalctl -k -b 9fb590b48e1242f58c2579defdbbddc9
Egységek által generált naplóüzenetek megtekintése
Egy adott egység összes naplóbejegyzésének megtekintéséhez használja a -u
kapcsolót az alábbiak szerint.
journalctl -u apache2.service
Az aktuális rendszerindítás nullázásához írja be ezt a parancsot.
journalctl -b -u apache2.service
Az előző rendszerindítás naplóinak megjelenítéséhez használja ezt.
journalctl -b -1 -u apache2.service
Íme néhány további hasznos parancs:
journalctl -u apache2.service
journalctl -u apache2.service --since today
journalctl -u apache2.service -u nagios.service --since yesterday
A folyamatok által generált naplóüzenetek megtekintése
Egy adott folyamat által generált naplók megtekintéséhez adja meg a PID-t így.
journalctl _PID=19487
journalctl _PID=19487 --since today
journalctl _PID=19487 --since yesterday
Felhasználói vagy csoportazonosító által generált naplóüzenetek megtekintése
Egy adott felhasználó vagy csoport által generált naplók megtekintéséhez adja meg a felhasználó vagy csoport azonosítóját, így.
journalctl _UID=1000
journalctl _UID=1000 --since today
journalctl _UID=1000 -b -1 --since today
Fájl által generált naplók megtekintése
Egy fájl (esetleg egy végrehajtható fájl) által generált összes napló megjelenítéséhez, például a D-Bus vagy a bash futtatható fájlok, egyszerűen írja be.
journalctl /usr/bin/dbus-daemon
journalctl /usr/bin/bash
Naplóüzenetek megtekintése prioritás szerint
A kimenetet üzenetprioritások vagy prioritási tartományok alapján is szűrheti a -p
jelző használatával. A lehetséges értékek: 0 – emerg, 1 – alert, 2 – crit, 3 – err, 4 – Figyelmeztetés, 5 – Figyelmeztetés, 6 – Info, 7 – Debug):
journalctl -p err
Tartomány megadásához használja az alábbi formátumot (figyelmeztetés).
journalctl -p 1..4
OR
journalctl -p emerg..warning
Tekintse meg a naplóüzeneteket valós időben
Gyakorlatilag megtekintheti a naplók írását a -f
opcióval (hasonlóan a tail -f funkcióhoz).
journalctl -f
Napló megjelenítési formázás kezelése
Ha szabályozni szeretné a naplóbejegyzések kimeneti formázását, adja hozzá a -o
jelzőt, és használja a következő beállításokat: cat, export, json, json-pretty, json-sse, short, short-iso, rövid-monoton, röviden pontos és bőbeszédű (ellenőrizd a lehetőségek jelentését a man oldalon:
A cat opció megjeleníti az egyes naplóbejegyzések tényleges üzenetét metaadatok (időbélyeg és így tovább) nélkül.
journalctl -b -u apache2.service -o cat
Naplók kezelése rendszeren
A naplófájl belső konzisztenciájának ellenőrzéséhez használja a --verify
opciót. Ha minden rendben van, a kimenetnek PASS-t kell jeleznie.
journalctl --verify
PASS: /run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/system.journal
491f68: Unused data (entry_offset==0)
PASS: /run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/system@816533ecd00843c4a877a0a962e124f2-0000000000003184-000551f9866c3d4d.journal
PASS: /run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/system@816533ecd00843c4a877a0a962e124f2-0000000000001fc8-000551f5d8945a9e.journal
PASS: /run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/system@816533ecd00843c4a877a0a962e124f2-0000000000000d4f-000551f1becab02f.journal
PASS: /run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/system@816533ecd00843c4a877a0a962e124f2-0000000000000001-000551f01cfcedff.journal
Régi naplófájlok törlése
Az összes naplófájl aktuális lemezhasználatát is megjelenítheti a --disk-usage
opciókkal. Megmutatja az összes archivált és aktív naplófájl lemezhasználatának összegét:
journalctl --disk-usage
A régi (archivált) naplófájlok törléséhez futtassa az alábbi parancsokat:
sudo journalctl --vacuum-size=50M #delete files until the disk space they use falls below the specified size
sudo journalctl --vacuum-time=1years #delete files so that all journal files contain no data older than the specified timespan
sudo journalctl --vacuum-files=4 #delete files so that no more than the specified number of separate journal files remain in storage location
Naplófájlok forgatása
Végül, de nem utolsósorban, a --rotate
kapcsolóval utasíthatja a naplót a naplófájlok elforgatására. Vegye figyelembe, hogy ez az utasítás nem tér vissza addig, amíg az elforgatási művelet be nem fejeződik:
sudo journalctl --rotate
A részletes használati útmutatóért és a lehetőségekért tekintse meg a Journalctl kézikönyvoldalát az alábbiak szerint.
man journalctl
Nézzen meg néhány hasznos cikket.
- Rendszerindítási folyamatok és szolgáltatások kezelése (SysVinit, Systemd és Upstart)
- Petiti – Nyílt forráskódú naplóelemző eszköz Linux SysAdmins számára
- A naplóforgatás beállítása és kezelése a Logrotate használatával Linux alatt
- lnav – Az Apache naplók megtekintése és elemzése Linux terminálról
Egyelőre ennyi. Használja az alábbi visszajelzéseket, ha kérdéseket szeretne feltenni vagy gondolatait feltenni a témával kapcsolatban.