
#! /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 activemqMonitorhostAndPortStr brokerNameusername passworddestinationNames)
result=`echo monitorDate|awk -F '["{}:,]+' '{for(i=0;i++<=NF;) printfi" ";print ""}'`
code=`echo result|awk '{print2}'`
if [ "code" != 0 ];then
message=result
gotErr 3
fi
}
#判断是否在线
function getIsOnline(){
online=`echo result|awk '{print8}'`
if [ "online" == "true" ];then
CURNUM=0
else
CURNUM=2
fi
}
#消息积压数量
function getPendingNumber(){
CURNUM=`echoresult|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//\'/\"}`
echoresult
}
#输出错误信息并且退出程序
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