Scientific Linux6.2 で redmine2.0 のプロセスを monit で監視したメモ

概要

Scientific Linux6.2 に redmine2.0 を導入したメモ - do_akiの徒然想記 で構築した redmineのプロセス監視について。

1分毎にプロセスをチェックして、死んでたら起動するようにした。

ほとんど、 Scientific Linux6.2 で GrowthForecast のプロセスを monit で監視したメモ - do_akiの徒然想記 と同様なのだけど、 rvm を monit から実行する方法がなかなか見つからなくて苦労した。

redmine の起動スクリプトを作成

/home/redmine/redmine.sh

rvm-shell を利用して起動しているあたりがミソ。
こうしないと rvm 環境で動いてくれない。

unicorn の起動オプション --pid で PIDFILE を指定すると推奨されないという警告が出るので、気になる場合は unicorn の config ファイルを作り -c オプションで指定すること。

monit で redmine を監視

Scientific Linux6.2 で GrowthForecast のプロセスを monit で監視したメモ - do_akiの徒然想記 にて、 /etc/monit.d 以下に設定を追加すればよい状況にしてあるので、そこに設定を放り込む。

/etc/monit.d/redmine.conf
check process Redmine
  with pidfile /home/redmine/redmine.pid
  start program = "/home/redmine/redmine.sh start"
    as uid redmine and gid redmine
  stop program  = "/home/redmine/redmine.sh stop"
    as uid redmine and gid redmine
  if failed port 3001 within 2 cycle then alert

最後に monit で設定を読み直してやれば完了。

$ sudo /etc/init.d/monit reload

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 に導入されれば外部からの監視はほとんど必要ないのかも?