IBM WebSphere MQ基础操作和监控


基础概念:


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



© 2009-2020 Zollty.com 版权所有。渝ICP备20008982号