HTTPステータスが異常だった時、メール送信してくれるshell script

Webサーバやデータベースサーバが落ちてしまった時、
早めに対策練りたいですよね、やっぱり。
でも常に人の監視は不可能に近い・・・

そこで200 OK以外が返ってきたらメールで連絡してくれるシェルスクリプトを作ってみました。

参考にさせて頂いたサイトです。

そのまま使わせて頂いているコードもあります。
ありがとうございます。

勉強したこと

  • 正常の場合、HTTPステータスコードが”200″が返ってくればいいので、逆に”200″以外だったらエラーとすればいい。
  • grep -c は検索条件にマッチした行数を表示
  • 実行したコマンドの終了コードの確認をする場合は echo $? を使う
  • 2>&1 は標準エラー出力先を標準出力先と同じにする
  • cronが実行された時にメール必要ない場合、command > /dev/null 2>&1 の様に > /dev/null を指定する

shell script

[shell]
#!/bin/sh

wget -nv –spider –timeout 60 -t 1 http://ウェブアドレス/ 2>&1 | grep -c ‘200 OK’
if [ $? -eq 0 ]; then
# 正常
echo “good”
exit 1
fi

PROJECT_NAME=dirname $0 | sed -e 's#\(.*\)\/\(.*\)#\2#g'
if [ ${PROJECT_NAME} = ‘.’ ]; then
# スクリプトが置かれているディレクトリで実行した場合は pwd を使う
PROJECT_NAME=pwd | sed -e 's#\(.*\)\/\(.*\)#\2#g'
fi
SCRIPT_NAME=basename $0

MAIL_ADDRESS=hogehoge@hogehogehoge.com
SUBJECT=”[${PROJECT_NAME}]${SCRIPT_NAME}”
BODY=”メッセージ”

echo ${BODY} | mail -s ${SUBJECT} ${MAIL_ADDRESS}
[/shell]
wgetのウェブアドレスとMAIL_ADDRESS=などはそれぞれの環境に変更してくださいね。

自動監視の設定

[shell]
$ sudo crontab -e
[/shell]
で定期実行を設定して

[shell]
$ sudo /etc/init.d/cron start
[/shell]
監視スタートです。


こういうブログもありました。

人気のあるブログ:

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください