
Webサーバやデータベースサーバが落ちてしまった時、
早めに対策練りたいですよね、やっぱり。
でも常に人の監視は不可能に近い・・・
そこで200 OK以外が返ってきたらメールで連絡してくれるシェルスクリプトを作ってみました。
参考にさせて頂いたサイトです。
- wgetコマンドで指定したURLにHTTPでアクセスできるかどうかを確認する
- シェルスクリプトでメールを送信する
- 実行したコマンドの終了コードを表示する
- 【 grep 】 文字列を検索する
- crontabで設定したタスク実行時に、メールを送信しないようにする。
そのまま使わせて頂いているコードもあります。
ありがとうございます。
勉強したこと
- 正常の場合、HTTPステータスコードが”200″が返ってくればいいので、逆に”200″以外だったらエラーとすればいい。
- grep -c は検索条件にマッチした行数を表示
- 実行したコマンドの終了コードの確認をする場合は echo $? を使う
- 2>&1 は標準エラー出力先を標準出力先と同じにする
- cronが実行された時にメール必要ない場合、command > /dev/null 2>&1 の様に > /dev/null を指定する
shell script
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#!/bin/sh wget -nv --spider --timeout 60 -t 1 http://ウェブアドレス/ 2>&1 | grep -c '200 OK' if [ $? -eq 0 ]; then # 正常<br /> echo "good" exit 1 fi PROJECT_NAME=<code>dirname $0 | sed -e 's#\(.*\)\/\(.*\)#\2#g' if [ ${PROJECT_NAME} = '.' ]; then # スクリプトが置かれているディレクトリで実行した場合は pwd を使う<br /> PROJECT_NAME=<code>pwd | sed -e 's#\(.*\)\/\(.*\)#\2#g' fi SCRIPT_NAME=<code>basename $0 MAIL_ADDRESS=hogehoge@hogehogehoge.com SUBJECT="[${PROJECT_NAME}]${SCRIPT_NAME}" BODY="メッセージ" echo ${BODY} | mail -s ${SUBJECT} ${MAIL_ADDRESS} |
wgetのウェブアドレスとMAIL_ADDRESS=などはそれぞれの環境に変更してくださいね。
自動監視の設定
1 |
$ sudo crontab -e |
で定期実行を設定して
1 |
$ sudo /etc/init.d/cron start |
監視スタートです。
こういうブログもありました。
- historyコマンドを簡単に使う
- Unicornの起動で Run `bundle install`というCould not findなエラーの時
- Zabbixという監視サーバ、さくらのVPSなら簡単にインストール出来るという話
- DropboxをUbuntuへCUIでインストール
- WordPressの翻訳プラグインGTranslateをインストールしてみた
人気のあるブログ:
- 新しいgemのアップデート方法(rubygems-update)
- Coda2でscssを使うときのお供にcompassをどうぞ。
- bashでUTF-8に設定して日本語表示したり使ったり。Emacsでも。
- NginxをSSL付きで動かすために設定したこと
- Macでフォルダを結合したいとき