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

ubuntu

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]
監視スタートです。

鹿児島県の出水市という所に住んでいまして、インターネット周辺で色々活動して行きたいと思ってるところです。 Webサイト作ったり、サーバ設定したり、プログラムしたりしている、釣りと木工好きなMacユーザです。 今はデータサイエンスに興味を持って競馬AI予想を頑張ってます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

コメントする

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