Linuxでjournalctlコマンドを使ってログを確認する方法

Linuxでjournalctlコマンドを使ってログを確認する方法

ここでは、RedHat互換のLinux(CentOS 7)で、journaldにより収集されたログを操作するためのコマンド「journalctl」でログを確認する方法を紹介します。

CentOS 7のログ管理「journald」を適切に設定する
ここでは、CentOS 7のjournaldで最初にやっておいたほうが良い設定について紹介します。

この記事は、以下の環境での動作結果を基にしています。他のディストリビューションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
CentOS7.6.1810

journaldにより収集されるログ

CentOS 7では、新しく採用されたログ管理の仕組み「journald」により、サービスにより標準出力および標準エラー出力に書き込まれたメッセージ、Syslogメッセージ、カーネルログメッセージなどが収集され、独自のデータベースとして保存されています。

そのため、収集されたログを検索・閲覧する際は、journalctlコマンドを利用する必要があります。

参考:第22章 ログファイルの表示と管理 - Red Hat Customer Portal

journalctlコマンドの使用例

journalctlでログを確認する時の利用例をいくつか紹介します。

すべてのログを表示する

オプションなしで実行した場合は、古いログから表示されます。

# journalctl

逆に最新のログから表示したいときは「-r」オプションを付けて実行します。

# journalctl -r

最新のログを表示する

最新のログを表示したいときは「-e」オプションを付けて実行し、詳細なログを表示したいときは「-x」オプションを追加します。

# journalctl -e
# journalctl -ex

ログの表示が見切れないようにする

journalctlコマンドでは、デフォルトのページャーがlessになっており、画面に収まりきらない長いログなどは画面端で見切れてしまいます。

そのようなときは「--no-pager」オプションを付けることで、catによる表示ができ、ログが画面右端で折り返して表示されるようになります。

# journalctl --no-pager

ただ、上のコマンドの場合、ログが一気に流れるので、ログを確認するのは困難です。その場合は、次のようにパイプでlessに渡すことで、ログが見切れることもなく、ページごとの表示ができます。

# journalctl --no-pager | less

最新のログから指定した行数分のみを表示する

最新のログから指定した行数分を表示したいときは「-n」オプションを利用します。下の例では、最新のログを100行分表示します。

# journalctl -n 100

オプションのパラメーターを指定せずに実行した場合は、最新のログが10行分表示されます。

# journalctl -n

最新のログをモニターしたいとき

最新のログをリアルタイムでモニターしたいときは、tailコマンドのように「-f」オプションを利用します。

# journalctl -f

カーネルメッセージのみを表示する

カーネルメッセージのみを表示するには「-k」オプションを利用します。

# journalctl -k

特定サービスのログのみを表示する

特定のサービスに関するログだけを表示したいときは「-u」オプションを利用します。下の例では「sshd」に関するログだけを表示します。

# journalctl -u sshd

特定の重要度以上のログのみを表示する

特定の重要度以上のログのみを表示するときは「-p」オプションを利用します。オプションのパラメーターには、以下の一覧にある文字列、もしくは数値を指定します。

ログの重要度一覧

数値文字列
emerg0
alert1
crit2
err3
warning4
notice5
info6
debug7

下の例では、いずれの場合も、エラー以上のログのみを表示します。

# journalctl -p err
# journalctl -p 3
Memo

「エラー以上のログ」とは、エラーログとエラーより重要なログ(crit, alert, emerg)という意味です。

特定の時間範囲のログのみを表示する

指定した日時以降のログを表示したいときは「-S」オプションを利用し、指定した日時までのログを表示したいときは「-U」オプションを利用します。

日時は、以下のような指定が可能です。

  • YYYY-MM-DD hh:mm:ss(時刻を省略した場合「00:00:00」とみなされます)
  • now, yesterday, today, tomorrow
  • 1 day ago, 3 hours ago …
  • -1h30min, +30min …

次のように入力すると、2019年2月10日17時以降のログが表示されます。

# journalctl -S "2019-02-10 17:00:00"

次のように入力すると、昨日からのログが表示されます。

# journalctl -S yesterday

次のように入力すると、2019年2月1日0時15分までのログが表示されます。

# journalctl -U "2019-02-01 00:15:00"

次のように入力すると、2019年2月1日0時から2019年2月5日0時までのログが表示されます。

# journalctl -S "2019-02-01" -U "2019-02-05"

次のように入力すると、2019年2月11日23時から1時間前までのログが表示されます。

# journalctl -S "2019-02-11 23:00" -U "1 hour ago"
# journalctl -S "2019-02-11 23:00" -U -1h

起動時からのログを表示する

システム起動時からのログを表示するには「-b」オプションを利用します。

オプションのパラメーターを指定せずに実行した場合は、最新の起動時からのログが表示されます。

# journalctl -b

パラメーターに「1」を指定した場合は、ログに記録されている一番古い起動時からのログが表示されます。

# journalctl -b 1

パラメーターに「-2」を指定した場合は、最新の二つ前の起動時からのログが表示されます。

# journalctl -b -2

あとがき

journalctlコマンドには、ここで紹介した以外にもさまざまなオプションが用意されているので、詳しくはmanページを確認することをおすすめします。