
#! /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