wgetで死活監視
Photo by Christie Digital
プロダクトのHTTPステータスを監視するためにbashとwgetコマンドでこしらえた。
使い方は簡単で以下に記載してあるhttp_monitor.shをnohup(バックグラウンド)で実行しておくだけ。
あとは永久にループし続けるので簡易だが死活監視はこれでできる。
難点はこのプロセス自体は監視していないので監視ツール自体の信頼性が低いっということ。
時間があるならhobbitとか入れてちゃんと監視することをおすすめします。
http_monitor.sh
#!/bin/bash # locale依存を排除 export LC_ALL="en_US.UTF-8" export LANG="en_US.UTF-8" # --spiderでファイルに書き出さない # --server-responseでHTTPのレスポンスを出力する # --timeoutでタイムアウトの時間を指定する # --triesで何回tryするのか定義する wget_options=' --spider --server-response --timeout=30 --tries=1 ' # メールを送信する場合のヘッダー head="`echo -e HTTP 200が返って来なかったURLの一覧です。`" while true; do # 動的に対象のサービスを読み込み . urls.sh for i in ${urls[@]}; do result=`/usr/bin/wget $i $wget_options 2>&1` exit_status=$? if [[ ${exit_status} -ne 0 ]]; then body="${body}\n\n${result}" fi done # 結果をmailで送信 if [ "$body" != "" ]; then echo -e ${head}\\n${body} | iconv -t ISO-2022-JP | mail -s "Abnormal response" "yourname@example.com" fi # 永久ループの中にあるので一旦bodyを空にする body="" sleep 60 done
urls.shはループの中で都度呼び出されるためプロセス実行中にurls.shが変更されても即時反映される。
urls.sh
# チェック対象のURLなど urls=( "example.com" "example.jp" )
お試しあれ。