IBM Websphere MQ Monitoring
我一直试图从IBM WebSphere MQ中获取一些性能统计信息,以便使用Spring Source的Hyperic HQ进行监控。IBM Websphere MQ Monitoring
我在消息入队和出队率以及队列深度的几个本地队列之后,以确保消息被传递给我们的本地应用程序并被其使用。
最初尝试使用WMI和Windows性能计数器检索数据,但是似乎在我们的一台服务器上,计数器不适用于任何本地队列(只是一个临时队列的负载),另一方面计数器可用,但不总是通过WMI正确返回值。
我试过PCF(使用MQIA_MSG_DEQ_COUNT
),它不会提供请求的计数器。 MQSC(使用DISPLAY QUEUE
& DISPLAY QSTATUS
),它似乎不支持排队率 - 只提供最后的消息获取/放入日期和时间。
任何人都知道如何让WMI和性能计数器正常工作或WMI的替代方案能提供我需要的统计数据?
关于MQIA_MSG_DEQ_COUNT
,您应该意识到返回此属性的RESET_QUEUE_STATISTICS
命令是我喜欢称之为“WMQ的量子物理属性”的原因,因为观察值的行为会重置该值。如果你是唯一一个询问价值的人,并且你只有一个询问线索,这很好。但是,如果您一次有多个查询,他们都会在每次查询时将计数器重置为零,每次查询都会跳到另一个数字上。这方面使得RESET_QUEUE_STATISTICS
有限的用于实时调试,不适合可靠的统计数据收集。
另一种方法是使用MQ的会计和统计工具。为了让QMgr产生会计和统计消息,有必要在QMgr或每个队列的基础上启用它们。有关如何启用它们的说明,请参见手册部分Queue statistics information。
请注意,统计信息会报告给事件队列并且必须被提取和解析。有关解析事件消息的文档参考资料位于Queue statistics message data部分。源格式的示例程序名为amqsmon,它显示了如何获取和格式化统计消息。编译后的版本也提供了这些消息的可读的列表。
一旦您对感兴趣的队列启用统计并有解析消息的方法,只需将您的解析器指向适当的事件队列并收集统计信息即可。 amqsmon的输出表示的可用统计数据的一个例子如下:
RecordType: QueueStatistics
QueueManager: 'saturn.queue.manager'
IntervalStartDate: '2005-04-30'
IntervalStartTime: '15.09.02'
IntervalEndDate: '2005-04-30'
IntervalEndTime: '15.39.02'
CommandLevel: 600
ObjectCount: 3
QueueStatistics:
QueueName: 'LOCALQ'
CreateDate: '2005-03-08'
CreateTime: '17.07.02'
QueueType: Predefined
QueueDefinitionType: Local
QMinDepth: 0
QMaxDepth: 18
AverageQueueTime: [29827281, 0]
PutCount: [26, 0]
PutFailCount: 0
Put1Count: [0, 0]
Put1FailCount: 0
PutBytes: [88, 0]
GetCount: [18, 0]
GetBytes: [52, 0]
GetFailCount: 0
BrowseCount: [0, 0]
BrowseBytes: [0, 0]
BrowseFailCount: 1
NonQueuedMsgCount: 0
ExpiredMsgCount: 0
PurgedMsgCount: 0
这个和其它实施例中提供的手册中在题为,适当地足够部分,amqsmon examples。
谢谢rob,是我考虑的替代方案之一。我最终使用了一个支持包(MS0B),它提供了一套用于Java的PCF类,我已经集成到一个hyperic插件中。然后打开队列监控所需的队列即时请求最后一条消息得到时间来检查消息正在交付,并从队列中拉出,这是我现在真正感兴趣的。我不确定启用队列统计信息会导致哪种性能开销。感谢有关重置队列统计信息+ hehe“WMQ的量子物理性质”。菲尔 – 2011-03-31 10:36:28
消息到期是消息的“Schroedinger's Cat”属性 - 它可以以两种状态存在,直到您获取它。 – 2011-03-31 11:45:13