CentOS7のログ確認、journaldのjournalctlコマンドまとめ

CentOS7では、Syslogの確認方法として、従来通りテキストを直接確認する方法以外に、journalctlコマンドを利用してジャーナルを確認する方法があります。

journalctl

最低限知っておくべきコマンド

最低限、このコマンドあれば普段のオペレーションは困らないかと思います。

# とりあえず最新のログを確認したい場合
journalctl -xe
journalctl -le

# -fを使うとtail -f /var/log/messages に近い使い方
journalctl -ef 

# 特定のUnitのログを見たい
journalctl -efu httpd.service
journalctl -xefu httpd.service

# kernelメッセージ(dmesg)はkオプションを利用
journalctl -k
journalctl -kf

オプションまとめ

以下、基本的なオプションを纏めておきます。

共通的なオプション

オプション 動作
-l,--full 全体表示
--no-pager ページャ無効化
-r 新しいログから表示(表示順序逆転)
-e,--pager-end 最終ページを表示
-n [num], --lines [num] 表示行数
-x,--catalog 詳細情報表示

最新のログを取得したい

オプション 動作
-n ,--line= 最新の行だけ表示する(tailの-nオプション)
-f,--follow 最新のログのリアルタイム表示(tailの-fオプション)

特定期間のログを取得したい

オプション 動作
--since=[time] ログの表示開始時間
--until=[time] ログの表示終了時間
  • 時間の指定方法
[time]に指定可能な値 備考
now,yesterday,today,tomorrow
+[num],-[num],[num] ago [num]はms,sec,days,weeks,monthなど指定可能
YYYY-MM-DD hh:mm:ss 組み合わせ可(例 hh:mm、YYYY-MM-DD hh:mm)

特定の対象ログを確認したい

オプション 動作
-k, --dmesg カーネルメッセージ
-u [unit],--unit=[unit] ユニット指定
-p [priority],--priority=[priority] syslogプライオリティ指定

ログの永続保存

デフォルトではjournalログは/run/log以下に出力されます。ここのデータは揮発的なものになります。

/run/log/journal

/var/log以下にディレクトリを作成すると永続的なデータに切り替わります。

mkdir /var/log/journal

ディレクトリ作成後にはsystemd-journaldを再起動します。

systemctl restart systemd-journald.service 

systemd-journaldを再起動した時点で/var/log/messagesのログ出力が止まります。rsyslogの再起動をするとまた/var/log/messagesにもログが出力されるようになります。

systemctl restart rsyslog.service

これはrsyslogがsystemd-journaldから情報を受けてログを出力しているためです。

[journald]->[socket]->[rsysrog]->/var/log/messages

設定としてはこちらです。

/etc/rsyslog.conf

$ModLoad imjournal # provides access to the systemd journal 

journalctlが利用しているディスク容量は以下のコマンドで確認可能です。

journalctl --disk-usage

保存容量やログレベルは設定ファイルで調整可能です。

/etc/systemd/journald.conf