サービス監視用スクリプト(bash,やっつけ)
やっつけなので注意☆
基本的な考え方
- 監視スクリプト本体 : check-XXXX.sh
- 監視対象のリストファイル : list-XXX.txt
- 監視スクリプトから利用されるコマンドファイル : cmd-XXXX.txt
- 動作ディレクトリ : /usr/local/tools/monitor
- ログ保存ディレクトリ : /usr/local/tools/monitor/logs
- テンポラリファイル : /tmp/XXXX-ng.txt
想定環境
CentOS6系
check ping
check-ping.sh
#!/bin/bash # # check ping script. # ver 0.1 2016/05/28 # export LANG=C CHECK=ping DIR=/usr/local/tools/monitor LOG=/usr/local/tools/monitor/logs/${CHECL}.log LIST=/usr/local/tools/monitor/list-${CHECK}.txt TEMP=/tmp/ping-ng.txt MAIL_TO=user1@sXX.hogehoge.local cat ${LIST}| while read DEST do ping -c 2 -w 2 ${DEST} > /dev/null if [ $? == 0 ] ; then echo `date +%F' '%X` "${DEST} ${CHECK} : OK" >> ${LOG} else echo `date +%F' '%X` "${DEST} ${CHECK} : NG" > ${TEMP} cat ${TEMP} >> ${LOG} cat ${TEMP} | mail -s "alert [${DEST}] ${CHECK} NG!" ${MAIL_TO} fi done
list-ping.txt
192.168.1.1 192.168.1.2 192.168.1.3
check web
check-web.sh
#!/bin/bash # # check web script. # ver 0.1 2016/05/28 export LANG=C CHECK=web #PORT=80 DIR=/usr/local/tools/monitor LOG=${DIR}/logs/${CHECK}.log LIST=${DIR}/list-${CHECK}.txt REMOTE_CMD=${DIR}/cmd-${CHECK}.txt TEMP=/tmp/${CHECK}-ng.txt MAIL_TO=user1@sXX.hogehoge.local cat ${LIST}| while read DEST do SITE=`echo ${DEST}| awk -F"/" '{print $3}'` curl -f ${DEST} > /dev/null 2>&1 if [ $? == 0 ] ; then echo `date +%F' '%X` "${DEST} ${CHECK} : OK" >> ${LOG} else echo `date +%F' '%X` "${DEST} ${CHECK} : NG" > ${TEMP} cat ${TEMP} >> ${LOG} cat ${TEMP} | mail -s "alert [${SITE}] ${CHECK} NG!" ${MAIL_TO} fi done
list-web.txt
http://www1.sXX.hogehoge.local/ http://www2.sXX.hogehoge.local/
check smtp
check-smtp.sh
#!/bin/bash +x # check smtp script. # ver 0.1 2016/05/28 export LANG=C CHECK=smtp PORT=25 DIR=/usr/local/tools/monitor LOG=${DIR}/logs/${CHECK}.log LIST=${DIR}/list-${CHECK}.txt REMOTE_CMD=${DIR}/cmd-${CHECK}.txt TEMP=/tmp/${CHECK}-ng.txt RESULT="221 2.0.0 Bye" MAIL_TO=user1@sXX.hogehoge.local cat ${LIST}| while read DEST do cat ${REMOTE_CMD} | nc ${DEST} ${PORT} | tail -1 | grep "${RESULT}" > /dev/null 2>&1 if [ $? == 0 ] ; then echo `date +%F' '%X` "${DEST} ${CHECK} : OK" >> ${LOG} else echo `date +%F' '%X` "${DEST} ${CHECK} : NG" > ${TEMP} cat ${TEMP} >> ${LOG} cat ${TEMP} | mail -s "alert [${DEST}] ${CHECK} NG!" ${MAIL_TO} fi done
list-smtp.txt
192.168.1.3
cmd-smtp.txt
ehlo test quit