systemd のログを確認する journalctl

2020/04/18

SSD に優しい設定ってなんだろう? をFedora 19 にもやってみようと思って設定していた。

そうすると /var/log に journal というディレクトリがあり、800MB 近いログが溜まっている。journal と見て、一瞬ファイルシステムのモノかとギョッとしたけど調べたら systemd のログということがわかった。

サーバーとして使った事ないから systemd はよく判らなかった。
とりあえず分かる範囲で調べる。

先ずは journal を more で見てみる… バイナリでしたw journal のログを確認するためのコマンドは journalctl というらしい。

ヘルプの表示

$ sudo journalctl -h # or journalctl --help

バージョンの確認

試しに打ってみるとこんな感じだったので、204 ってことなのかな。

$ sudo journalctl --version
systemd 204
+PAM +LIBWRAP +AUDIT +SELINUX +IMA +SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ

ページ機能なし

デフォルトでは | less
でページングしている形になるが、このオプションをつけると全部表示される。
特定の単語を探して grep する時とかに有効そう。

$ sudo journalctl --no-pager

出力を plain text にする

出力が plain text で表示される。
デフォルトのコンソール表示ではエスケープシーケンスが入っていて、文字に装飾がついている。

$ sudo journalctl --full

出力を完全表示

ログを省略せず表示させ、コンソールで見た時用に文字の装飾が入っている。

$ sudo journalctl -a  # or journalctl --all

ログの最新(末尾)を表示し状態を更新し続ける

昔の tail -f /var/log/message みたいなもんかな。

$ sudo journalctl -f  # or journalctl --follow

ログの最新(末尾) 1000 件を表示する

昔の tail -n 1000 /var/log/message | less みたいなもんかな。

$ sudo journalctl -e  # or journalctl --pager-end

ログの最新(末尾)から指定した件数を表示する

昔の tail -n 件数 /var/log/message | less みたいなもんかな。
デフォルトでは 10 件表示。

$ sudo journalctl -n  # or journalctl --lines

末尾から 20 件表示する例。

$ sudo journalctl -n 20  # or journalctl --lines=20

全ログの出力

Show all stored output lines, even in follow mode. Undoes the effect
of –lines=.

ってヘルプに書いてあるけど、手元の環境で違いがでない。
恐らく、全てのログを出力するのではないかな。 ちなみに –lines
は無効化するっぽい。

$ sudo journalctl --no-tail

出力を反転させる

デフォルトでは古い順でログが出力されるが、新しい順に表示させる。

$ sudo journalctl -r  # or journalctl --reverse

出力フォーマットを変える

  • short: デフォルトの出力形式
  • short-monotonic: タイムスタンプが経過時間になり、表示が簡素化される
  • verbose: 全ての行に対して詳細なログを表示する
  • export: journal を plain-text (Journal Export Format 形式)
    で出力する
  • json: 1データ 1行づつ JSON 形式で出力する
  • json-pretty: JSON 形式だが、人に見やすい形(複数行)に成形されている
  • json-sse: Server-Sent Events に向いた JSON

JSON 形式での出力するコマンド例

$ sudo journalctl -o json# or journalctl --output=json
  • short での出力例
-- Logs begin at 水 2014-03-12 19:30:12 JST, end at 木 2014-03-13 02:35:59 JST. --
 3月 12 19:30:12 localhost.localdomain systemd-journal[66]: Allowing runtime journal files to grow to 245.7M.
 3月 12 19:30:12 localhost.localdomain kernel: Initializing cgroup subsys cpuset
 3月 12 19:30:12 localhost.localdomain kernel: Initializing cgroup subsys cpu
 3月 12 19:30:12 localhost.localdomain kernel: Initializing cgroup subsys cpuacct
  • short-monotonic での出力例
