Scientific Linux6.2 で GrowthForecast のプロセスを monit で監視したメモ
概要
Scientific Linux6.2 に GrowthForecast を導入したメモ - do_akiの徒然想記 の続き。
当初は daemontools で監視するつもりだったのだけど、 RHEL6 系だと動かすのが面倒だという話を聞いたので(未検証です) monit を利用することに。
1分毎にプロセスをチェックして、死んでたら起動するようにした。
monit 導入
$ sudo yum install yum-conf-epel $ sudo yum install monit
monit は epel リポジトリに含まれるので、 epel の yum 設定を追加してから install する。
ベースの設定はこんな感じ
/etc/monit.conf
# 60秒ごとにチェック / 起動後 2分経ってから監視開始 set daemon 60 with start delay 120 set logfile /var/log/monit.log set idfile /var/.monit.id set statefile /var/.monit.state # アラート通知を送るための SMTP サーバ set mailserver localhost # アラート送信先 set alert alert@exsample.com # monit の web インタフェース set httpd port 2812 and use address localhost # バインドアドレス allow localhost # 許可する src IP # include include /etc/monit.d/*.conf
growthforecast の起動スクリプトを作成
perlbrew 利用しているし、コマンド一つで 起動/終了 を出来るようにしておいた方がなにかと便利なのでてきとースクリプトを用意した。
$ sudo su - growthforecast $ mkdir $HOME/var $ vim growthforecast.sh # 内容は下記参照 $ chmod +x growthforecast.sh
growthforecast.sh
#!/bin/sh export HOME=/home/growthforecast source $HOME/perl5/perlbrew/etc/bashrc perlbrew use perl-5.14.2 PID_FILE=$HOME/var/growthforecast.pid LOG_FILE=$HOME/var/growthforecast.log start() { perl $HOME/GrowthForecast/growthforecast.pl --port=5125 --host 127.0.0.1 --front-proxy 127.0.0.1 \ >>$LOG_FILE 2>&1 & echo $! > $PID_FILE } stop() { if [ -e $PID_FILE ]; then kill `cat $PID_FILE` rm -f $PID_FILE fi } usage() { echo "Usage: `basename $0` {start|stop|restart}" } case $1 in start) start ;; stop) stop ;; restart) stop start ;; *) usage ;; esac
monit で、 growthforecast を監視
これを設置して monit を起動。
ほとんど英語なので分かりやすい。
/etc/monit.d/growthforecast.conf
check process GrowthForecast with pidfile /home/growthforecast/var/growthforecast.pid start program = "/home/growthforecast/growthforecast.sh start" as uid growthforecast and gid growthforecast stop program = "/home/growthforecast/growthforecast.sh stop" as uid growthforecast and gid growthforecast if failed port 5125 then alert
最後に
と、こんなことしてたら、 [twitter:@kazeburo] さんが Proclet という supervisor モジュール書いてリリースした - blog.nomadscafe.jp という記事書いてた。
Proclet について詳しく見てないけど、これがGrowthForecast に導入されれば外部からの監視はほとんど必要ないのかも?