[20] Journald – zarządzanie logami
19 marca 2022To 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