ログの確認方法

ログの確認方法

ログの格納先について

実際のログはどこで確認すればよいのでしょうか?

ログの格納ディレクトリ:/var/log

CentOSでは、一般的にログの格納先は「/var/log」ディレクトリ以下に格納されます。

代表的なログファイルの一覧

また上記ディレクトリに格納されている代表的なログのファイルは右図の通りです。

プログラム(アプリケーション)別のログの格納先

一部アプリケーション、プログラムによって独自にログの格納先が指定されています。

例:各プログラムのログの格納先について
※ ファイル(ディレクトリ)の存在、名称の相違について

MySQL関連のパッケージをインストールしていないと上記のファイルは存在しません。またCentOsのバージョン、ディストリビューションの種類(Ubuntu、CentOsなど)などによってファイル名などの若干の相違がありますので、ご留意ください。

プログラムごとのログの格納先を確認するためには、設定ファイル(conf)にてログの出力先を指定されているので、設定ファイルを確認しますが、ログの出力先の指定方法、設定ファイル(conf)について詳しくは「プログラム毎のログの出力の指定方法」にて後述します。

ログを確認するためのコマンドの一覧

続いてログを確認するためには、ファイルの内容を確認するコマンドがよく用いられます。ここではログの中身を確認する上でよく使用するコマンドについて以下の通りにまとめました。

cat

ファイルの中身を表示することができるコマンドです。lessと違い、一画面分でしか(スクロールして)確認できません。

grep

ファイルの中身を検索し、情報を絞るために使用するコマンドです。catコマンドなどファイルの中身を出力するコマンドとセットで使用することが一般的です。

tail

ファイルの末尾部分だけを表示するコマンドです。「-f」オプションを指定することで対象のファイルの更新内容が随時確認できます。

head

ファイルの先頭部分だけを表示するコマンドです

less

ファイルの中身を表示するためのコマンドです。catと異なり、スクロールしながらファイルの中身を確認でき、また表示した内容を検索する機能があります。

journalctl

標準出力されたログを確認するためのコマンドです。

ログの中身を確認する

ではコマンドの一覧を確認したところで実際のログの確認を行っていきましょう。

ログの確認①:cat

catコマンドを使用して「 /var/log/messages 」の内容を確認します。

[root@localhost ~]#cat /var/log/messages
Mar 16 15:33:01 localhost systemd: Starting Update UTMP about System Runlevel Changes...
Mar 16 15:33:01 localhost systemd: Started Update UTMP about System Runlevel Changes.
------ 省略 -------
Mar 16 15:34:43 localhost systemd: Started Session 2 of user root.
Mar 16 15:34:43 localhost systemd-logind: New session 2 of user root.

前ページの内容の通り、ログのファイルは表示する内容が膨大なことが多いです。そのためある程度、内容を絞って表示させるような工夫が必要になります。

ログの確認②:cat + grep

内容を絞って表示させる上で、grepコマンドを併用することが一般的です。

catなどのコマンドを介して出力したファイルの内容を、検索値に該当するものだけに絞ることができるからです。

ログの確認②:cat + grep

書式
# cat /var/log/ファイル名 | grep 検索値
実行
[root@localhost ~]# cat /var/log/messages | grep warn
Mar 11 11:38:47 localhost NetworkManager[1407]: <warn>  [1646966327.1424] dhcp-listener: dhcp-event: (pid 1889) unhandled DHCP event for interface ens33.

ログの確認②:検索値に含める内容

検索値を元に内容を絞る必要性について説明しましたが、実際にどのような検索値を含めるのが良いのでしょうか?以下に参考までに内容をまとめました。

エラーや警告などを表す文言
  • emerg:システム利用困難な状況
  • alert:急を要する状態
  • crit:危険な状況
  • error:一般的なエラー
  • warn:警告
  • fail:操作の失敗

(※これらは危険度を表すために使用されます。)

[root@localhost ~]# cat /var/log/messages | grep warn
Mar 11 11:38:47 localhost NetworkManager[1407]: <warn>  [1646966327.1424] dhcp-listener: dhcp-event: (pid 1889) unhandled DHCP event for interface ens33.
不具合が発生しているプログラム(機能、サービス名)

現在、動作が上手くいっていないプログラム(機能)を検索値に含めることで、そのプログラム(機能)に関するログだけを取得できます。

[root@localhost ~]# cat /var/log/messages | grep mysqld
[root@localhost ~]# cat /var/log/messages | grep httpd

ログの確認③:tail

ファイルの末尾部分だけを表示させるtailコマンドを使用することで、内容を絞ることもできます。

末尾なので最新のログを確認することができます。

[root@localhost ~]# tail -5 /var/log/messages
Mar 17 10:46:15 localhost systemd: Started Network Manager Script Dispatcher Service.
Mar 17 10:46:15 localhost nm-dispatcher: req:1 'dhcp4-change' [ens33]: new request (3 scripts)
Mar 17 10:46:15 localhost nm-dispatcher: req:1 'dhcp4-change' [ens33]: start running ordered scripts...
Mar 17 10:49:56 localhost systemd: Started Session 8 of user root.
Mar 17 10:49:56 localhost systemd-logind: New session 8 of user root.

ログの確認④:journalctl

標準出力されたログ(メッセージ)を確認するためのコマンドです。

journalctl -e

最近のメッセージを表示させる場合に「-e」オプションを指定します。

[root@localhost ~]# journalctl -e
journalctl -xe

より詳細な情報を表示させたい場合は、「-xe」オプションを付与します。

[root@localhost ~]# journalctl -xe
journalctl -u

特定の機能、サービス名のログ(メッセージ)に内容を絞りたい場合、「-u」オプションを指定します。

「sshd」に関するログを表示させる場合
[root@localhost ~]# journalctl -u sshd
「httpd」に関するログを表示させる場合
[root@localhost ~]#journalctl -u httpd
「mysqld」に関するログを表示させる場合
[root@localhost ~]# journalctl -u mysqld

NEXT>> ログの出力の仕組み(Syslog)について