[20] Journald – zarządzanie logami

19 marca 2022 Wyłączono przez Adam [zicherka] Nogły

To jest podstawowe użycie usługi Journald, czyli demona usługi zarządzania dziennikami.

[1] Domyślnie Journald jest uruchomiony i prawie wszystkie dane logowania w systemie są gromadzone przez Journald.

W związku z tym, jeśli [Journald (systemd-journald.service, systemd-journald.socket, systemd-journald-dev-log.socket)] nie działa, zbieranie prawie wszystkich danych rejestrowania również zostanie zatrzymane.

[root@vlsr01 ~]# systemctl status systemd-journald.service
  • systemd-journald.service - Journal Service
   Loaded: loaded (/usr/lib/systemd/system/systemd-journald.service; static; vendor preset>
   Active: active (running) since Fri 2022-03-18 18:55:56 CET; 3h 10min ago
     Docs: man:systemd-journald.service(8)
           man:journald.conf(5)
 Main PID: 796 (systemd-journal)
   Status: "Processing requests..."
    Tasks: 1 (limit: 24856)
   Memory: 1.6M
   CGroup: /system.slice/systemd-journald.service

[2] Istnieje możliwość zmiany ustawień Journald na [/etc/systemd/journald.conf].

Wszystkie opcje są domyślnie zakomentowane, jednak są to domyślne parametry Journald w CentOS Stream 8.

[root@vlsr01 ~]# cat /etc/systemd/journald.conf
[Journal]
#Storage=auto
#Compress=yes
#Seal=yes
#SplitMode=uid
#SyncIntervalSec=5m
#RateLimitIntervalSec=30s
#RateLimitBurst=10000
#SystemMaxUse=
#SystemKeepFree=
#SystemMaxFileSize=
#SystemMaxFiles=100
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=
#RuntimeMaxFiles=100
#MaxRetentionSec=
#MaxFileSec=1month
#ForwardToSyslog=no
#ForwardToKMsg=no
#ForwardToConsole=no
#ForwardToWall=yes
#TTYPath=/dev/console
#MaxLevelStore=debug
#MaxLevelSyslog=debug
#MaxLevelKMsg=notice
#MaxLevelConsole=info
#MaxLevelWall=emerg
#LineMax=48K

[3] Miejsce przechowywania danych logowania jest ustawione na [Storage=***] w [/etc/systemd/journald.conf].

# parametry [Storage=***]
# volatile: przechowywane tylko w pamięci : w [/run/log/journal]
# persistent: przechowywane na dysku : w [/var/log/journal]
# ale jeśli niemożliwe jest zapisanie na dysku, jak wczesny rozruch, powróć do pamięci
# auto : przechowywane na dysku, jeśli istnieje [/var/log/journal]
# jeśli nie istnieje, przechowywane w pamięci
# none: nie przechowuje wszystkich danych
# ale przekazywanie do innych celów, takich jak demon Syslog, jeśli są skonfigurowane
# przechowywanie w pamięci nie jest trwałe, po ponownym uruchomieniu systemu dane logowania są usuwane
# w domyślnych ustawieniach CentOS Stream 8 jest ustawiony [auto], a także
# [/var/log/journal] nie istnieje, więc dane logowania są przechowywane w [/run/log/journal]

[root@vlsr01 ~]# grep Storage /etc/systemd/journald.conf
#Storage=auto

[root@vlsr01 ~]# ll -d /var/log/journal
ls: nie ma dostępu do '/var/log/journal': Nie ma takiego pliku ani katalogu

[root@vlsr01 ~]# ll /run/log/journal
razem 0
drwxr-s---+ 2 root systemd-journal 60 03-18 18:55 d13a02dc483f4e19b25a1046cd70d853

# [/run/log] w CentOS 8 Stream jest typu [tmpfs]
# [tmpfs] istnieje w pamięci
# rozmiar partycji [tmpfs] wynosi połowę wielkości pamięci i nie jest ustawiany manualnie
# rozmiar nie jest staly, lecz jest przydzielany dynamicznie

[root@vlsr01 ~]# df -h /run/log
System plików  rozm. użyte dost. %uż. zamont. na
tmpfs           2,0G  8,6M  2,0G   1% /run

# jeśli chcesz zmienić miejsce zapisywania na dysk, utwórz katalog [/var/log/journal]
[root@vlsr01 ~]# mkdir /var/log/journal
[root@vlsr01 ~]# systemctl restart systemd-journald.service systemd-journald.socket systemd-journald-dev-log.socket
[root@vlsr01 ~]# ll /run/log/journal
ls: nie ma dostępu do '/run/log/journal': Nie ma takiego pliku ani katalogu
[root@vlsr01 ~]# ll /var/log/journal
razem 0
drwxr-xr-x. 2 root root 28 03-18 22:15 d13a02dc483f4e19b25a1046cd70d853

# na domyślnych ustawieniach CentOS Stream 8, Rsyslog, który jest demonem syslog, również działa
# i przechowuje dane logowania otrzymane z Journald w katalogu [/var/log]
# więc dane logowania są przechowywane na dysku, nawet jeśli nie zmienisz ustawień przechowywania w Journald
# Rsyslog importuje dane logowania z Journald za pomocą modułu Rsyslog [imjournal], więc
# parametr [ForwardToSyslog=***] w Journald nie wpływają na wysyłanie danych do Rsyslog

[4] Aby wyświetlić zapisane dane logowania przez Journald, użyj polecenia [journalctl].

# pokaż wszystkie dane bez żadnej opcji: wyniki są wysyłane do polecenia [less]
# jeśli nie wyślesz do [less], dodaj opcję [--no-pager]
[root@vlsr01 ~]# journalctl
-- Logs begin at Fri 2022-03-18 18:55:50 CET, end at Fri 2022-03-18 22:18:32 CET. --
mar 18 18:55:50 vlsr01.zicher.lab kernel: Linux version 4.18.0-365.el8.x86_64 (mockbuild@k>
mar 18 18:55:50 vlsr01.zicher.lab kernel: Command line: BOOT_IMAGE=(hd0,gpt2)/vmlinuz-4.18>
mar 18 18:55:50 vlsr01.zicher.lab kernel: Disabled fast string operations
mar 18 18:55:50 vlsr01.zicher.lab kernel: x86/fpu: Supporting XSAVE feature 0x001: 'x87 fl>

# [-u Unit]: pokazuje logi wyspecyfikowanej jednostki
[root@vlsr01 ~]# journalctl -u sshd.service
-- Logs begin at Fri 2022-03-18 18:55:50 CET, end at Fri 2022-03-18 22:18:32 CET. --
mar 18 18:56:02 vlsr01.zicher.lab systemd[1]: Starting OpenSSH server daemon...
mar 18 18:56:03 vlsr01.zicher.lab sshd[1004]: Server listening on 0.0.0.0 port 22.
[root@vlsr01 ~]# journalctl -u systemd-tmpfiles-clean.timer
-- Logs begin at Fri 2022-03-18 18:55:50 CET, end at Fri 2022-03-18 22:18:32 CET. --
mar 18 18:55:59 vlsr01.zicher.lab systemd[1]: Started Daily Cleanup of Temporary Directori>

# [-k]: pokazuje wiadomości kernel’a
[root@vlsr01 ~]# journalctl -k
-- Logs begin at Fri 2022-03-18 18:55:50 CET, end at Fri 2022-03-18 22:18:32 CET. --
mar 18 18:55:50 vlsr01.zicher.lab kernel: Linux version 4.18.0-365.el8.x86_64 (mockbuild@kbuild>
mar 18 18:55:50 vlsr01.zicher.lab kernel: Command line: BOOT_IMAGE=(hd0,gpt2)/vmlinuz-4.18.0-36>
mar 18 18:55:50 vlsr01.zicher.lab kernel: Disabled fast string operations

# [-p Priority]: pokazuje logi z wyszczególnionym priorytetem
[root@vlsr01 ~]# journalctl -p err
-- Logs begin at Fri 2022-03-18 18:55:50 CET, end at Fri 2022-03-18 22:18:32 CET. --
mar 18 18:55:50 vlsr01.zicher.lab systemd-modules-load[321]: Failed to insert 'ipmi_si': No suc>
mar 18 18:55:56 vlsr01.zicher.lab systemd-modules-load[797]: Failed to insert 'ipmi_si': No suc>

# [-g PATTERN]: pokazuje logi zawierające słowo [PATTERN] – polu [MESSAGE]
[root@vlsr01 ~]# journalctl -g "sealert"
-- Logs begin at Fri 2022-03-18 18:55:50 CET, end at Fri 2022-03-18 22:18:32 CET. --
-- No entries –

# pokaż pomoc
[root@vlsr01 ~]# journalctl --help --no-pager
journalctl [OPTIONS...] [MATCHES...]
Query the journal.
Options:
     --system                Show the system journal
     --user                  Show the user journal for the current user
  -M --machine=CONTAINER     Operate on local container