Journald : 基本操作
2025/01/04 |
ログ管理サービス Journald の基本操作です。 |
|
[1] | システム デフォルトで Journald が稼働し、システムのほぼ全てのログは、まず最初に Journald によって保管されます。 よって、[Journald (systemd-journald.service, systemd-journald.socket, systemd-journald-dev-log.socket)] が停止した場合は、システムのほぼ全てのログの記録も停止します。 |
[root@dlp ~]# systemctl status systemd-journald.service ● systemd-journald.service - Journal Service Loaded: loaded (/usr/lib/systemd/system/systemd-journald.service; static) Active: active (running) since Sat 2025-01-04 10:20:36 JST; 10min ago Invocation: 16df889cd2f143089383e4a702696b11 TriggeredBy: ● systemd-journald.socket ○ systemd-journald-audit.socket ● systemd-journald-dev-log.socket Docs: man:systemd-journald.service(8) man:journald.conf(5) Main PID: 708 (systemd-journal) Status: "Processing requests..." Tasks: 1 (limit: 23143) FD Store: 12 (limit: 4224) Memory: 1.7M (peak: 6M) CPU: 39ms CGroup: /system.slice/systemd-journald.service +-- 708 /usr/lib/systemd/systemd-journald |
[2] | Journald のデフォルト設定は [/usr/lib/systemd/journald.conf] で参照可能です。 デフォルトでは全てコメントとなっていますが、記載の値がデフォルト値となっています。 デフォルト値を上書きしたい場合は [/etc/systemd/journald.conf] を作成して値をオーバーライドします。 |
[root@dlp ~]# cat /usr/lib/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 #ReadKMsg=yes Audit= |
[3] | Journald のログの保管場所は [Storage=***] で設定されています。 |
# [Storage=***] の設定値 # # volatile : メモリーに保管 : [/run/log/journal] 配下 # persistent : ディスクに保管 : [/var/log/journal] 配下 # システム起動時等、ディスク書き込み不可な場合はメモリー # auto : [/var/log/journal] が存在する場合はディスク # 存在しない場合はメモリー # none : ログを保管しない # ただし、コンソールや Syslog サービス等、他の設定済み保管ターゲットにはログは転送される # # * メモリー保管は永続的ではない (システム再起動時に過去ログは消去) # CentOS Stream 9 のデフォルトは [auto] 且つ # デフォルトでは [/var/log/journal] は存在しないため [/run/log/journal] に保管
[root@dlp ~]#
grep Storage /usr/lib/systemd/journald.conf #Storage=auto
[root@dlp ~]#
[root@dlp ~]# ll -d /var/log/journal ls: cannot access '/var/log/journal': No such file or directory ll /run/log/journal total 0 drwxr-s---+ 2 root systemd-journal 60 Jan 4 10:20 13e0d866d1054d54a96f6690117098a8 # CentOS Stream の [/run/log] は [tmpfs] ファイルシステム # [tmpfs] はメモリー上のファイルシステム # [tmpfs] の領域サイズは手動設定しない限りは、実メモリー容量の半分が自動で割り当てられる # メモリー上で常に指定容量を確保するのではなく 必要容量を動的に使用する df -h /run/log Filesystem Size Used Avail Use% Mounted on tmpfs 731M 8.6M 722M 2% /run # ディスク保管に変更したい場合は [/var/log/journal] を作成 [root@dlp ~]# mkdir /var/log/journal [root@dlp ~]# systemctl restart systemd-journald.service \
systemd-journald.socket \ systemd-journal-flush.service
[root@dlp ~]#
[root@dlp ~]# ll /run/log/journal total 0 ll /var/log/journal total 0 drwxr-xr-x. 2 root root 28 Jan 4 10:48 13e0d866d1054d54a96f6690117098a8 # * Note # CentOS Stream の デフォルトでは シスログサービス Rsyslog も稼働 # Journald から受け取ったログを Rsyslog が [/var/log] 配下へ保管 # よって Journald の保管設定をディスクに変更しなくとも、ディスク上にもログは保管されている # Rsyslog は Journald の設定 [ForwardToSyslog=***] の値に依存することなく # Rsyslog の [imjournal] モジュールによって Journald のログをインポート |
[4] | Journald のログは [journalctl] コマンドで表示可能です。 |
# 引数なしで全ログを表示 : 結果は [less] コマンドに渡される # [less] に渡さない場合は [--no-pager] オプション付加 # ページャーに渡す 且つ 1 行を全て表示したい場合は [more] に渡す [root@dlp ~]# journalctl Jan 04 10:20:34 localhost kernel: Linux version 6.12.0-35.el10.x86_64 (mockbuil> Jan 04 10:20:34 localhost kernel: Command line: BOOT_IMAGE=(hd0,gpt2)/vmlinuz-6> Jan 04 10:20:34 localhost kernel: BIOS-provided physical RAM map> ..... ..... # [-u UNIT] : 特定の UNIT のログを表示 [root@dlp ~]# journalctl -u sshd.service Jan 04 10:20:38 dlp.srv.world systemd[1]: Starting sshd.service - OpenSSH serve> Jan 04 10:20:38 dlp.srv.world (sshd)[938]: sshd.service: Referenced but unset e> Jan 04 10:20:38 dlp.srv.world sshd[938]: Server listening on 0.0.0.0 port 22. Jan 04 10:20:38 dlp.srv.world systemd[1]: Started sshd.service - OpenSSH server> Jan 04 10:20:38 dlp.srv.world sshd[938]: Server listening on :: port 22. ..... .....[root@dlp ~]# journalctl -u systemd-tmpfiles-clean.timer Jan 04 10:20:37 dlp.srv.world systemd[1]: Started systemd-tmpfiles-clean.timer > ..... ..... # [-k] : 起動時のカーネルメッセージを表示 [root@dlp ~]# journalctl -k Jan 04 10:20:34 localhost kernel: Linux version 6.12.0-35.el10.x86_64 (mockbuil> Jan 04 10:20:34 localhost kernel: Command line: BOOT_IMAGE=(hd0,gpt2)/vmlinuz-6> Jan 04 10:20:34 localhost kernel: BIOS-provided physical RAM map: ..... ..... # [-p Priority] : 特定のプライオリティのログを表示 [root@dlp ~]# journalctl -p err Jan 04 10:20:38 dlp.srv.world kernel: Warning: Unmaintained driver is detected:> ..... ..... # [-g PATTERN] : [MESSAGE] フィールドから特定のワード [PATTERN] を含むログを表示 [root@dlp ~]# journalctl -g "sealert" Jan 04 10:55:11 dlp.srv.world setroubleshoot[1998]: SELinux is preventing /usr/> ..... ..... # [-S DATE] : 特定の DATE 以降のログを表示 # [-U DATE] : 特定の DATE までのログを表示 [root@dlp ~]# journalctl -S "2025-01-01 00:00:00" -U "2025-01-04 23:59:59" Jan 04 10:20:34 localhost kernel: Linux version 6.12.0-35.el10.x86_64 (mockbuil> Jan 04 10:20:34 localhost kernel: Command line: BOOT_IMAGE=(hd0,gpt2)/vmlinuz-6> Jan 04 10:20:34 localhost kernel: BIOS-provided physical RAM map: ..... ..... # その他オプションを表示 [root@dlp ~]# journalctl --help journalctl [OPTIONS...] [MATCHES...] Query the journal. Options: --system Show the system journal --user Show the user journal for the current user ..... ..... |
|