journalctlコマンドで目的にあったログを出力する方法

journalctlコマンドで目的にあったログを出力する方法 Linuxサーバ
journaldに保管されたログを確認するときはjournalctlコマンドを使用します。
journalctlコマンドを使用して過去から現在、この瞬間に出力されるログまで確認することができます。
大量のログから目的のログを抽出するのは非常に大変となります。
今回は、journalctlコマンドのオプション機能を利用してログを絞り込んで目的のログを簡単に出力する方法を説明します。

スポンサーリンク

journalctlコマンドオプション説明

保管されている一番古いログから順番に確認したい場合
journalctl


実行例1

保管されている一番古いログから順番に確認したい場合


最新のログから過去にさかのぼってログを確認したい場合

コマンドを実行した時点から過去へ順番に情報を閲覧したいときに利用

journalctl -r


実行例2

最新のログから過去にさかのぼってログを確認したい場合


最新ログを確認したい場合

今まさにログが出力していないか確認する時に利用

journalctl -f
  • ログが出力し続けます。「tail -f ファイル名」と同等。
  • 「ctrl+c」キーで終了


実行例3

最新ログを確認したい場合


カーネル(kernal)ログだけを確認したい場合

OS関連の異常やハード的な異常を確認したいときに利用

journalctl -k


実行例4

カーネル(kernal)ログだけを確認したい場合


画面におさまらないログを折り返して表示させたい場合

すべてのログを画面内に表示させたいときに利用

journalctl --no-pager  |more
  • ※パイプ[|]+「more」を付けないとすべてのログが止まらずに一気に表示されてしまうので、画面内で止まるようにします。
  • スペースキーで画面送りされます。


実行例5

画面におさまらないログを折り返して表示させたい場合


「-r」、「-f」、「-k」オプションの併用も可能です。

journalctl -r --no-pager  |more
journalctl -f --no-pager
journalctl -k --no-pager  |more


日時を指定して特定の時間内でログを確認したい場合

障害発生日時など時間帯を絞ってログを確認したいときに利用

journalctl --since="2022-02-19 02:05:00" --until="2022-02-19 02:20:30"
journalctl --since="2022-02-19 02:05:00" --until="2022-02-19 02:20:30" --no-pager |more


実行例6

日時を指定して特定の時間内でログを確認したい場合


「--since」は「-S」、「--until」は「-U」オプションで省略可能です。

journalctl -S "2022-02-19 02:05:00" -U "2022-02-19 02:20:30"


「2022年2月19日 午前2時5分0秒」から現在までのログを出力します。

journalctl --since="2022-02-19 02:05:00"

過去から「2022年2月19日 午前2時20分30秒」までのログを出力します。

journalctl  --until="2022-02-19 02:20:30"


プロセスIDを指定してそれに関係するログをを確認したい場合

apache、sshd、crondなどのサービスが稼働しているプロセスIDを指定して、特定のプロセスに関係したログを確認したいときに利用

journalctl _PID=742
  • 「ps aux」コマンドなどでプロセスIDを確認してPIDを指定する


実行例7

プロセスIDを指定してそれに関係するログをを確認したい場合


アプリケーションサービスのログを確認したい場合

sshd、cronなどのサービスのログをユニット名を指定して、特定のサービスに関係したログを確認したいときに利用

journalctl -u crond.service
journalctl -u crond
  • ユニット名とは「systemctl list-units」コマンドを実行して表示される「UNIT」列のことを指します。
  • 「crond.service」と「crond」どちらも同じログが出力されます。
    ※「.service」を省略可能


実行例8

アプリケーションサービスのログを確認したい場合


実行ファイル、実行プロセスを指定したログを確認したい場合

プロセスで起動している実行ファイルを直接指定してログを確認したいときに利用

journalctl  /usr/sbin/crond
  • ユニット名[-u crond]とログの内容は少し異なります。
    この実行ファイル・実行プロセス指定の方がログ内容は少ない


実行例9

実行ファイル、実行プロセスを指定したログを確認したい場合


プライオリティのログレベルを指定してログを確認したい場合

以下のログレベル「emerg(0):高」~「debug(7):低」を設定してログを確認したいときに利用します。

プライオリティレベル説明
emerg0(高)システム不全におちいる緊急情報
alert1(↑)すぐさま対処・修正すべき情報
crit2(|)致命的なエラー情報
err3(|)エラー情報
warning4(|)警告情報
notice5(|)通知情報
info6(↓)一般的な情報
debug7(低)デバック情報
ログレベル
journalctl -p warnig
journalctl -p 4
  • プライオリティ・ログレベルどちらを指定して出力することが可能です。
    ※同じ意味
  • warnig(4)を指定すると、err(3)、crit(2)、alert(1)、emerg(0)と重要度が高いログが出力されます。
  • ログレベルの重要度が高いとログは少なくなり、低いとログも多く出力されます。


実行例10

プライオリティのログレベルを指定してログを確認したい場合


サーバの起動時からログを確認したい場合

サーバの起動と起動の間のログだけを出力したいときに利用

サーバが起動してから最新のログまでを確認したいときに利用します。

journalctl -b


実行例11

サーバの起動時からログを確認したい場合


2つ前に起動してから1つ前の起動までのログを確認したいときに利用します。

journalctl -b -1

3つ前に起動してから2つ前の起動までのログを確認したいときに利用します。

journalctl -b -2

保管されているログのなかで一番古い起動からの次の起動までのログを確認したいときに利用します。

journalctl -b 1



2/3(木) 起動 journalctl -b  起動日(2/3)から現在までのログ
2/2(水) 起動 journalctl -b -1 起動日(2/2)から2/3までのログ
2/1(火) 起動 journalctl -b -2 起動日(2/1)から2/2までのログ
・・・
1/2(日) 起動
1/1(土) 起動 journalctl -b 1 保管されている最も古い起動日(1/1)から1/2までのログ


journalctlの条件式について(AND条件とOR条件)

2つの条件が同じフィールド(オプション)かによって、AND条件になったり、OR条件になったりします。

同じオプション条件の場合はOR条件としてログを出力
journalctl  -u crond.service  -u sshd.service
  • crondとsshdのログが確認できます。
  • 「-u」と同じオプションを指定するときは「OR条件」となります。
  • 「-u」を3つ以上指定しても「OR条件」になります。


実行例12

同じオプション条件の場合はOR条件としてログを出力


異なるオプション条件の場合はAND条件としてログを出力
journalctl  -u crond.service -p 3
  • crondログ(限定)で、ログの重要度が3(プライオリティが0~3)に該当するログを確認できます。
  • 「-u」と「-p」と異なるオプションを指定するときは「AND条件」になります。


実行例13

異なるオプション条件の場合はAND条件としてログを出力


AND条件とOR条件の組み合わせ
journalctl  -u crond -u dbus -p 3
  • crondとdbusに含まれるログでログの重要度が3(プライオリティ0~3)に該当するログを確認できます。
  • (「 [-u crond] OR [-u dbus]」AND [-p 3])という条件式になります。


実行例14

AND条件とOR条件の組み合わせ

コメント

タイトルとURLをコピーしました