基础概念:
MQ中有几个很重要的组件:队列管理器(QueueManager)、队列(Queue)和通道(Channel)。
队列
最重要的部分,用来存放、取出消息。
通道
WebSphere® MQ 使用两种不同类型的通道:
1、消息通道,它是两个队列管理器之间的单向通信链路。WebSphere MQ 使用消息通道在队列管理器之间传送消息。 要双向发送消息,您必须定义每个方向的通道。
2、MQI 通道,它是双向通道,用于将应用程序(MQI 客户机)连接至服务器上的队列管理器。WebSphere MQ 使用 MQI 通道在 MQI 客户机和队列管理器之间传送 MQI 调用和响应。
常用命令:
查看队列管理器
dspmq -o all
往队列中放消息
/usr/mqm/samp/bin/amqsput QName(队列名) QmgrName(队列管理器名)
从队列中取出消息
/usr/mqm/samp/bin/amqsget QName QmgrName
运行MQSC(命令界面)
runmqsc xxxx(队列管理器名称)
MQSC用法如下(命令忽略大小写):
查看“通道channel:
DISPLAY CHANNEL(*)
查看“队列queue
dis q(*)
简写dis=display,q=queue
常用技巧:
查看IBM MQ安装信息和版本,命令:dspmqver
总结:
1、IBM MQ提供了许多C语言编写的命令行tools,位于安装目录下的bin下面。
具体用法参见官方文档(IBM WebSphere MQ Control commands):
https://www.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.ref.adm.doc/q083010_.htm
2、MQSC是一个IBM MQ内置的命令行界面,输入runmqsc xxx(队列管理器名称)后进入,在里面可以执行类似于SQL的命令。
具体语法参见官方文档(MQSC reference):
https://www.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.ref.adm.doc/q085090_.htm
查看活动队列的方法(如下,根据文件日志和size确定,szie大的说明是主要队列)
ls -lh /var/mqm/qmgrs/*/queues
IBM MQ日志路径:
1、当队列管理器名称已知,并且队列管理器可用时,错误日志位于
$MQM/qmgrs/qmname/errors 目录下,如:与MQ通道有关的消息。
2、当队列管理器不可用时,错误日志位于
$MQM/qmgrs/@SYSTEM/errors 目录下(通常,@SYSTEM目录为空)
3、当错误是与Client应用程序有关(MQ系统错误),错误日志位于:
$MQM/errors目录下
IBM MQ监控方法
1、检查连接数
1)底层网络连接检测方法
netstat -tnp | grep amqrmppa | wc -l
或
netstat -tn | grep :14 | wc -l
2)IBM MQ tool检测(推荐)
dspmqtrn -a | grep "TranNum(" | wc -l
参考文档:https://www.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.ref.adm.doc/q083270_.htm
备注:上面的 grep :14 实际上是下面的简写:
netstat -tn | grep :1417 | wc -l
其中1417为listener的port,可以先用:netstat -tn,确定一下是不是这个端口。
也可以用下面的MQSC命令查询:
用dis listener(*)查询到名称name,假设为QMEMBFE
然后 dis lsstatus(QMEMBFE),即可看到port字段。
3)查询某个通道的连接数:(推荐)
out=$( runmqsc ${qmngr_name} <<EOF dis chs(${channel_name}) EOF ) echo "$out" | grep CONNAME | wc -l
4)查询某个队列的深度:
out=$( runmqsc ${qmngr_name} <<EOF dis qs(${queue_name}) EOF ) echo "$out" | awk '/CURDEPTH/ {n=index($1, ")");print substr($1,10,n-10)}'
建议:
对主要使用的队列深度设定阈值(比如10000),超过则告警
同时,建议监控“死信队列”的深度,并设定阈值(比如200),超过则告警
2、检查日志文件大小
方法:du -sh /var/mqm/errors
PS:相关监控脚本已开源:
https://github.com/zollty/IBM-MQ-Monitoring-Script.git