【问题标题】:Get Number of connection from all host to my activemq broker获取从所有主机到我的 activemq 代理的连接数
【发布时间】:2015-01-11 11:34:13
【问题描述】:

ActiveMQ 代理设置:

Broker 正在机器上运行:hostA

来自不同主机的客户端可以连接到我在 hostA 上运行的代理实例,任何主机都可以有任意数量的客户端。

有没有办法找出有多少客户端连接到代理,并列出哪些告诉我每个主机有多少连接到我的代理。

我想在不假设主机数量的情况下这样做。

我可以通过使用 lsof 命令和一些解析输出来做到这一点,但我处于无法使用它的情况。

ActiveMQ 命令行实用程序 activemq-admin 是否提供任何功能。

【问题讨论】:

    标签: apache jms activemq middleware


    【解决方案1】:

    您可以通过 activemq-admin 访问 ActiveMQ 公开的几乎所有 Mbean 属性。没有任何属性或操作可以让您快速计算来自特定客户端的连接数。您必须做一些工作才能获得所需的所有详细信息,但所有原始数据都在那里。

    例子:

    经纪人统计:

    activemq-admin query --objname type=Broker,brokerName=localhost  
    

    连接统计

    activemq-admin query --objname type=Broker,brokerName=localhost,connector=clientConnectors,connectorName=<transport connector name>,connectionViewType=clientId,connectionName=* 
    

    See full doc here.
    注意:截至撰写本文时,尚未更新文档以考虑在 AMQ 中所做的 Mbean 更改。示例中对对象名称的引用不正确。

    您可以从 MBeanInfo 中的 JMX(例如使用 jconsole 或 Visual vm)获取对象名称(或示例语法)。每个对象名称都会统计类似 org.apache.activemq:type 的内容。对于脚本,删除“org.apache.activemq:”,您应该可以通过脚本从 JMX 获取您需要的任何东西。

    我认为您也可以考虑与您的经纪人一起使用 Jolokia。尽管与 activemq-admin 脚本不兼容,但您可以从 activemq-admin 脚本中访问所有可以访问的内容,而且还可以访问所有操作。过去,我大量使用 activemq-admin 脚本进行代理的本地监控/命令行管理,但已经开始将所有内容转换为访问 Jolokia 服务。但同样,activemq-admin 将为您提供一种访问您在此处查找的内容的方法。

    【讨论】:

    • 我在我的终端“activemq-admin: No match”上得到了这个。可能是因为通配符 *
    • 我看的不够近。我曾认为文档是最新的,但它们没有考虑到 5.8(5.9?)中的 JMX 更改。我已更新答案以显示如何获取此信息。您仍然可以将该文档用于其他“快捷方式”。
    • 仍然面临“activemq-admin:不匹配”。对于连接统计信息,我不知道为什么 connectionName=* 中的通配符会以这种方式运行。我把connectionName='*'放了,有一些结果,但是如何获取主机信息,是远程地址吗?或连接名称?
    • 远程地址将是连接客户端的 IP。默认情况下,连接名称中包含远程主机名,但客户端可以用自己的名称覆盖它,因此在使用此方法时要小心。
    猜你喜欢
    • 2011-12-05
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-12
    • 2021-09-22
    • 2015-06-11
    • 2017-01-05
    相关资源
    最近更新 更多