Linuxでさまざまなログを効率よくチェックするなら「Logwatch」

Linuxでさまざまなログを効率よくチェックするなら「Logwatch」

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

そこでここでは、Linux上で出力されるさまざまなシステムログやアプリケーションログを効率よくチェックできるツール「Logwatch」を紹介します。

Logwatchとは

Logwatchは、システムログやインストールされているアプリケーションのログを分析し、分析結果を人間が見やすいレポートとして作成してくれるツールです。主な特徴は以下のとおりです。

  • デフォルトで毎日cronジョブとしてログファイルの分析結果が出力されます。
  • レポートは標準出力や電子メールで送信することができます。
  • さまざまなアプリケーションのログの解析に対応しており、独自のログを解析させることもできます。

Logwatchの使い方

Logwatchのインストール

ほとんどのLinuxディストリビューションでは、標準リポジトリから簡単にLogwatchをインストールできます。

# dnf -y install logwatch

Logwatchの設定

Logwatchの設定は、デフォルト設定が「/usr/share/logwatch/default.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

Detail

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

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

Detail = Hight

Output

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

Output = stdout

Format

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

Format = text

Range

解析するログの時間範囲を設定します。「All」「Today」「Yesterday」のいずれかを指定でき、通常は既定値「Yesterday」のままで問題ないと思います。

Range = Yesterday

Logwatchの動作確認

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

# logwatch --output stdout

以下のコマンドを実行すれば、レポートをメール送信できます。

# logwatch --output mail

Logwatchが出力するレポート

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

クリックでレポートイメージをご覧いただけます。
 ################### Logwatch 7.4.0 (03/01/11) #################### 
        Processing Initiated: Tue Apr 17 03:29:05 2018
        Date Range Processed: yesterday
                              ( 2018-Apr-16 )
                              Period is day.
        Detail Level of Output: 10
        Type of Output/Format: mail / text
        Logfiles for Host: wpsv001.local
 ################################################################## 

 --------------------- Cron Begin ------------------------ 

 Commands Run:
 ここには、どのユーザーでどんなプログラムが何回実行されたかが記載されます。

 ---------------------- Cron End ------------------------- 


 --------------------- fail2ban-messages Begin ------------------------ 

 **Unmatched Entries**
 ここには、フィルターに引っかかったログが記載されます。
 ---------------------- fail2ban-messages End ------------------------- 


 --------------------- Kernel Begin ------------------------ 

 ここにはサービスの再起動履歴などが記載されます。
 
 ---------------------- Kernel End ------------------------- 


 --------------------- nginx Begin ------------------------ 

 XXX.XXX MB transferred in XXXX responses
 ここには転送されたデータ量や、応答コード別の数が記載されます。

 Attempts to use known hacks by X hosts were logged XXX time(s) from:
 ここには、不正アクセスと推察されるアクセス元のIPアドレス・リクエストURI・回数が記載されます。

 A total of X sites probed the server
 ここにはこのサーバーを調査した思われるIPアドレスが記載されます。

 Requests with error response codes
 ここにはエラー応答コード(400, 403, 404など)別に、どのようなリクエストURIだったかが記載されます。

 A total of X ROBOTS were logged 
 ここには、検索エンジンなどのロボットによるアクセスが記載されます。
 ---------------------- nginx End ------------------------- 


 --------------------- pam_unix Begin ------------------------ 

 ここには、認証に関する履歴が記載されます。

 ---------------------- pam_unix End ------------------------- 


 --------------------- Postfix Begin ------------------------ 

 ここには、メールの送受信量や送受信数のサマリー及び詳細が記載されます。
 ---------------------- Postfix End ------------------------- 


 --------------------- SSHD Begin ------------------------ 

 ここには、SSHによるアクセス履歴が記載されます。
 ---------------------- SSHD End ------------------------- 


 --------------------- Disk Space Begin ------------------------ 

 ここには、ファイルシステムごとのサイズ・使用量・空き容量・マウントポイントなどが記載されます。

 ---------------------- Disk Space End ------------------------- 


 ###################### Logwatch End #########################

ヘッダー

ヘッダー部分には、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

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

あとがき

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