首页 > 其他 > 详细

业务监控脚本

时间:2014-02-20 15:13:27      阅读:459      评论:0      收藏:0      [点我收藏+]
#!/bin/bash
###运维联系方式
OP_PHONE=15121132075,13817488875,15800329316
#OP_PHONE=15800329316
####业务地址
url1="http://api.pplaystore.com/api/v22/apks/tabList?format=json&page=1"
url2="http://push.pplaypush.com/api/push/getpushcfg.json"
url3="http://kkkkkjdflk.com"
####计数器
CONTINUER=3
####报警消息
task1="playapp_api" #业务连续$CONTINUER次异常
task2="playapp_push" #业务连续$CONTINUER次异常"
task3="pplayapp_bash"
###业务数
tasknum=3
####计数器文件
counterfile=‘/dev/shm/mon_api_push/counter‘
dirname=‘/dev/shm/mon_api_push‘
[ -f $dirname ] || mkdir -p $dirname
[ -f $counterfile ] || touch $counterfile
function num_mod_add()
{
        local ltask num taskdir
        ltask=$1
        taskdir=$2
        num=$CONTINUER
        lnum=`cat $counterfile |grep $ltask|awk -F‘_‘ ‘{print $3}‘`
        [ -n "$lnum" ] || echo ${ltask}_1 >> $counterfile
        let lnum++
        sed -i ‘s/‘$ltask‘.*/‘$ltask‘_‘$lnum‘/g‘ $counterfile
        if [ $lnum -eq $num ]
        then
                echo 0 $lnum > $taskdir/ret_add
        elif [ $lnum -gt $num ]
        then
                echo 1 $lnum > $taskdir/ret_add
        fi
}
function num_del()
{
        local ltask num taskdir
        ltask=$1
        taskdir=$2
        num=$CONTINUER
        lnum=`cat $counterfile |grep $ltask|awk -F‘_‘ ‘{print $3}‘`
        if [ "$lnum" != "" ]
        then
                if [ "$lnum" -lt "$((num-1))" ]
                then
                        sed -i ‘/‘$ltask‘/d‘ $counterfile
                        let lnum++
                        echo "1 $lnum $ltask" > $taskdir/ret_del
                        echo nihao
                elif [ "$lnum" -eq "$((num-1))" ]
                then
                        sed -i ‘/‘$ltask‘/d‘ $counterfile
                        let lnum++
                        echo "0 $lnum $ltask" > $taskdir/ret_del
                elif [ "$lnum" -ge "$num" ]
                then
                        sed -i ‘/‘$ltask‘/d‘ $counterfile
                        let lnum++
                        echo "0 $lnum $ltask" > $taskdir/ret_del
                fi
        fi
}
function sendwarning()
{
        local ltask taskdir time state
        ltask=$1
        taskdir=$2
        time=`date +%F‘ ‘%T`
        CURL="/usr/bin/curl"
        for i in `seq $tasknum`
        do
                task=task$i
                eval task=\$$task
                if [ $ltask == $task ]
                then
                        url=url$i
                        eval url=\$$url
                        $CURL -I --connect-timeout 10 "$url"|grep "HTTP/1.1 200 OK"
                        state=`$CURL -I --connect-timeout 10 "$url"`
                        if [ $? -eq 0 ]
                        then
                                sendrecovery $ltask $taskdir $state
                        else
                                num_mod_add $ltask $taskdir
                                ret=`cat $taskdir/ret_add |awk ‘{print $1}‘`
                                numwar=`cat $taskdir/ret_add|awk ‘{print $2}‘`
                                if [ $ret -eq 0 ]
                                then
                                        for phone in `echo $OP_PHONE|sed ‘s/,/ /g‘`
                                        do
                                                sendtime=" (`date +%F‘ ‘%T`)"
                                                URL="http://192.168.6.13/fetion.php?phone=PHONE&msg=MSG"
                                                sendtask=`echo $ltask连续$numwar次异常 $sendtime|/usr/bin/perl -e ‘use URI::Escape;while(<STDIN>){print uri_escape($_);}‘`
                                                ##拼装告警信息
                                                MSGURL=`echo $URL|sed "s/PHONE/$phone/g;s/MSG/$sendtask/g;"`
                                                $CURL "$MSGURL"
                                                mon_log "$ltask" "$state" "$ltask连续$numwar次异常" "$time"
                                        done
                                else
                                        mon_log $ltask $state "$ltask连续$numwar次异常" $time
                                fi
                        fi
                fi
        done
        rm -rf $taskdir/*
}
function sendrecovery()
{
        local ltask phone taskdir time state
        ltask=$1
        taskdir=$2
        state=$3
        time=`date +%F‘ ‘%T`
        CURL="/usr/bin/curl"
        sendtime=" (`date +%F‘ ‘%T`)"
        num_del $ltask $taskdir
        ##发送短信接口
        if [ -f $taskdir/ret_del ]
        then
        cat $taskdir/ret_del|grep $ltask
                if [ $? -eq 0 ]
                then
                        ret=`cat $taskdir/ret_del|grep $ltask |awk ‘{print $1}‘`
                        if [ "$ret" -eq 0 ]
                        then
                                numrec=`cat $taskdir/ret_del|awk ‘{print $2}‘`
                                ####拼装告警信
                                URL="http://192.168.6.13/fetion.php?phone=PHONE&msg=MSG"
                                sendtask=`echo "$ltask第$numrec次恢复" "$sendtime"|/usr/bin/perl -e ‘use URI::Escape;while(<STDIN>){print uri_escape($_);}‘`
                                for phone in `echo $OP_PHONE|sed ‘s/,/ /g‘`
                                do
                                        MSGURL=`echo $URL|sed "s/PHONE/$phone/g;s/MSG/$sendtask/g;"`
                                        $CURL "$MSGURL"
                                        mon_log "$ltask" "$state" "$ltask第$numrec次恢复" "$time"
                                done
                        fi
                fi
                rm -rf $taskdir/*
        fi
}
function mon_log()
{
        local task time state msg
        task=$1
        state=$2
        msg=$3
        time=$4
        echo $task $state $msg $time >> /tmp/amos_mon_task.log
}
function mon_api_push()
{
        local task taskdir
        for i in `seq $tasknum`
        do
                task=task$i
                rand=$RANDOM
                eval taskdir=$dirname/\$$task
                [ -d $taskdir ] || mkdir -p $taskdir
                eval echo \$$task
                eval sendwarning \$$task $taskdir &
        done
        wait
}
mon_api_push


本文出自 “秋风颂” 博客,请务必保留此出处http://qiufengsong.blog.51cto.com/7520243/1360524

业务监控脚本

原文:http://qiufengsong.blog.51cto.com/7520243/1360524

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!