「journaldとrsyslogの違いや関係性を理解したい」
この記事では、CentOS 7以降のsystemd環境で使用するjournalctlコマンドの基本的な使い方から、実務でよく使うフィルタリングの方法まで解説します。
・journalctlはsystemdのログ管理システム(journald)のログを表示するコマンド
・-b でブートログ、-u でサービス別ログ、--since/--until で日時フィルタリングができる
・-f でtailと同様のリアルタイム監視、-e で末尾からジャンプして最新ログを確認できる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
journaldとjournalctlとは
CentOS 7 / RHEL 7以降では、systemdがログ管理の仕組みとして「journald」(systemd-journald.service)を導入しました。journaldはバイナリ形式でログをメモリまたはディスクに保存します。
そのログを参照・検索するためのコマンドが「journalctl」です。
rsyslogと比較したjournaldの特徴は以下のとおりです。
・構造化ログ:サービス名・PID・優先度などのメタデータが付与されており、絞り込みが容易
・強力なフィルタリング:日時・サービス・優先度など多様な条件でログを検索できる
・バイナリ形式:改ざんされにくく、ログの整合性チェック機能がある
CentOS 7以降では、rsyslogとjournaldが並行して動作しています。
rsyslogは/var/log/配下のテキストファイルにも記録を続けるため、従来通りgrepで検索することも可能です。
journaldの状態を確認する
journaldはsystemdのサービスとして動作しています。# journaldのサービス状態を確認 # systemctl status systemd-journald.service systemd-journald.service - Journal Service Loaded: loaded (/usr/lib/systemd/system/systemd-journald.service; static) Active: active (running) since 金 2017-08-04 13:39:06 JST; 46min ago Main PID: 712 (systemd-journal) Status: "Processing requests..."
journalctlコマンドの基本的な使い方
1. 全ログを表示する
# 全ログを表示する(lessで表示) # journalctl # 最新のログから表示する(末尾からジャンプ) # journalctl -e # ページネーションなしで出力する(パイプ処理向け) # journalctl --no-pager
2. ブートログを確認する(-b)
OS起動時のブートログを確認します。# 今回のブート以降のログを表示 # journalctl -b -- Logs begin at 金 2017-08-04 13:39:02 JST, end at 金 2017-08-04 14:29:01 JST. -- 8月 04 13:39:02 Tiger kernel: Linux version 3.10.0-229.el7.x86_64 # 前回のブート時のログを表示(-b -1) # journalctl -b -1 # ブートの一覧を確認する # journalctl --list-boots -1 e6d1... Mon 2017-08-03 ... Mon 2017-08-03 ... 0 a5f2... Fri 2017-08-04 ... Fri 2017-08-04 ...
3. 特定サービスのログを確認する(-u)
# httpdのログを表示する # journalctl -u httpd # sshdのログを表示する # journalctl -u sshd # 複数のサービスを同時に表示する # journalctl -u httpd -u sshd
4. リアルタイムでログを監視する(-f)
tail -f のようにログをリアルタイムで追跡表示します。# 全ログをリアルタイム表示 # journalctl -f # sshdのログをリアルタイム表示 # journalctl -f -u sshd
ログを日時でフィルタリングする(--since / --until)
journalctlには日時でログを絞り込む機能があります。# 2017年8月4日 14:29から14:33:01までのログを表示 # journalctl --since="2017-08-04 14:29:00" --until="2017-08-04 14:33:01" # 昨日のログを表示 # journalctl --since yesterday # 1時間前から現在までのログを表示 # journalctl --since "1 hour ago" # 特定の日付以降のsshログ # journalctl -u sshd --since="2017-08-01"
ログの優先度(プライオリティ)でフィルタリングする(-p)
syslogと同じ優先度番号でフィルタリングできます。# エラー以上のログのみ表示(0=emerg から 7=debug) # journalctl -p err # 優先度の範囲指定(warning以上をerr以下で絞る) # journalctl -p warning..err # 優先度の対応表 # 0: emerg(緊急) # 1: alert(警告) # 2: crit(致命的) # 3: err(エラー) # 4: warning(警告) # 5: notice(通知) # 6: info(情報) # 7: debug(デバッグ)
ログの表示件数を指定する(-n)
# 最新20件のログを表示 # journalctl -n 20 # 最新50件のsshログを表示 # journalctl -u sshd -n 50
journaldのログ保存設定
デフォルトの設定では、journaldは再起動するとログが失われます(Storageがvolatileの場合)。永続化したい場合は設定ファイルを変更します。
# 設定ファイルを編集(永続化する) # vi /etc/systemd/journald.conf [Journal] Storage=persistent # auto(デフォルト)→ persistent に変更 # journaldを再起動して設定を反映 # systemctl restart systemd-journald.service
トラブルシュート:よくあるエラーと対処法
「Logs begin at ...」以前のログがない
journaldのデフォルト設定(Storage=auto)では、/var/log/journal/ディレクトリが存在しない場合、再起動するとログが消えます。上記の永続化設定を行うか、rsyslogの/var/log/以下のファイルを参照してください。
ディスク使用量が増え続ける
journaldはデフォルトでディスクの10%または4GBを上限としています。手動でログをクリアする場合は以下のコマンドを使います。
# 2週間以上前のログを削除 # journalctl --vacuum-time=2weeks # ログのサイズを500MBに制限 # journalctl --vacuum-size=500M # 現在のジャーナルディスク使用量を確認 # journalctl --disk-usage
本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| 全ログを表示する | journalctl |
| ブートログを確認する | journalctl -b |
| サービス別のログを確認する | journalctl -u サービス名 |
| リアルタイムでログを監視する | journalctl -f |
| 日時でフィルタリングする | journalctl --since="日時" --until="日時" |
| エラー以上のログのみ表示する | journalctl -p err |
| 最新N件のログを表示する | journalctl -n N |
| 古いログを削除する | journalctl --vacuum-time=2weeks |
systemdのログ管理を含むサーバー運用を体系的に学びませんか?
journalctlを使いこなすことで、障害対応の初動スピードが格段に上がります。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:CentOS 7のバージョンアップ手順|yum updateの実行方法と注意点
- 前のページへ:Postfixのメールログを確認する
- この記事の属するカテゴリ:CentOS7・Linuxtips・LinuxコマンドF-J・サーバー管理・システム管理・システム管理コマンド・ログ管理へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます