CentOS 7でログを効率よく確認する方法「Logwatch」

CentOS 7でログを効率よく確認する方法「Logwatch」

Linuxマシンでは、システムや導入しているアプリケーションが日々ログを出力しています。Linuxマシンを安定して稼動させるためには、これらのログを日々確認して問題が起こっていないか確認することが重要ですが、ログファイルを一つ一つ確認するのはとても面倒です。

そこでここでは、CentOS 7.4マシンにLogwatchを導入し、効率的にログを確認する方法を紹介します。

動作環境

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

# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)

Logwatchとは

Logwatchは、各種ログファイルを分析し、分析結果を人間が見やすいレポートとして作成してくれるツールです。主な特徴は以下のとおりです。

  • インストールすると、デフォルトで毎日cronジョブとして実行されます。
  • CentOS 7では、標準のリポジトリにパッケージが用意されています。
  • レポートは標準出力や電子メールに送信することができます。

Logwatchはログを定期的に確認するのには向いていますが、リアルタイムにログ監視する場合はログ監視ツールを別途導入することを奨めます。

インストール

# yum -y install logwatch

インストールされたバージョンは「7.4.0」でした。

設定

デフォルトの設定は「/usr/share/logwatch/default.conf/logwatch.conf」に記述されており、デフォルトの設定から変更したい項目を「/etc/logwatch/conf/logwatch.conf」に記述します。

設定が複数のファイルに分かれて記述されていると、設定全体を見渡しづらいので、ここではデフォルトの設定を「/etc/logwatch/conf/logwatch.conf」に全部コピーしてから設定します。

# cp -p /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf
# vi /etc/logwatch/conf/logwatch.conf

主な設定項目

主な設定項目と、私が設定した値は下記とのとおりです。ちなみにすべて既定値のままでも問題なく動作します。

Mailto

「MailTo」には、レポート送信先を設定します。スペースで区切ると、複数のメールアドレスを設定することもできます。

MailTo = root

私の環境では、root宛メールをgmailに転送しているので既定値のままにしています。

Detail

「Detail」には、レポートに記載される内容の詳細度を設定します。まずは既定値の「Low」でレポートを確認してみた後、設定を調整するのが良いと思います。

設定は「Low」「Med」「High」または数字で設定します。
「Low = 0」「Med = 5」「High = 10」

Detail = Hight

私の環境では、詳しく見たかったので「Hight」に変更しています。

Output

レポートの出力先を指定します。「stdout:標準出力」「mail:電子メール」「file:ファイル」のいずれかを指定できます。

Output = stdout

cronで実行されたプログラムの標準出力は、通常root宛にメール送信されるので、私の環境では既定値のままにしています。

Format

通知されるレポートのフォーマットを設定します。「text」「html」のいずれかを指定できます。

Format = text

私の環境では、既定値の「text」のままにしていますが「html」したらもっと見やすくなるかもしれません。

Range

解析するログの時間範囲を設定します。「All」「Today」「Yesterday」のいずれかを指定できます。

Range = Yesterday

通常は既定値「Yesterday」のままで問題ないと思います。

動作確認

以下のコマンドを実行し、レポートが標準出力に表示されればOKです。

# logwatch --output stdout

以下のコマンドを実行し、レポートがメール送信されていればOKです。

# logwatch --output mail

レポートの見方

レポートに記載される内容をざっくりと説明します。なお、マシンにインストールされているアプリケーションによって項目は違ってきますので、以下は一例としてご覧ください。

ヘッダー

ヘッダー部分には、logwatchの実行日時、分析したログの期間、レポートの詳細度などが記載されています。

Cron Begin ~ Cron End

Cronに関する情報が記載されており、どのプログラムがCronから何回実行されたかをチェックできます。

fail2ban-messages Begin ~ fail2ban End

fail2banに関する情報が記載されており、フィルターにマッチしたときのログや、BANしたログをチェックできます。

kernel Begin ~ kernel End

カーネルに関する情報が記載されており、サービスを再起動した履歴などをチェックできます。

nginx Begin ~ nginx End

nginxに関する情報が記載されており、不正アクセスと推測されるログの接続元IPアドレスや、エラー応答コードの履歴などをチェックできます。

pam_unix Begin ~pam_unix End

ユーザー認証に関する情報が記載されており、suした回数や認証に失敗した回数などをチェックできます。

Postfix Begin ~ Postfix End

Postfixに関する情報が記載されており、送信メール数・転送先ホスト名・接続失敗の履歴などをチェックできます。

SSHD Begin ~ SSHD End

SSHでの接続履歴に関する情報が記載されており、接続元IPアドレス(またはホスト名)やログインユーザー名、アクセス拒否した履歴などをチェックできます。

Disk Space Begin ~ Disk Space End

サーバーのパーティションごとの使用状況をチェックできます。

あとがき

レポートを毎日確認するのは大変ですが、いつもと内容が大きく違っていないかだけでも確認することで、問題の早期発見につながると思います。