#! /bin/bash
export LANG=en_US.UTF-8

isOnline=
pendingNumber=
DataResultStr=""
message=             
hostAndPortStr=
brokerName=
username=
password=
destinationNames=
result=

function gotErr(){
    if [ "$1" -eq 3 ];then 
        echo "接口调用失败 ${message}"
    fi
    exit $1
}

#调用jar包是否成功
function isSuccess(){
    activemqMonitor="$(cd `dirname $0`;pwd)/mq_monitor.jar"
    monitorDate=$(java -jar $activemqMonitor $hostAndPortStr $brokerName $username $password $destinationNames)
    result=`echo $monitorDate|awk  -F '["{}:,]+' '{for(i=0;i++<=NF;) printf $i" ";print ""}'`
    code=`echo $result|awk '{print $2}'`
    if [ "$code" != 0 ];then
        message=$result
        gotErr 3
    fi
}

#判断是否在线
function getIsOnline(){
    online=`echo $result|awk '{print $8}'`
    if [ "$online" == "true" ];then
        CURNUM=0
    else
        CURNUM=2
    fi
}

#消息积压数量
function getPendingNumber(){
    CURNUM=`echo $result|awk '{print $10}'`
    if [ -z "$CURNUM" ];then
        CURNUM=0
    fi
}


#依据传入的参数值来判断我们要监控的服务是什么
#然后通过各个函数获取到具体的值
#值之间的
function analysisStat(){
    #判断是否在线
    getIsOnline
    parseFileds "isOnline"

    #消息积压数量
    getPendingNumber
    parseFileds "pendingNumber"
}


#拼接字符串
function parseFileds(){
    if [[ "$DataResultStr" != "" ]];then
        DataResultStr=$DataResultStr","
    fi
    DataResultStr="$DataResultStr'$1':'$CURNUM'"
}

function analysisResult(){
    result="{'cpname':'mqConsumerQueen','FLAGEPID':'0',${DataResultStr}}"
    result=`echo ${result//\'/\"}`
    echo $result
}

#输出错误信息并且退出程序
function showHelp(){
    if [ "$1" != "" ];then
        echo "请输入$1"
    fi
    echo "check_mq.sh 可以监听mq消费者队列信息 参数如下"
    echo "check_mq.sh [-f <host>] [-b <mq_name>] [-u <username>] [-p <password>] [-d <quene_name>]"
    echo "-f 表示mq单节点主机和端口字符串/mq集群主机和端口字符串"
    echo "-b 表示mq节点的名字,需要查看activemq.xml文件查看"
    echo "-u 表示连接mq节点时的用户名"
    echo "-p 表示连接mq节点时的密码"
    echo "-d 队列名称"
    exit 1
}

while getopts "f:b:u:p:d:h" arg
do
    case $arg in
        f)
            hostAndPortStr=$OPTARG
            ;;
        b)
            brokerName=$OPTARG
            ;;
        u)
            username=$OPTARG
            ;;
        p)
            password=$OPTARG
            ;;
        d)
            destinationNames=$OPTARG
            ;;
        h)
            showHelp
            ;;
        ?) 
            showHelp
            ;;
    esac
done

#插件正题部分 
#确定存活的
#启动
#分析

isSuccess
analysisStat
analysisResult

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code