-- Logs begin at 水 2014-03-12 19:30:12 JST, end at 木 2014-03-13 02:36:23 JST. --
[    2.177326] localhost.localdomain systemd-journal[66]: Allowing runtime journal files to grow to 245.7M.
[    0.000000] localhost.localdomain kernel: Initializing cgroup subsys cpuset
[    0.000000] localhost.localdomain kernel: Initializing cgroup subsys cpu
[    0.000000] localhost.localdomain kernel: Initializing cgroup subsys cpuacct
  • verbose での出力例
-- Logs begin at 水 2014-03-12 19:30:12 JST, end at 木 2014-03-13 02:37:00 JST. --
水 2014-03-12 19:30:12 JST [s=7cf0970b1bb44465b08531345d8fa9f3;i=1;b=de10f6f7c322406eb35df53b2218ed1b;m=21392e;t=4f46652629b05;x=79feb053e18e37af]
        PRIORITY=6
        _TRANSPORT=driver
        MESSAGE=Allowing runtime journal files to grow to 245.7M.
        _PID=66
        _UID=0
        _GID=0
        _COMM=systemd-journal
        _EXE=/usr/lib/systemd/systemd-journald
        _CMDLINE=/usr/lib/systemd/systemd-journald
        _SYSTEMD_CGROUP=/system/systemd-journald.service
        _SYSTEMD_UNIT=systemd-journald.service
        _SELINUX_CONTEXT=kernel
        _BOOT_ID=de10f6f7c322406eb35df53b2218ed1b
        _MACHINE_ID=7725dfc225d14958a625ddaaaea5962b
        _HOSTNAME=localhost.localdomain
水 2014-03-12 19:30:12 JST [s=7cf0970b1bb44465b08531345d8fa9f3;i=2;b=de10f6f7c322406eb35df53b2218ed1b;m=2139b0;t=4f46652629b87;x=5512d805b7c27a94]
        PRIORITY=6
        _BOOT_ID=de10f6f7c322406eb35df53b2218ed1b
        _MACHINE_ID=7725dfc225d14958a625ddaaaea5962b
        _HOSTNAME=localhost.localdomain
        _SOURCE_MONOTONIC_TIMESTAMP=0
        _TRANSPORT=kernel
        SYSLOG_IDENTIFIER=kernel
        MESSAGE=Initializing cgroup subsys cpuset
  • export での出力例
__CURSOR=s=7cf0970b1bb44465b08531345d8fa9f3;i=1;b=de10f6f7c322406eb35df53b2218ed1b;m=21392e;t=4f46652629b05;x=79feb053e18e37af
__REALTIME_TIMESTAMP=1394620212878085
__MONOTONIC_TIMESTAMP=2177326
_BOOT_ID=de10f6f7c322406eb35df53b2218ed1b
PRIORITY=6
_TRANSPORT=driver
MESSAGE=Allowing runtime journal files to grow to 245.7M.
_PID=66
_UID=0
_GID=0
_COMM=systemd-journal
_EXE=/usr/lib/systemd/systemd-journald
_CMDLINE=/usr/lib/systemd/systemd-journald
_SYSTEMD_CGROUP=/system/systemd-journald.service
_SYSTEMD_UNIT=systemd-journald.service
_SELINUX_CONTEXT=kernel
_MACHINE_ID=7725dfc225d14958a625ddaaaea5962b
_HOSTNAME=localhost.localdomain

__CURSOR=s=7cf0970b1bb44465b08531345d8fa9f3;i=2;b=de10f6f7c322406eb35df53b2218ed1b;m=2139b0;t=4f46652629b87;x=5512d805b7c27a94
__REALTIME_TIMESTAMP=1394620212878215
__MONOTONIC_TIMESTAMP=2177456
_BOOT_ID=de10f6f7c322406eb35df53b2218ed1b
PRIORITY=6
_MACHINE_ID=7725dfc225d14958a625ddaaaea5962b
_HOSTNAME=localhost.localdomain
_SOURCE_MONOTONIC_TIMESTAMP=0
_TRANSPORT=kernel
SYSLOG_IDENTIFIER=kernel
MESSAGE=Initializing cgroup subsys cpuset
  • json での出力例

