突然の電話に出てみると
「WEBサーバーがダウンしてるみたいなんですけど!?」
突然の電話に出てみると
「WEBサーバーがダウンしてるみたいなんですけど!?」
とまぁ、サーバー管理者なら誰でも経験したことあるような、無いような話ですが。
普段動いてる時は感謝されず、止まると怒られる。
そんな理不尽なサーバー管理者。
自分の身は自分で守りましょう。
とゆーことで簡単なプロセス監視シェルスクリプトを作りました。
Cronに仕込むので /etc/cron.d/ 以下に仕込みます。
vi /etc/cron.d/process_chk.sh
#httpd
httpd=`ps ax | grep '/usr/sbin/httpd' | grep -v 'grep'`
if [ -z "${httpd}" ]; then
/etc/init.d/httpd restart
wait
httpd=`ps ax | grep '/usr/sbin/httpd' | grep -v 'grep'`
if [ -z "${httpd}" ]; then
message="${message}httpd stopd !"
else
message="${message}httpd stopd restart OK "
fi
fi
#postmaster
postmaster=`ps ax | grep 'postmaster' | grep -v 'grep'`
if [ -z "${postmaster}" ]; then
/etc/init.d/postgresql restart
wait
postmaster=`ps ax | grep 'postmaster' | grep -v 'grep'`
if [ -z "${postmaster}" ]; then
message="${message}postmaster stopd "
else
message="${message}postmaster stopd restart OK "
fi
fi
#postfix
postfix=`ps ax | grep '/usr/libexec/postfix/master' | grep -v 'grep'`
if [ -z "${postfix}" ]; then
/etc/init.d/postfix restart
wait
postfix=`ps ax | grep '/usr/libexec/postfix/master' | grep -v 'grep'`
if [ -z "${postfix}" ]; then
message="${message}postfix stopd "
else
message="${message}postfix stopd restart OK "
fi
fi
#send mail
if [ -n "${message}" ]; then
mail -s "***ERROR***** process_chk.sh flagsystem.co.jp " "hogehoge@hoge.com" << body
${message} .
body
fi
exit 0
こんな感じです。
簡単ですね。
ps ax | grep 'hogehoge' | grep -v 'hogehoge'
とやって、結果が帰ってこなければ、一旦再起動を試し、
それでもダメならアラートです。
立ち上がった場合はアラートに「OK」が付きます。
ではクーロンに仕込んでやりましょう。
そのまえにパーミッションを忘れずに
chmod 755 /etc/cron.d/process_chk.sh crontab -e #process_chk.sh */5 * * * * /etc/cron.d/process_chk.sh > /dev/null
で、気づいた人も多いかと思いますが、メールが止まって起動しなかった場合はお手上げです。
そこまで求めるなら別な方法考えないといけませんね。
この記事をシェアする