swatchインストール

はじめに

swatch導入には
Perl5
Time::HiRes
Date::Calc
File::Tail
が必要になります。
私の環境(Turbolinux)ではデフォルトで入っていましたので説明はしませんが、導入していなければCPANからダウンロード・インストールを行ってください。

rpmで入っているか確認は以下のコマンドで確認できると思います。

# rpm -qa | grep perl
perl-5.6.1-10
perl-Time-HiRes-01.20-5
perl-File-Tail-0.98-3
perl-Date-Calc-4.3-6

必要なrpmが入っていれば問題ないでしょう。

また、syslog-ngというsyslog機能にswatchのようなログ監査を自動化するツールもあります。
個人的にはこちらの方が好きです。
詳しくは syslog-ngでログ監査の自動化 を参照ください。

ソースの入手

以下のURLから最新のソースを入手してください。
http://swatch.sourceforge.net/
今回は今現在(2004.5)で最新のswatch-3.0.8.tar.gzをダウンロードしました。
http://heanet.dl.sourceforge.net/sourceforge/swatch/swatch-3.0.8.tar.gz

インストール

ここでは、swatch-3.0.8.tar.gzをダウンロードしたものとして説明します。

$ tar xvfz swatch-3.0.8.tar.gz
$ swatch-3.0.8
$ su
# perl Makefile.PL
# make
# make install

これでインストールは完了です。
/usr/bin/swatch に本体がインストールされます。

設定ファイルの編集

設定例は展開したソース内の
example/swatchrc.monitor
example/swatchrc.personal
にあります。参考になると思います。

設定ファイルは
watchforでキーワード設定になり/(スラッシュで囲みます)

(例1) ログの文字列にpanicがあった場合に、hoge@example.comにメールを送る設定

watchfor   /panic/
        mail=hoge@example.com

(例2) ログの文字列にsu:という文字列があった場合に、外部プログラム(test.sh)を実行する設定

watchfor   /su:/
        exec "/home/hoge/test.sh"

また、外部コマンドの引数に$0をわたせばマッチしたログをわたすことができます。また、$Nは、N番目のフィールドの文字列を意味します。
結構これは、つかえるかもしれませんね。

swatchの起動

では、swatchを起動しましょう。
設定ファイルを、/home/hoge/.swatchrcとして保存したものとして説明します。

起動方法は以下の通りです。
【書式】
/usr/bin/swatch -c 設定ファイル -t 対象とするログ

# /usr/bin/swatch -c /home/hoge/.swatchrc -t /var/log/message &

これで起動します。
停止方法はswatchが利用しているtailコマンドプロセスをkillすることで停止するようです。
正しい、停止方法を知っている方、教えて!!(^^;

簡単な自動起動スクリプトを作成してみました。よろしければ利用してください。
tailプロセスをkillしているので無いとは思いますがtailコマンドを利用しているサービスがあればそれまで停止してしまいます。
/etc/rc.d/init.d/swatch として保存

#! /bin/sh
#
# chkconfig: 2345 99 99
# description: swatch
# 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 /home/hoge/.swatchrc -t /var/log/maillog &
        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 

運用してみて気づいたこと

運用してみて築いたのですが、監視対象としているログがローテートされるとうまく動作しなくなってしまうようです。そこで、以下のようにlogrotate起動時にswatchをリスタートするように設定しました。
これで一応、回避できるようになったようです。

/etc/logrotate.d/syslog 編集

/var/log/message {
    postrotate
        /etc/rc.d/init.d/swatch restart
    endscript
} 

これでswatchのインストール・導入は終わりです。
ある程度、ログのパターンを把握していないと利用できませんし私の環境ではインストール後、利用していません。しかし、アクションとして外部プログラムを呼び出せるので、うまく利用できれば幸せになれるツールなのかもしれませんね。

marronおすすめの参考書 by Amazon
SupportDeskパック Standard24(Linuxサポート付)3年[カスタムメイド対応] SupportDeskパック Standard24(Linuxサポート付)3年[カスタムメイド対応]
/
SupportDeskパック Standard(Linuxサポート付)4年[カスタムメイド対応] SupportDeskパック Standard(Linuxサポート付)4年[カスタムメイド対応]
/
SupportDeskパック Standard24(Linuxサポート付)4年[カスタムメイド対応] SupportDeskパック Standard24(Linuxサポート付)4年[カスタムメイド対応]
/

Copyright(C) 2004-2006 マロンくん.NET ~サーバ管理者への道~ All Rights. Reserved.