journaldに関するメモ

我々の愛した SysV init は死んだ!
わけではないけど、世の中の流れはsystemdみたいです。(今さら)

スポンサーリンク

What is journald

ログの一元管理を行う。正式名称はsystemd-journald.service らしい。
systemdから起動したプロセスの標準出力やsyslogへのログメッセージをバイナリ形式で記録する。

ログの記録先

/run/log/journal 配下に固有ディレクトリを作成し、その中のsystemd.journalというファイルに記録する。なお、固有ディレクトリはインストール時に実効されたsystemd-machine-id-setupコマンドにより /etc/machine-id に記録されたものが採用される。

ジャーナルを永続化するには

/var/log/jounal フォルダを作成して再起動すると、そちらにログファイルが保存される。

ログの閲覧

Systemd-journaldはバイナリログなのでcatとかsedとかawkとか使えないので、ログ加工して集計してたりする人からは不評と思われる一方、jsonで加工したい人には嬉しいかもしれない。
※ヨーロッパの人たちはなぜかバイナリログ好き。。。な気がする。

というわけで、ログを見るにはjournalctlコマンドを使用する。

journalctl [オプション] [検索文字列]

使いそうなオプション

オプション

-a (–all)

画面表示できない文字も含めてすべて表示

-b (–boot)

特定のシステム起動時のログを表示する

1 (最古のログ), 2, 3… または -1 (直近の起動時), -2, -3… と指定

-f (–follow)

tail -f のような感じで追加されたログをリアルタイムに出力する

-k (–dmesg)

カーネルからのメッセージを表示

-l (–full)

画面表示可能なすべてのログを表示

-n (–lines)

直近のログから指定行数分を表示

–no-pager

Pager(デフォルトではless)を使用しない

-o (–outpute)

出力形式を指定。

verbose, json, export などが指定可能。

–since

指定した日付日時以降のログを表示

–until

指定した日付日時までのログを表示

-u (–unit)

特定のユニットからのログを表示

検索キー

_PID= : PIDを指定
_SYSTEMD_UNIT: Unit名を指定 (-uオプションと同じ)

syslogdを使うには?

Systemd-journaldはsyslogデーモンより先に/dev/logからログメッセージを読みだす。
syslogdを稼働させたい場合は、syslogdがsystemd-journaldからsyslogを読みだすように設定が必要。

/etc/rsyslog.conf に以下の行を記述
$ModLoad imjournal

ログのサイズ

保存用ディレクトリーの全容量に対して10%以上になるか、該当ディレクトリーのファイルシステムの空き容量が15%以下になると、古いエントリーから順に削除される。

スポンサーリンク

フォローする