Swatchインストール
■Swatchとは?
リアルタイムにログを監視し、決定したキーワードがログに現れるとアクションを
起こすことをさせる監視ツールです。
今回用いる動作環境 ・RedHatLinux9.0 ・作業ディレクトリ = /home/swatch
■Perlモジュールのインストール準備
最新版にて検証したところ、Swatchを動かすためには5つのPerlモジュールが必要です。
必要なPerlモジュールはCPAN からダウンロードが可能です。
モジュール名 検証に用いたバージョン ・Date::Manip (DateManip-5.44.tar.gz) ・Date::Calc (Date-Calc-5.4.tar.gz) ・Time::HiRes (perl-Time-HiRes-1.38-3.i386.rpm) ・File::Tail (File-Tail-0.99.1.tar.gz) ・Date::Parse (TimeDate-1.16.tar.gz) ・swatch (swatch-3.1.1.tar.gz)
※Time::HiRes(Time-HiRes-1.73.tar.gz) モジュールに関してはtarballでインストールができなかったため "rpm" にてインストールしました。
(RedHat9.0CD-ROM2枚目の内容にあります)
■Perlモジュールのインストール実施
Swatchを動かすためにそれぞれのPerlモジュールをインストールします。
(順番を考慮する必要があるかもしれませんが、下記手順で問題ありません)
手順[1] Date::Manipのインストール # cd /home/swatch # tar xvfzp DateManip-5.44.tar.gz # cd DateManip-5.44 # perl Makefile.PL # make # make install
手順[2] Date::Calcのインストール # cd /home/swatch # tar xvfzp Date-Calc-5.4.tar.gz # cd Date-Calc-5.4 # perl Makefile.PL # make # make install
手順[3] Time::HiResのインストール # cd /home/swatch # rpm -ivh perl-Time-HiRes-1.38-3.i386.rpm
手順[4] File::Tailのインストール # cd /home/swatch # tar xvfzp File-Tail-0.99.1.tar.gz # cd File-Tail-0.99.1 # perl Makefile.PL # make # make install
手順[5] Date::Parseのインストール # cd /home/swatch # tar xvfzp TimeDate-1.16.tar.gz # cd TimeDate-1.16 # perl Makefile.PL # make # make install
■Swatchのインストール
Swatch本体もPerlモジュールのインストール方法とさほど変わりません。
swatchのインストール # cd /home/swatch # tar xvfzp swatch-3.1.1.tar.gz # cd swatch-3.1.1 # perl Makefile.PL # make # make install
■Swatchの設定
Swatchには設定ファイルのサンプルが含まれているので、このサンプルファイルを規定のディレクトリにコピーしてひな型ファイルとして利用します。ここではSwatchの設定ファイルを、".swatchrc"とし/root/ に配置します。
ひな型ファイルを利用する # cd /home/swatch/swatch-3.1.1/examples # cp -pf swatchrc.personal /root/.swatchrc
★POINT!! /var/log/**** 内のログファイルの多くは、root権限でなければ読込めませ ん。一般ユーザーでもSwatchを起動させることは可能ですが、対象のログファ イルに読取り権限が必要となります。
パターンおよびアクション
設定ファイルの書式は以下のようになります。
watchfor /パターン/ アクション1 アクション2
☆パターン
マッチさせたい任意の文字列を、watchforの後に"/"で挟み記述します。
ここで記述するパターンにはPerlの正規表現を使用することが可能です。
☆アクションn
パターンでマッチした場合の処理動作を記述します。
■Swatchの起動
Swatchを起動させログの監視を開始させます。
(起動) # /usr/bin/swatch -c /root/.swatchrc -t /var/log/messages >/dev/null 2>&1 & & =バックグラウンドにて実施
(プロセス確認) # ps aux |grep tail root 3238 0.0 0.4 3904 588 pts/1 S 20:47 0:00 /usr/bin/tail-n 0 -f /var/log/messages
■Swatchの自動起動スクリプト
起動している"tail" を kill させるスクリプトは下記のとおりです。最後にパーミッションの変更を忘れずに!
(1) # vi /etc/rc.d/init.d/swatch を作成
(2) # chmod 755 swatch
(自動起動スクリプト) #! /bin/sh # # chkconfig: 2345 99 99 # description: tcpserver # Source function library. . /etc/rc.d/init.d/functions RETVAL=0 # See how we were called. case "$1" in start) echo -n "Starting Swatch: " /usr/bin/swatch -c /root/.swatchrc -t /var/log/messages >/dev/null 2>&1 & RETVAL=$? echo ;; stop) echo -n "Stopping Swatch: " killproc tail RETVAL=$? echo ;; restart) $0 stop $0 start RETVAL=$? ;; *) echo "Usage: swatch {start|stop|restart}" exit 1 esac exit $RETVAL
■OS起動時に自動的に立ち上げる
/etc/rc.d/ 以下にシンボリックリンクを作成する。
(移動) # cd /etc/rc.d/rc3.d (シンボリックリンクの作成) # ln -s ../init.d/swatch ./S99swatch
これで起動時にswatchが自動的に立ち上がります。
■ログローテーション
監視していて気付いたことはログローテーションされると古いログファイルを見てしまうことです。これを回避するために以下の設定を /etc/cron.daily/logrotate へ追記しました。
# vi /etc/cron.daily/logrotate #!/bin/sh /usr/sbin/logrotate /etc/logrotate.conf /etc/rc.d/init.d/swatch stop ⇒ 追記 /etc/rc.d/init.d/swatch start ⇒ 追記