Shell Web监控
admin
2023-01-28 14:22:28
0

shell web监控脚本,全套都在里面了 ,判定规则改了几次,多个结合的用可以看旧版本的,后续懒得写新的。

旧版本链接:

https://blog.51cto.com/junhai/2407485

此次有3个脚本组成,写下大致实现的过程

计算故障时间效果在: 

https://blog.51cto.com/junhai/2443931

使用微信机器人:

https://blog.51cto.com/junhai/2424374

因为没用数据库只能这样用3个txt了 ,其实是我不会。。。。。。- -! 多个sed可以sed -e写成1句,懒得花时间优化了。

url.txt(存放监控链接)> url.del(存放不可达的网址,第二个脚本分析后在)>url.add(第三个脚本分析是否网址是否恢复)

监控效果 如下图:

Shell Web监控

Shell Web监控

对外使用用邮件发送告警,因为政务云监控的web太多了都要发送邮件,邮箱经常被认为供给发送垃圾邮件,被封了好多次。

Shell Web监控

1次告警1次恢复,这里防止多次告警,一次故障只会发出2封邮件,恢复用第三个脚本控制,用于政务云平台WEB监控。


3次不可达停止告警,恢复告警一次,告警@相关系统人员,使用第二个脚本控制,用于长威内部系统监控告警。邮件可选,内部用企业微信比较快。

Shell Web监控




#!/bin/bash
#××× 
#QQ×××

. /root/weixin.sh #调用企业微信机器人  
#时间
cur_time(){
        date "+%Y/%m/%d %H:%M:%S"
}   

systemname(){
name=`cat url2.txt|grep $url|wc -l`
if [ $name -eq 1 ];then
	cat url2.txt|grep -w $url
else
        echo "$url"
fi
}      

[ ! -f /root/url.txt ] && echo "url.txt文件不存在" && exit 1
sed -i '/^$/d' url.txt   
while read url
do
	[ -z $url  ] && echo "url.txt存在空格 检查文件格式" && exit 1
        for ((i=1;i<7;i++))
        do
			rule=`curl -i -s -k -L -m 10 $url|grep -w "HTTP/1.1 200"|wc -l` 
			if [ $rule -eq 1 ];then
				echo "$(cur_time) 第$i次检查$url网页访问成功" >> check.log 
				break
            elif [ $i = 6 ];then 
				echo $url >> url.del 
				info=`echo -e "$(cur_time) \n$(systemname) 网页无法访问,请检查!"`
				wx_web 
				echo -e "$(cur_time) \n\n$(systemname) 网页无法访问,请检查!"|mail -s "【重要告警】网页不可达" ×××@×××.com 
				echo "$(cur_time) $(systemname) 网页$(expr $i \* 3)秒无法访问,请检查!" >> checkfail.log 
				sh /root/checkdel.sh #第二个脚本
            else
				echo "$(cur_time) 第$i次检查$url网页访问失败" >> checkfail.log 
				sleep 3 
             fi
        done
done < /root/url.txt
sh /root/checkadd.sh #第三个脚本 我喜欢把第三个脚本单独用设置间隔1分钟1次
#!/bin/bash
. /root/weixin.sh

cur_time(){
        date "+%Y/%m/%d %H:%M:%S"
} #显示时间

sed -i '/^$/d' url.del 
sed -i '/^$/d' url.delout 

cat url.del|sort|uniq -c >> url.delout 

while read line
do
	i=`echo $line|awk '{print$1}'`
	newurl=`echo $line|awk '{print$2}'`
	if [ -z $newurl ];then
		continue
	elif [ $i -eq 1 ];then  
		echo $newurl >> url.add  
		sed -i "s|$newurl||" url.txt 
		sed -i "s|$newurl||" url.del 
		sed -i '/^$/d' url.txt
		sed -i '/^$/d' url.del
		#info=`echo -e "$(cur_time) \n $i次告警网站$newurl未恢复 暂停发送告警"` 
		#wx_web
		#echo "$(cur_time)  $i次告警网站$newurl未恢复 暂停发送告警"|mail -s "【暂停告警】" ×××@×××.com
		#echo "$(cur_time)  网站$newurl未恢复 暂停告警" >> checkfail.log
		sed -i "s|$newurl||" url.delout
		sed -i '/^$/d' url.delout
	else
		echo > url.del
		continue	
	fi
done< url.delout
echo > url.delout
#!/bin/bash

. /root/weixin.sh
. /root/downtime.sh 

cur_time(){
        date "+%Y/%m/%d %H:%M:%S"
}

systemname(){
name=`cat url2.txt|grep $url|wc -l`
if [ $name -eq 1 ];then
	cat url2.txt|grep $url|awk '{print$1,$2}'
else
        echo "$url"
fi
}

sed -i '/^$/d' url.add 

