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 |
最新の |
-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