Swatch でサーバーログを監視する

SERVER

Linux ログを監視する Swatch というツールを使用してみることにしました。

特定のログが記録されたときに、メールによる通知を行ったり任意のコマンドを実行できたりして便利です。


ログ監視ツール Swatch

Linux のログを監視するツールとして Swatch というものがあります。

これを利用することで、あらかじめ定めたルールに従ったログが検出されると、メール通知を行ったり、何かプログラムを実行するといったことができるようになります。

 

Swatch のインストール

今回は CentOS 5.5 に Swatch を yum を用いてインストールを行ってみようと思います。

そのためには、平成 23 年 1 月 06 日現在、yum リポジトリとして "rpmforge"を追加する必要があります。

リポジトリの追加方法については EZ-NET: Linux の使い方: CentOS 5.4 のシステムアップデート取得先としてリポジトリを追加する に記してありますので、必要に応じてこちらも参照してください。

 

"rpmforge" リポジトリを追加したら、次のようにして Swach のインストールを行います。

yum --enablerepo=rpmforge install swatch

このようにすることで、平成 23 年 1 月 06 日の時点では "swatch 3.1.1-1.el5.rf" というバージョンをインストールすることができました。

 

Swatch の設定環境を整える

Swatch のインストールが完了したら、続いて監視のための設定準備を行います。

設定ファイルは通常、"~/.swatchrc" に記載するように設計されているようですが、今回は "/etc/swatch/" というディレクトリーを作成して、そこに監視設定を用意したいと思います。

mkdir /etc/swatch

このようにして "/etc/swatch" ディレクトリーを作成したら、この中に設定ファイルを用意します。

例えば "/var/log/messages" から "PPTP" の接続についてを検出して、接続があった場合にメールで通知したいときには、"/etc/swatch/messages.conf" を作成して、次のように設定ファイルを記述する感じです。

#logfile: /var/log/messages

 

watchfor /pptpd\[\d+\]: remote IP address (\w+)/

mail=admin@domain.xx.jp,subject=Detect PPTP Connection

最初の 1 行目で、監視するログファイルを指定します。

ログファイル名を "#logfile:" に続けて指定していますが、これは、次に用意する起動スクリプト用の独自の形式になっています。

それ以降は、"watchfor /検索パターン/" で始まり、それに一致した場合の処理を次の行に記しています。これは Swatch の設定ファイルの記載方法の通りに記載します。検索パターンには正規表現によるマッチパターンを指定することが可能でした。

今回は mail 送信だけの記載となっていますが、このほかにも "echo" で画面にメッセージを表示したり、"bell" で指定した回数の Beep オンを鳴らしたり、"exec" で指定したコマンドを実行させたりといったことができるようでした。

なお、設定ファイルはログファイルごとに用意する必要があります。

 

そして、起動用のスクリプトを用意します。

平成 23 年 1 月 6 日現在、Swatch パッケージには起動スクリプトが用意されていないようでしたので、次のような起動スクリプト を "/etc/rc.d/init.d/swatch" として作成しておくことにします。


  

このような起動スクリプトを作成したら、今回は CentOS 5.5 なので、次のようにして起動スクリプトをシステムに登録しておきます。

chkconfig --add swatch

これで "service" コマンドを使用して Swatch を制御することができるようになりました。

 

後は、次のようにして Swatch を起動させます。

service swatch start

Linux 起動時に自動的に Swatch を起動させたい場合には、次のようにして自動起動させるようにしておきます。

chkconfig swatch on

正しく起動できたら、設定ファイルに記載したパターンのログが発生するようなアクセスを行って、期待通りの動作がお行われることを確認しておくと良いと思います。