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

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值