CentOS Stream 10
Sponsored Link

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 ~]#
ll -d /var/log/journal

ls: cannot access '/var/log/journal': No such file or directory
[root@dlp ~]#
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] の領域サイズは手動設定しない限りは、実メモリー容量の半分が自動で割り当てられる
# メモリー上で常に指定容量を確保するのではなく 必要容量を動的に使用する

[root@dlp ~]#
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 ~]#
ll /run/log/journal

total 0
[root@dlp ~]#
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
.....
.....
関連コンテンツ