{ "__CURSOR" : "s=7cf0970b1bb44465b08531345d8fa9f3;i=1;b=de10f6f7c322406eb35df53b2218ed1b;m=21392e;t=4f46652629b05;x=79feb053e18e37af", "__REALTIME_TIMESTAMP" : "1394620212878085", "__MONOTONIC_TIMESTAMP" : "2177326", "_BOOT_ID" : "de10f6f7c322406eb35df53b2218ed1b", "PRIORITY" : "6", "_TRANSPORT" : "driver", "MESSAGE" : "Allowing runtime journal files to grow to 245.7M.", "_PID" : "66", "_UID" : "0", "_GID" : "0", "_COMM" : "systemd-journal", "_EXE" : "/usr/lib/systemd/systemd-journald", "_CMDLINE" : "/usr/lib/systemd/systemd-journald", "_SYSTEMD_CGROUP" : "/system/systemd-journald.service", "_SYSTEMD_UNIT" : "systemd-journald.service", "_SELINUX_CONTEXT" : "kernel", "_MACHINE_ID" : "7725dfc225d14958a625ddaaaea5962b", "_HOSTNAME" : "localhost.localdomain" }
{ "__CURSOR" : "s=7cf0970b1bb44465b08531345d8fa9f3;i=2;b=de10f6f7c322406eb35df53b2218ed1b;m=2139b0;t=4f46652629b87;x=5512d805b7c27a94", "__REALTIME_TIMESTAMP" : "1394620212878215", "__MONOTONIC_TIMESTAMP" : "2177456", "_BOOT_ID" : "de10f6f7c322406eb35df53b2218ed1b", "PRIORITY" : "6", "_MACHINE_ID" : "7725dfc225d14958a625ddaaaea5962b", "_HOSTNAME" : "localhost.localdomain", "_SOURCE_MONOTONIC_TIMESTAMP" : "0", "_TRANSPORT" : "kernel", "SYSLOG_IDENTIFIER" : "kernel", "MESSAGE" : "Initializing cgroup subsys cpuset" }
{ "__CURSOR" : "s=7cf0970b1bb44465b08531345d8fa9f3;i=3;b=de10f6f7c322406eb35df53b2218ed1b;m=2139c8;t=4f46652629b9e;x=8db8687f57d40c13", "__REALTIME_TIMESTAMP" : "1394620212878238", "__MONOTONIC_TIMESTAMP" : "2177480", "_BOOT_ID" : "de10f6f7c322406eb35df53b2218ed1b", "PRIORITY" : "6", "_MACHINE_ID" : "7725dfc225d14958a625ddaaaea5962b", "_HOSTNAME" : "localhost.localdomain", "_SOURCE_MONOTONIC_TIMESTAMP" : "0", "_TRANSPORT" : "kernel", "SYSLOG_IDENTIFIER" : "kernel", "MESSAGE" : "Initializing cgroup subsys cpu" }
{ "__CURSOR" : "s=7cf0970b1bb44465b08531345d8fa9f3;i=4;b=de10f6f7c322406eb35df53b2218ed1b;m=2139dd;t=4f46652629bb3;x=afad3e41687089bf", "__REALTIME_TIMESTAMP" : "1394620212878259", "__MONOTONIC_TIMESTAMP" : "2177501", "_BOOT_ID" : "de10f6f7c322406eb35df53b2218ed1b", "PRIORITY" : "6", "_MACHINE_ID" : "7725dfc225d14958a625ddaaaea5962b", "_HOSTNAME" : "localhost.localdomain", "_SOURCE_MONOTONIC_TIMESTAMP" : "0", "_TRANSPORT" : "kernel", "SYSLOG_IDENTIFIER" : "kernel", "MESSAGE" : "Initializing cgroup subsys cpuacct" }
{ "__CURSOR" : "s=7cf0970b1bb44465b08531345d8fa9f3;i=5;b=de10f6f7c322406eb35df53b2218ed1b;m=2139ee;t=4f46652629bc4;x=78eecee17b32a43a", "__REALTIME_TIMESTAMP" : "1394620212878276", "__MONOTONIC_TIMESTAMP" : "2177518", "_BOOT_ID" : "de10f6f7c322406eb35df53b2218ed1b", "_MACHINE_ID" : "7725dfc225d14958a625ddaaaea5962b", "_HOSTNAME" : "localhost.localdomain", "_SOURCE_MONOTONIC_TIMESTAMP" : "0", "_TRANSPORT" : "kernel", "SYSLOG_IDENTIFIER" : "kernel", "PRIORITY" : "5", "MESSAGE" : "Linux version 3.13.5-103.fc19.x86_64 ([email protected]) (gcc version 4.8.2 20131212 (Red Hat 4.8.2-7) (GCC) ) #1 SMP Mon Mar 3 18:46:36 UTC 2014" }
  • json-pretty での出力例
{
        "__CURSOR" : "s=7cf0970b1bb44465b08531345d8fa9f3;i=1;b=de10f6f7c322406eb35df53b2218ed1b;m=21392e;t=4f46652629b05;x=79feb053e18e37af",
        "__REALTIME_TIMESTAMP" : "1394620212878085",
        "__MONOTONIC_TIMESTAMP" : "2177326",
        "_BOOT_ID" : "de10f6f7c322406eb35df53b2218ed1b",
        "PRIORITY" : "6",
        "_TRANSPORT" : "driver",
        "MESSAGE" : "Allowing runtime journal files to grow to 245.7M.",
        "_PID" : "66",
        "_UID" : "0",
        "_GID" : "0",
        "_COMM" : "systemd-journal",
        "_EXE" : "/usr/lib/systemd/systemd-journald",
        "_CMDLINE" : "/usr/lib/systemd/systemd-journald",
        "_SYSTEMD_CGROUP" : "/system/systemd-journald.service",
        "_SYSTEMD_UNIT" : "systemd-journald.service",
        "_SELINUX_CONTEXT" : "kernel",
        "_MACHINE_ID" : "7725dfc225d14958a625ddaaaea5962b",
        "_HOSTNAME" : "localhost.localdomain"
}
{
        "__CURSOR" : "s=7cf0970b1bb44465b08531345d8fa9f3;i=2;b=de10f6f7c322406eb35df53b2218ed1b;m=2139b0;t=4f46652629b87;x=5512d805b7c27a94",
        "__REALTIME_TIMESTAMP" : "1394620212878215",
        "__MONOTONIC_TIMESTAMP" : "2177456",
        "_BOOT_ID" : "de10f6f7c322406eb35df53b2218ed1b",
        "PRIORITY" : "6",
        "_MACHINE_ID" : "7725dfc225d14958a625ddaaaea5962b",
        "_HOSTNAME" : "localhost.localdomain",
        "_SOURCE_MONOTONIC_TIMESTAMP" : "0",
        "_TRANSPORT" : "kernel",
        "SYSLOG_IDENTIFIER" : "kernel",
        "MESSAGE" : "Initializing cgroup subsys cpuset"
}
  • json-sse での出力例
