ShellWeb监控-创新互联

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

创新互联主要从事成都网站制作、成都做网站、外贸营销网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务诸暨,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220

旧版本链接:

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

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享名称:ShellWeb监控-创新互联
URL标题:http://azwzsj.com/article/pojpj.html