shell-批量检查本地连接,当请求发现非200错误时,会继续请求5次,当5次全部错误,则发邮件告警

需求背景:

我有一批平时每天都要使用的公共环境应用,主要是供外接口给N个应用N个人用,有时候经常遇到问题,突然性出现问题后,就会有人报障过来,比较被动,所以做了一个tu是单的监控脚本,用于及时告知服务出错及时解决问题。

#!/bin/bash
####
#检查连接,当请求发现非200错误时,会继续请求5次,当5次全部错误,则发邮件###
#####
CHARTSET="GB18030"
MAIL_CLIENT="[email protected] [email protected]"
MAIL_SENDER="[email protected]"
MAIL_SERVER="192.168.11.232"
INTF=$(netstat -rn | tail -1 | awk '{print $NF}')
IP=$(ifconfig $INTF | awk '/inet addr/{ split($2,tmp,":") ; print tmp[2] }')
urls=/app/script/chk_url/url.txt
date_tag=`date '+%Y%m%d %H%M%S'`
log=/app/script/chk_url/check_$date_tag.log
for chkurl in $(cat ${urls}) 
do
	echo $chkurl
	#HTTP_CODE=`curl -o /dev/null -s -w "${http_code}" "${chkurl}"`
	HTTP_CODE=`curl -I -m 10 -o /dev/null -s -w %{http_code} ${chkurl}`
	ERROR=()
	echo $HTTP_CODE
	if [ ${HTTP_CODE} -ne 200 ]
	then
		#请求5次,当5次全部错误,则发邮件###
		for i in {1..5}
		do
			HTTP_CODE1=`curl -I -m 10 -o /dev/null -s -w %{http_code} ${chkurl}`
			if [ ${HTTP_CODE1} -ne 200 ]
			then
				ERROR[i]=${HTTP_CODE1}
			fi
		done
		if [ ${#ERROR[@]} == 5 ]
		then
			echo $chkurl "ERROR" >$log
			env MAILRC=/dev/null charset="$CHARTSET" from="$MAIL_SENDER" smtp="$MAIL_SERVER" \
			nail -n -s "$IP Public application Check link is not normal" $MAIL_CLIENT <$log
		fi
	fi
done
#删除10天前的备份
find /app/script/chk_url/*.log -type f -mtime +10 -exec rm {} \;	

猜你喜欢

转载自blog.csdn.net/sincool1003/article/details/81509793
今日推荐