Rails3 で resque を使う #2 - worker を daemon として起動し、monit で監視
ここにあるような「resque + daemon-spawn <-- monit」の環境を作成してたんだけど、resque + daemon-spawn のプロセスを kill しても monit からの再起動に失敗していて困ってました。
何が困っていたかというと monit のログには「failed to start」としか出てなくてですね・・・何がどう悪いのか全く掴めなかったわけです。
どうにかデバッグ出来ないものかと調べていて下記を見つけました。
もろもろの情報を吐き出すスクリプトを作成して、それを monit に噛ませればデバッグ情報が取得できるよ、とあったのでそのようにしてみました。
monit-wrapper.sh
# !/bin/sh
{
echo "MONIT-WRAPPER date"
date
echo "MONIT-WRAPPER env"
env
echo "MONIT-WRAPPER $@"
$@
R=$?
echo "MONIT-WRAPPER exit code $R"
} >/tmp/monit.log 2>&1
monit.conf
start program = "/home/xxx/monit-wrapper.sh ..."
もろもろの情報を出力してみると、どうやら環境変数 HOME が設定されていないのが原因っぽかったので、それを設定してあげることで無事 monit から起動できるようになりました。
monit のデバッグは大変だな。。。