由於公司業務比較多,部署的站點也比較多。為了網站安全執行,以防故障發生時能第一時間知曉,特意編寫下面監控指令碼,對網站訪問狀態和超時時間進行監控:當code狀態為5xx或者訪問超時時間大於10s時進行報警。指令碼指令碼如下:
[root@qd-inf-logcollector01 web_monit]$ pwd /app/script/web_monit [root@qd-inf-logcollector01 web_monit]$ ll total 12 -rwxr-xr-x 1 root root 870 Oct 12 21:34 http_monit.sh //監控指令碼 -rwxr-xr-x 1 root root 857 Oct 12 21:25 sms.py //簡訊報警指令碼,裡面有報警聯絡人 -rw-r--r-- 1 root root 377 Oct 12 21:27 weblist.txt //監控的網站域名列表 [root@qd-inf-logcollector01 web_monit]$ cat http_monit.sh #!/bin/sh weblist=/app/script/web_monit/weblist.txt for list in `cat $weblist|grep -E -v "#|^$"` do httpcode=`curl -o /dev/null -s -w %{http_code} "$list"` httptime=`curl -o /dev/null -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n" "$list"|grep time_total|awk -F ":" '{print $2*1000}'` if [ $httpcode = 500 ]||[ $httpcode = 502 ]||[ $httpcode = 503 ]||[ $httpcode = 504 ] then python /app/script/web_monit/sms.py $list "$list 訪問有誤!狀態碼為$httpcode!請收到報警後儘快檢視並處理!" else echo "$list is checked ok!" fi if [ $httptime -ge 10000 ] then python /app/script/web_monit/sms.py $list " $list訪問超時!超時時間為$httptime毫秒!請收到報警後儘快檢視並處理!" else echo "$list is connect ok!" fi done
手動檢查網站訪問的code狀態碼
[root@qd-inf-logcollector01 web_monit]$ curl -o /dev/null -s -w %{http_code} http://www.wang.com 200
手動檢查網站訪問的超時時間(單位:毫秒,如下網址訪問的時間為0.8秒)
[root@qd-inf-logcollector01 web_monit]$ curl -o /dev/null -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n" http://www.wang.com |grep time_total|awk -F ":" '{print $2*1000}' 800
網站列表和指令碼執行
[root@qd-inf-logcollector01 web_monit]$cat weblist.txt http://nop.kevin.cn http://ap.kevin.cn http://ope.kevin.cn http://opr.kevin.cn http://www.kevin.cn http://kevin.cn http://tb.kevin.cn http://www.wang.com https://www.wang.com http://doc.kevin.cn http://docs.kevin.cn http://git.wang.com http://monitor.kevin.cn http://dash.kevin.cn [root@qd-inf-logcollector01 web_monit]$sh http_monit.sh http://nop.kevin.cn is checked ok! http://nop.kevin.cn is connect ok! http://ap.kevin.cn is checked ok! http://ap.kevin.cn is connect ok! http://ope.kevin.cn is checked ok! http://ope.kevin.cn is connect ok! http://opr.kevin.cn is checked ok! http://opr.kevin.cn is connect ok! http://www.kevin.cn is checked ok! http://www.kevin.cn is connect ok! http://kevin.cn is checked ok! http://kevin.cn is connect ok! http://tb.kevin.cn is checked ok! http://tb.kevin.cn is connect ok! http://www.wang.com is checked ok! http://www.wang.com is connect ok! https://www.wang.com is checked ok! https://www.wang.com is connect ok! http://doc.kevin.cn is checked ok! http://doc.kevin.cn is connect ok! http://docs.kevin.cn is checked ok! http://docs.kevin.cn is connect ok! http://git.wang.com is checked ok! http://git.wang.com is connect ok! http://monitor.kevin.cn is checked ok! http://monitor.kevin.cn is connect ok! http://dash.kevin.cn is checked ok! http://dash.kevin.cn is connect ok!
定時監控任務(每兩分鐘監控一次)
[root@qd-inf-logcollector01 web_monit]$ crontab -l */2 * * * * /bin/bash -x /app/script/web_monit/http_monit.sh > /dev/null 2>&1
簡單注意下:比較運算子只有==和!=是用於字串比較的,不可用於整數比較;整數比較只能使用-eq, -gt這種形式