ActiveMQ笔记:管理和监控

ActiveMQ提供了比较丰富的监控和管理工具。在ActiveMQ的网页里(http://activemq.apache.org/how-can-i-monitor-activemq.html)提到了很多ActiveMQ自带以及第三方的监控管理工具。

本文主要介绍ActiveMQ自带的管理工具webconsole,基于Jolokia的开源的管理工具http://hawt.io/,以及使用ActiveMQ的Advisory messages来自己编程监控ActiveMQ的状态。

WebConsole

要使用WebConsole,需要在ActiveMQ的配置文件里加入jetty.xml。

<import resource="file:${activemq.conf}/jetty.xml"/>

 

Jetty.xml配置了ActiveMQ里使用的Jetty web服务器。通过该配置文件,使能了WebConsole和ActiveMQ内置的基于Jolokia的REST API。

 

另外,还需要修改jetty-realm.properties里的登陆名和密码。

 

完成配置后,可以通过http://${Host}:8161/admin/来访问WebConsole。通过WebConsole可以知道ActiveMQ的一些主要信息,如Queues,Topics,等。详细功能可以参见:http://activemq.apache.org/web-console.html

Hawt.io

ActiveMQ提供了比较丰富的基于JMX的管理功能。使用,jconsole等JMX的管理工具可以通过JMX接口来管理ActiveMQ。但是,如果通过远程使用JMX,需要较多的配置工作。

 

开源的Jolokia项目,提供了通过REST API来访问JMX管理功能的能力。ActiveMQ内部已经集成了Jolokia类库,通过WebConsole相同的配置,可以使能基于Jolokia的REST API访问ActiveMQ。

 

Hawt.io是一个开源的使用Jolokia的第三方管理工具。该工具可以作为一个单独的jar文件执行,也可以作为一个war文件部署到Tomcat/Jetty等Servlet Container里。通过http://hawt.io/可以下载该工具。

 

使用Hawt.io,可以提供比WebConsole更丰富的管理功能。使用Hawt.io需要一些配置工作。

l  建立Hawt.io和ActiveMQ的连接时,port为8161,path为api/jolokia。(这些是ActiveMQ的缺省配置,可以在ActiveMQ的jetty.xml修改)

l  如果Hawt.io和ActiveMQ不在一台机器时,需要设置hawtio.proxyWhitelist这个JVM的system property来启动Hawt.io。如果是以jar文件运行Hawt.io,可以在启动的command line设置,如:

java -Dhawtio.proxyWhitelist=${Host},127.0.0.1,localhost -jar hawtio-app-1.5.7.jar

 

Advisory消息

ActiveMQ内部提供了一些管理的Topics,通过Advisory消息可以向这些Topics发送消息报告ActiveMQ内部的状态,例如Client Connection的建立,Queue的建立,Topics的建立等。ActiveMQ的网页(http://activemq.apache.org/advisory-message.html)提供了详细的Advisory消息的信息,包括Topics名字,Default使能的情况,以及PolicyEntry的配置名等。

 

ActiveMQ支持Client利用wildcasts来接收多个Channels的消息。所以可以自己编写程序,监听“ActiveMQ.Advisory.>.”,从而得到所有的Advisory的管理消息。

 

为了使用Advisory的消息,需要做一些配置。PolicyEntry的使能,需要根据管理的需要,部分使能下面的entry。

<broker advisorySupport="true">

<destinationPolicy>

       <policyMap>

              <policyEntries>

                     <policyEntry topic=">" advisoryForConsumed="true"/>

                     <policyEntry topic=">" advisoryWhenFull="true"/>

                     <policyEntry topic=">" advisoryForDelivery="true"/>

                     <policyEntry topic=">" advisoryForDiscardingMessages="true"/>

                     <policyEntry topic=">" sendAdvisoryIfNoConsumers="true"/>

                   <policyEntry topic=">" advisoryForSlowConsumers="true"/>

                   <policyEntry topic=">" advisdoryForFastProducers="true"/>             

     </policyEntries>

       </policyMap>

</destinationPolicy>

 

posted @ 2018-04-22 15:23  SkyBird-2018  阅读(773)  评论(0编辑  收藏  举报