data: { "__CURSOR" : "s=7cf0970b1bb44465b08531345d8fa9f3;i=1;b=de10f6f7c322406eb35df53b2218ed1b;m=21392e;t=4f46652629b05;x=79feb053e18e37af", "__REALTIME_TIMESTAMP" : "1394620212878085", "__MONOTONIC_TIMESTAMP" : "2177326", "_BOOT_ID" : "de10f6f7c322406eb35df53b2218ed1b", "PRIORITY" : "6", "_TRANSPORT" : "driver", "MESSAGE" : "Allowing runtime journal files to grow to 245.7M.", "_PID" : "66", "_UID" : "0", "_GID" : "0", "_COMM" : "systemd-journal", "_EXE" : "/usr/lib/systemd/systemd-journald", "_CMDLINE" : "/usr/lib/systemd/systemd-journald", "_SYSTEMD_CGROUP" : "/system/systemd-journald.service", "_SYSTEMD_UNIT" : "systemd-journald.service", "_SELINUX_CONTEXT" : "kernel", "_MACHINE_ID" : "7725dfc225d14958a625ddaaaea5962b", "_HOSTNAME" : "localhost.localdomain"}

data: { "__CURSOR" : "s=7cf0970b1bb44465b08531345d8fa9f3;i=2;b=de10f6f7c322406eb35df53b2218ed1b;m=2139b0;t=4f46652629b87;x=5512d805b7c27a94", "__REALTIME_TIMESTAMP" : "1394620212878215", "__MONOTONIC_TIMESTAMP" : "2177456", "_BOOT_ID" : "de10f6f7c322406eb35df53b2218ed1b", "PRIORITY" : "6", "_MACHINE_ID" : "7725dfc225d14958a625ddaaaea5962b", "_HOSTNAME" : "localhost.localdomain", "_SOURCE_MONOTONIC_TIMESTAMP" : "0", "_TRANSPORT" : "kernel", "SYSLOG_IDENTIFIER" : "kernel", "MESSAGE" : "Initializing cgroup subsys cpuset"}