while read url
do
		[ -z $url  ] && echo "url.del存在空格 检查文件格式" && exit 1
		rule=`curl -i -s -k -L -m 10 $url|grep -w "HTTP/1.1 200"|wc -l` 
		if [ $rule -eq 1 ];then
            u=$(grep -w "$url" url.txt|wc -l)
			if [ $u -eq 1 ];then 
				echo "$url已存在" >> checkfail.log
			else
				echo "$url" >> url.txt
			fi
			sed -i "s|$url||" url.add 
			sed -i '/^$/d' url.add 
			echo "$(cur_time) $url 已恢复监控" >> checkfail.log
			info=`echo -e "$(cur_time) \n$(systemname) 网站恢复啦 \n$(fail_time)"`
			wx_ah
			echo -e "$(cur_time) $(systemname) 网站已恢复 \n$(fail_time)"|mail -s "【网站恢复】" ×××@×××.com
        else
			echo "$(cur_time) 检查$url网页访问失败" >> /dev/null     #checkfail.log

        fi
done< url.add

后面写了个傻瓜式交互脚本 将就着用吧 用户增删改查监控网址 sh 脚本 add 就可以批量添加监控网站了。。。。。。。。。。。。。。。。

#!/bin/bash
#20190831
case $1 in
        add )
                 [ -z $2 ] && echo "请在add后面输入要增加监控的网站地址 用法: add baidu.com" && exit 1
                u=$(grep -w "$2" url.txt|wc -l)
                if [ $u -eq 1 ];then
                        echo "$2 网站已存在" 
                else
                        echo $2 >> url.txt
                        echo "$2 网站已加入监控列表"
                fi
                ;;
        del )
                [ -z $2 ] && echo "请在del后面输入要移除监控的网站地址 用法: del baidu.com" && exit 1
                u=$(grep -w "$2" url.txt|wc -l)
                if [ $u -eq 1 ];then
                        sed -i "s|$2||" url.txt
                        sed -i '/^$/d' url.txt
                        echo "$2 网站已删除" 
                else
                        echo "$2 网站未找到"
                fi
                ;;
        update )
                vi url2.txt
                ;;
        dis     )
                cat url.txt|sort|uniq -c
                ;;
        back )
                cp url.txt url.bk
                echo "监控列表备份文件url.bk"
                ;;
        disuniq )
                cp url.txt url.bk
                cat url.txt|sort|uniq -c|awk '{print$2}' > url.new
                cat url.new > url.txt
                rm -rf url.new
                sed -i '/^$/d' url.txt
                echo "监控列表去重完成 备份文件 url.bk"
                ;;
        * )
                echo "-----------`date`-----------------"
                echo "sh $0 add       增加监控网站"
                echo "sh $0 del       删除监控网站"
                echo "sh $0 update    修改网站联系人信息"
                echo "sh $0 dis       显示监控列表"
                echo "sh $0 back      备份监控列表"
                echo "sh $0 disuniq   监控列表去重"

                echo "----------------------------------"
                ;;
esac

顺带常用的crontab调用频率 使用看旧版本博客。

*/5 * * * * sh /root/check.sh
*/1 * * * * sh /root/checkadd.sh
0 0 * * * echo > url.del


相关内容

热门资讯

德国总理:美国正在被伊朗羞辱 德国之声4月27日报道,德国总理默茨在访问一所学校时表示,在当前的持续冲突中,伊朗领导层正试图羞辱美...
理响中国|“长”歌以行,风云激... 光阴如梭,东方潮阔。这里是中国的长三角,世界的长三角。无论过去、现在还是未来,这片土地都因时代而生,...
白宫:特朗普及其国安团队开会讨... 新华社华盛顿4月27日电 美国白宫新闻秘书莱维特27日在记者会上证实,总统特朗普及其国家安全团队当天...
人民日报刊文:日本放开杀伤性武... 日本放开杀伤性武器出口推高地缘冲突风险(国际论坛)常思纯《人民日报》(2026年04月28日 第 0...
医疗保障法草案二审:明确生育保... 满足多样化健康保障需求本报记者 彭 波4月27日,医疗保障法草案二审稿提请十四届全国人大常委会第二十...
天津一景区发生自转旋翼机事故1... 澎湃新闻记者 吕新文中国民用航空华北地区管理局4月22日公布《豪客通航“10•1”天津长芦汉盐旅游区...
卡塔尔埃米尔与美国总统特朗普通... 当地时间24日,卡塔尔埃米尔塔米姆与美国总统特朗普通电话,重点就中东地区局势以及伊朗与美国谈判问题交...
男子30年前被扣押2859克黄... 澎湃新闻记者 王鑫家住辽宁省大连市的潘永嘉近日向澎湃新闻反映称,三十年前,他在大连周水子机场被盖州市...
商务部:取消反制欧盟两家金融机... 中华人民共和国商务部令二〇二六年 第1号鉴于欧盟已取消对中国两家金融机构的制裁措施,现公布《关于取消...
过去24小时共有5艘船只通过霍... 总台记者当地时间24日获悉,过去24小时内,共有5艘船只通过霍尔木兹海峡,其中包括一艘伊朗油轮。(总...