Apache 获取从所有主机到我的activemq代理的连接数

Apache 获取从所有主机到我的activemq代理的连接数,apache,jms,activemq,middleware,Apache,Jms,Activemq,Middleware,ActiveMQ代理安装程序: 代理正在计算机上运行:hostA 来自不同主机的客户端可以连接到运行在hostA上的我的代理实例,任何主机上可以有任意数量的客户端 是否有办法找出有多少客户端连接到代理,并列出每个主机有多少连接到我的代理。 我不想假设主机的数量 我可以通过使用lsof命令和对输出进行一些解析来实现这一点,但我遇到的情况是我不能使用它 ActiveMQ命令行实用程序是否提供了任何功能 您几乎可以通过ActiveMQ管理员访问ActiveMQ公开的任何Mbean属性。没有任何属性或操

ActiveMQ代理安装程序:

代理正在计算机上运行:hostA

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

是否有办法找出有多少客户端连接到代理,并列出每个主机有多少连接到我的代理。

我不想假设主机的数量

我可以通过使用lsof命令和对输出进行一些解析来实现这一点,但我遇到的情况是我不能使用它


ActiveMQ命令行实用程序是否提供了任何功能

您几乎可以通过ActiveMQ管理员访问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=* 
activemq管理查询--objname type=Broker,brokerName=localhost,connector=clientConnectors,connectorName=,connectionViewType=clientId,connectionName=*

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

您可以从MBeanInfo从JMX(例如使用jconsole或visual vm)获取对象名(或示例sytax)。每个对象名都会有类似org.apache.activemq:type的属性。对于该脚本,删除“org.apache.activemq:”,您应该可以通过该脚本从JMX获得所需的任何东西


我想你也可以考虑和你的经纪人一起使用Jolokia。尽管与activemq管理脚本不兼容,但您可以从activemq管理脚本访问所有内容,但也可以访问所有操作。在过去,我大量使用activemq管理脚本对代理进行本地监控/命令行管理,但已经开始将所有内容转换为使用Jolokia服务。但是,activemq admin将再次为您提供一种访问此处所需内容的方法。

我在我的终端“activemq admin:不匹配”上获得此信息。可能是因为通配符*我看得不够近。我认为这些文档是最新的,但它们没有考虑到5.8(5.9?)中的JMX更改。我已更新了答案,以显示如何获取此信息。您仍然可以将该文档用于其他“快捷方式”。仍然面对“activemq管理员:不匹配”。对于连接统计信息,我不知道connectionName=*中的通配符为什么会这样做。我把connectionName='*'放进去,得到了一些结果,但是如何获取主机信息,是远程地址吗?或在连接名称中?远程地址将是连接的客户端的IP。默认情况下,连接名称中包含远程主机名,但客户端可以用自己的名称覆盖该名称,因此使用此方法时要小心。