data: { "__CURSOR" : "s=7cf0970b1bb44465b08531345d8fa9f3;i=3;b=de10f6f7c322406eb35df53b2218ed1b;m=2139c8;t=4f46652629b9e;x=8db8687f57d40c13", "__REALTIME_TIMESTAMP" : "1394620212878238", "__MONOTONIC_TIMESTAMP" : "2177480", "_BOOT_ID" : "de10f6f7c322406eb35df53b2218ed1b", "PRIORITY" : "6", "_MACHINE_ID" : "7725dfc225d14958a625ddaaaea5962b", "_HOSTNAME" : "localhost.localdomain", "_SOURCE_MONOTONIC_TIMESTAMP" : "0", "_TRANSPORT" : "kernel", "SYSLOG_IDENTIFIER" : "kernel", "MESSAGE" : "Initializing cgroup subsys cpu"}

メッセージのカタログを表示する

メッセージにカタログに沿ったログを出力する。
ログの形式はメール(RFC822)に類似している。

$ sudo journalctl -x  # or journalctl --catalog
  • Journal Message Catalogs の出力例
3月 13 12:05:29 localhost.localdomain systemd-journal[66]: Journal started
-- Subject: The Journal has been started
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- The system journal process has been starting up, opened the journal
-- files for writing and is now ready to process requests.
 3月 13 12:05:29 localhost.localdomain systemd[1]: Started Setup Virtual Console.
-- Subject: Unit systemd-vconsole-setup.service has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit systemd-vconsole-setup.service has finished starting up.
--
-- The start-up result is done.

root ではない時にアクセス出来ない警告を表示しない(未検証)

試して見てるんだけど再現しない。
複数ユーザーで使っていたら判るんだろうけど。

$ journalctl -q  # or journalctl --quiet

リモートを含む全てのログを合わせる(未検証)

手元に環境が無いから試せてないけどそういう意味じゃないかな?

$ journalctl -m  # or journalctl --merge

ブートログを表示する

ブートログを表示する。デフォルトでは直近のブートログ。

$ journalctl -b  # or journalctl --this-boot

相対値での取得も可能。

$ journalctl -b 2 # 2回前のブートログの時

絶対値での取得も可能な模様(未確認)

$ journalctl -b _BOOT_ID=xxxxx  # ブートIDで絶対値取得できるらしい

ユニットを指定してログを表示する

指定したユニットのログを表示します。

$ journalctl -u ユニット名  # or journalctl --unit=ユニット名

firewall のログを取得する例

$ journalctl -u firewalld.service  # or journalctl --unit=firewalld.service

ちなみに、ユニットのリストは systemctl で取得可能。
全ての情報を取得する例。

$ systemctl -a # systemctl --all

$ systemctl -t service # systemctl --type=service # service だけ取得する例

少しづつ確かめて書き足して行こうっと