【问题标题】:IBM Websphere MQ MonitoringIBM Websphere MQ 监控
【发布时间】:2011-03-28 13:47:40
【问题描述】:

我一直在尝试从 IBM WebSphere MQ 中获取一些性能统计数据,以便使用 Spring Source 的 Hyperic HQ 进行监控。

我关注消息入队和出队率以及一些本地队列的队列深度,以确保消息被传递到我们的本地应用程序并被我们的本地应用程序使用。

最初尝试使用 WMI 和 Windows 性能计数器检索数据,但似乎在我们的一台服务器上,计数器不适用于任何本地队列(只是临时队列的负载),而在另一台服务器上,计数器似乎不可用可用,但并不总是通过 WMI 正确返回值。

我已经尝试过 PCF(使用 MQIA_MSG_DEQ_COUNT),它不会提供请求的计数器。 MQSC(使用 DISPLAY QUEUEDISPLAY QSTATUS)似乎不支持排队率 - 仅提供最后一条消息获取/放置日期和时间。

有人知道如何让 WMI 和性能计数器正常工作,或者使用 WMI 的替代方法来提供我需要的统计信息吗?

【问题讨论】:

    标签: java performance websphere monitoring ibm-mq


    【解决方案1】:

    关于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 插件中。然后为所需的队列打开队列监控,我请求最后一条消息获取时间来检查消息正在被传递并从队列中拉出,这是我目前真正感兴趣的。我不确定启用队列统计可能会导致什么样的性能开销。感谢有关重置队列统计信息的信息 + 呵呵“WMQ 的量子物理属性”。菲尔
    • 消息过期是消息传递的“薛定谔猫”属性——它可以在两种状态下都存在,直到你获取它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 2015-01-06
    • 2018-09-12
    • 1970-01-01
    相关资源
    最近更新 更多