Hatena::ブログ(Diary)

do_akiの徒然想記 RSSフィード

2012-06-18

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

最後に

と、こんなことしてたら、 @ さんが Proclet という supervisor モジュール書いてリリースした - blog.nomadscafe.jp という記事書いてた。

Proclet について詳しく見てないけど、これがGrowthForecast に導入されれば外部からの監視はほとんど必要ないのかも?

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/do_aki/20120618/1340007887
リンク元