[apache] 監視スクリプト作成
これからしばらく家をあけるので、apacheのプロセス監視をどうしようかと考えていたのです。
数日はネットに繋がる環境にいられないけど、せめてapacheのダウンと復旧くらいは把握したいなー・・・
というのと、落ちっぱなしのときにずーっとメールがくるのはウザいなー・・・という思いから、以下の要件で監視スクリプトを作りました。
1. apacheのプロセスが落ちたら2回まで通知。3回目以降は無視。
2. apacheのプロセスが復旧したら通知(どれだけ落ちていたかは問わない)。
3. 無論、何もなければ通知しない。
なお、今回apacheを立ち上げなおすのは要件として含めていません。
監視スクリプトはcronで定期的に起動し、1回落ちたのか、2回以上連続して落ちているのかは、
カウントファイルを生成して数えることにします。また、apacheが復旧したら、カウントファイルは削除します。
$ touch watcher_httpd.sh
$ chmod 755 watcher_httpd.sh
$ vi watcher_httpd.sh
#!/bin/sh
ADMIN=【携帯のメールアドレス】
APID="/usr/sbin/httpd"
# フラグファイルを格納するディレクトリがなければ作成する
if [ ! -d "dat" ];
then
mkdir dat
fi
# httpdの親プロセスをつかまえる
if [ 1 -eq `ps auxwww | grep $APID | grep ^root | wc -l` ];
# httpdが生きているときの処理
then
# httpdが2回以上落ちてから復旧したときの処理
if [ -f "dat/count1_httpd" ];
then
# httpd復旧アラートメールを飛ばし、カウントファイルをすべて削除する
echo $(date)$'\n''httpd is Allived Again' | mail -s "$APID is Allived Again" $ADMIN
rm -f dat/count*_httpd
else
# httpdが1回だけ落ちてから復旧したときの処理
if [ -f "dat/count0_httpd" ];
then
echo $(date)$'\n''httpd is Allived Again' | mail -s "$APID is Allived Again" $ADMIN
rm -f dat/count0_httpd
else
:
fi
fi
# httpdが落ちたときの処理
else
if [ ! -f "dat/count0_httpd" ];
# はじめてhttpdが落ちたときの処理
then
echo $(date)$'\n''httpd is FAILED' | mail -s "$APID is FAILED" $ADMIN
touch dat/count0_httpd
# 2回目の通知処理
else
if [ ! -f "dat/count1_httpd" ];
then
echo $(date)$'\n''httpd is FAILED Again!!!' | mail -s "$APID is FAILED Again!!!" $ADMIN
touch dat/count1_httpd
fi
fi
fi
ここまで書いたら保存し、試験します。試験項目は以下の通りです。
1. apacheが動いている状態でこのスクリプトを実行し、警告メールも復旧メールも飛ばないこと。
2. apacheを落とした状態でこのスクリプトを実行し、1回目の警告メール(メール件名/本文に注目)が飛ぶこと。
3. apacheを上げてからこのスクリプトを実行し、復旧メールが飛ぶこと。
4. apacheを落とした状態でこのスクリプトを2回実行し、1回目の警告メールと2回目の警告メールが飛ぶこと。
5. さらにもう1回このスクリプトを実行し、警告メールも復旧メールも飛ばないこと。
6. apacheを上げてからこのスクリプトを実行し、復旧メールが飛ぶこと。
7. 再度apacheが上がっていることを確認し、このスクリプトを実行して警告メールも復旧メールも飛ばないこと。
以上です。
数日はネットに繋がる環境にいられないけど、せめてapacheのダウンと復旧くらいは把握したいなー・・・
というのと、落ちっぱなしのときにずーっとメールがくるのはウザいなー・・・という思いから、以下の要件で監視スクリプトを作りました。
1. apacheのプロセスが落ちたら2回まで通知。3回目以降は無視。
2. apacheのプロセスが復旧したら通知(どれだけ落ちていたかは問わない)。
3. 無論、何もなければ通知しない。
なお、今回apacheを立ち上げなおすのは要件として含めていません。
監視スクリプトはcronで定期的に起動し、1回落ちたのか、2回以上連続して落ちているのかは、
カウントファイルを生成して数えることにします。また、apacheが復旧したら、カウントファイルは削除します。
$ touch watcher_httpd.sh
$ chmod 755 watcher_httpd.sh
$ vi watcher_httpd.sh
#!/bin/sh
ADMIN=【携帯のメールアドレス】
APID="/usr/sbin/httpd"
# フラグファイルを格納するディレクトリがなければ作成する
if [ ! -d "dat" ];
then
mkdir dat
fi
# httpdの親プロセスをつかまえる
if [ 1 -eq `ps auxwww | grep $APID | grep ^root | wc -l` ];
# httpdが生きているときの処理
then
# httpdが2回以上落ちてから復旧したときの処理
if [ -f "dat/count1_httpd" ];
then
# httpd復旧アラートメールを飛ばし、カウントファイルをすべて削除する
echo $(date)$'\n''httpd is Allived Again' | mail -s "$APID is Allived Again" $ADMIN
rm -f dat/count*_httpd
else
# httpdが1回だけ落ちてから復旧したときの処理
if [ -f "dat/count0_httpd" ];
then
echo $(date)$'\n''httpd is Allived Again' | mail -s "$APID is Allived Again" $ADMIN
rm -f dat/count0_httpd
else
:
fi
fi
# httpdが落ちたときの処理
else
if [ ! -f "dat/count0_httpd" ];
# はじめてhttpdが落ちたときの処理
then
echo $(date)$'\n''httpd is FAILED' | mail -s "$APID is FAILED" $ADMIN
touch dat/count0_httpd
# 2回目の通知処理
else
if [ ! -f "dat/count1_httpd" ];
then
echo $(date)$'\n''httpd is FAILED Again!!!' | mail -s "$APID is FAILED Again!!!" $ADMIN
touch dat/count1_httpd
fi
fi
fi
ここまで書いたら保存し、試験します。試験項目は以下の通りです。
1. apacheが動いている状態でこのスクリプトを実行し、警告メールも復旧メールも飛ばないこと。
2. apacheを落とした状態でこのスクリプトを実行し、1回目の警告メール(メール件名/本文に注目)が飛ぶこと。
3. apacheを上げてからこのスクリプトを実行し、復旧メールが飛ぶこと。
4. apacheを落とした状態でこのスクリプトを2回実行し、1回目の警告メールと2回目の警告メールが飛ぶこと。
5. さらにもう1回このスクリプトを実行し、警告メールも復旧メールも飛ばないこと。
6. apacheを上げてからこのスクリプトを実行し、復旧メールが飛ぶこと。
7. 再度apacheが上がっていることを確認し、このスクリプトを実行して警告メールも復旧メールも飛ばないこと。
以上です。
トラックバック(0)
このブログ記事を参照しているブログ一覧: [apache] 監視スクリプト作成
このブログ記事に対するトラックバックURL: http://www.blogcube.info/cgi-bin/mt-tb.cgi/108
