CDH服务监控,短信邮箱告警

背景

实现CDH服务出现异常能够及时通知。

脚本实现

#! /bin/bash
#异常服务出现次数累加数量
export count=0
#异常服务列表
export BADserver
#单次轮询标志位,0 无异常服务,1 有异常服务
export sc=0
#轮询次数累加数量
export lxcount=0 

while true
do
     # 每三分钟轮询 /home/azkaban/serveies.txt 里配置监控的cdh服务
     while read line
     do
     #调用cloudreaManager restAPI获取服务状态信息
     rs=`curl -u user:passwd -X GET http://hdh02.c.p.xyidc:7180/api/v33/clusters/EZCluster/services/$line|jq .healthSummary | sed 's/\"//g'`
     #单次轮询,有异常服务进入
     if [ ${rs} == "BAD" ];
     then
       #有异常服务,标志位置 1
       sc=1
       #异常服务累加
       count=$((count+1))
       #判断异常服务列表是否已包含当前坏的服务
       if [[ "$BADserver" =~ $line ]]
       then
         echo "------------------------------------------------------------------------------$line exits"
       else
        #没有包含,则加入坏的服务列表
        BADserver=$line,$BADserver
        echo "------------------------------------------------------------------------------BADserver=${BADserver%,}"
       fi    
      fi
     echo -----------------server=$line healthSummary=$rs  count=$count  lxcount=$lxcount------------------    
     done<serveies.txt
     
     #判断单次轮询,是否有服务异常
     if [ $sc -ge 1 ];
       then
       lxcount=$((lxcount+1))
       echo --------------------------------------------------------------------------------Have some server BAD!!!
     else
       echo --------------------------------------------------------------------------------All server not BAD now
       #无服务异常,将前面累计的count值置为0,异常服务列表置为空,表示前面异常的服务已经恢复正常
       count=0
       lxcount=0
       BADserver=
     fi
     #单次轮询完,将标志位置为0
     sc=0
     if [ $count -ge 6 -a $lxcount -ge 8 ];
         then
          message="不得了了,出大事啦,线上环境大数据服务${BADserver%,}状态异常!!!"
          #邮件发送
          #echo "$message" | mail  -s  "线上服务${BADserver%,}状态异常"  [email protected]
          #调用短信rest接口,进行短信告警发送
           curl "http://xxxx:8080/alarm/sendSms.do?mobile=1515813***5&body=${message}&type=0&producer=CDH"
          echo $message
          #增加hive服务异常处理,hive服务重启,服务重启完成短信通知
          if [[ "$BADserver" =~ "hive" ]];
           then
             echo "------------------------------------------------------------------------------restart hive " 
             msg="大数据线上集群hive服务状态异常,hive服务重启完成"
             #curl -u user:passwd -X post http://hdh02.c.p.xyidc:7180/api/v33/clusters/EZCluster/services/hive/commands/restart
             if [[ "$?" =~ "0" ]]
               then
                echo "$msg $BADserver $lxcount" 
               #curl "http://xxx:8080/alarm/sendSms.do?mobile=1515813**&body=${msg}&type=0&producer=CDH"
             fi
          fi
          lxcount=0
          count=0
    fi
    #轮询间隔时间
    sleep 3m
done
echo "-----------task is stoped!----------------"

你可能感兴趣的:(大数据监控)