したくなちゃった♥
daemontoolsとかよく聞くけど、「Monit」と「Growl for Windows」と「Perl」と「Gmail」で組みました。(無駄に多い)
監視対象はほぼ24時間稼動のUbuntuのPC内で動いているPerlプログラム。
monitrcは↓のような感じ
set daemon 60 # 60秒おきに監視
set logfile syslog facility log_daemon
set mailserver smtp.gmail.com port 465 username "hoge@gmail.com" password "hoge" using SSLV3
set mail-format {
from: hoge@monit
subject: $HOST : $SERVICE - $EVENT
message: Monit
ACTION: $ACTION
$DESCRIPTION
at $DATE on $HOST.
}
set alert hoge@gmail.com
include /home/hoge/conf.d/*.conf
*.conf↓
check file tekito-na-program /home/hoge/pid/tekito-na-log
start = "/home/hoge/perl5/perlbrew/perls/perl-5.14.1/bin/perl /home/hoge/hoge.pl"
stop = "/bin/bash -c 'kill `head -n 1 /home/hoge/pid/tekito-na-log`'"
if timestamp > 10 minutes then restart
という感じで書くと予期していた動きをしてくれました。
tekito-na-log には先頭行にプロセスID(hoge.plから書き込まれる)があって、先頭行以降はhoge.plからタイムスタンプが押されるファイルです。
これで10分以上更新されなかったら再起動してhoge@gmail.comにアラートが送られます(たぶん!)。
で、これをWindowsにも通知して欲しいので、GrowlとPerlでやりました。
(Gmailのメールを通知するものが既にあるけど、通知するものを細かくフィルタリングしたかったのであえてPerlを使った)
「Growl for Windows」をインストールしてCPANモジュールの「AnyEvent::Gmail::Feed」と「Growl::Any」を組み合わせる(Strawberry Perl for WindowsのCPANを利用した)と↓のような感じでPCの画面の右上にピョコッと通知が出てきました。
(アイコンはリャマで画像検索して出てきたかわいいやつ)

「AnyEvent::Gmail::Feed」と「Growl::Any」で作ったPerlの通知プログラムはウィンドウが邪魔だったので「sexe」でサービス化しておきました。
(ファイルをPerlの絶対パス、起動時オプションを通知プログラムのパスにすればおk)
通知見忘れても時間でソートして見れるようでよかった。

さらにmonitrcをいじるとブラウザで監視プロセス一覧が見れます。

同じような処理をcronでやってたけど、cronでやるより少し楽って感じです。
cronより細かく通知できるし見た目がイイ!
こういう方面は詳しくないんやけど、プロセス監視はこんな感じでいいんかな?