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