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

    技术2022-07-10  127

    背景

    实现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%,}状态异常" zhangxiping5@hikvision.com.cn #调用短信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!----------------"
    Processed: 0.022, SQL: 9