ログ監視して特定の文字がある場合に何かするツール swatch

ログ監視といえばtailコマンドがあるけど、人が張り付く必要があるので自動化したツール『swatch』というのがある。
http://www.atmarkit.co.jp/ait/articles/0211/12/news002_3.html
http://blog.jojo.jp/?eid=1330087
ログ監視は他にもあるみたいだけどとりあえずこれで。頭文字のsは Simple の意っぽい。

よくわからないけどswatchはユーザ空間での使用が想定されているようで、
aptで入れたのに/etc/init.dに初期化スクリプトが作られない。
初期化スクリプトが作られない理由は、tailでの人間張り付きをプログラムで代行しようとしてるだけだからなのかも。

環境

swatch
This is swatch version 3.2.3
Built on May 7, 2008
Built by E. Todd Atkins <Todd.Atkins@StanfordAlumni.ORG>

古いw

Perl

This is perl 5, version 14, subversion 2 (v5.14.2) built for x86_64-linux-gnu-thread-multi
(with 80 registered patches, see perl -V for more detail)

OS

3.2.0-4-amd64 #1 SMP Debian 3.2.46-1 x86_64 GNU/Linux

インストール

$ sudo apt-get install swatch

Perl製。インストールはこれだけで全部入ってくる。

設定ファイルかく

ホームディレクトリに.swatchrcを作り、そこに検出パターンとその後のアクションを記述する。

.swatchrc
watchfor /hoge/
  exec "echo 'hogeが見つかりました!!!!!'"
  continue  

continueキーワードは、検出後に継続して監視するようにする。
書かないとプロセスは終了する。

動かす

オプションtで監視するファイルを指定する。指定しないと、/var/log/messagesを見てた。
複数ファイルを監視したい時は -t "hoge.log foo.log"みたいな感じで。
screenでもう1つシェルを起動してecho "hoge" >> nemui.logした後の様子。

$ swatch -t nemui.log
*** swatch version 3.2.3 (pid:20826) started at Sun Jan 19 14:11:37 JST 2014

/usr/bin/tail: hoge.log: file truncated
hogeが見つかりました!!!!!

なんかのエラーとか再起動したとかのメール送信に使うものっぽい。
監視対象はただのテキストでよいのでログ監視以外でもなんか使えるかも。