为了能够使用JMX监控远程的ActiveMQ以及使用JMX API以编程的方式操作ActiveMQ,我们需要对ActiveMQ进行配置,以使JMX能够正确连接到远程的ActiveMQ监控服务。我的环境如下:
ActiveMQ所在的服务器:
1.Linux之CentOS 6.5
2.ActiveMQ5.10
JMX所在的客户端
1.Windows7
2.JDK7.0
首先,需要在ActiveMQ所在的服务器检查hosts文件的设置
cat /etc/hosts
需要使用该命令查看,如果为下面的值:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
改成服务器实际IP,例如
172.168.3.230 localhost localhost.localdomain localhost4 localhost4.localdomain4
其次,我们需要对ActiveMQ进行配置
2.配置activemq.xml文件
2.1 配置broker节点
<broker useJmx="true" xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}">
注意useJmx属性,默认是没有的。
2.2 配置managementContext节点
<managementContext>
<managementContext createConnector="true" connectorPort="11099"/>
</managementContext>
注意将createConnector改为true,加上connectorPort属性。
3. 设置ActiveMQ的jmx.access和jmx.password文件
3.1 设置jmx.access文件
monitorRole readonly
controlRole readwrite
添加上面两行值,表示角色及其权限
3.2 设置jmx.password
monitorRole test1234
controlRole test1234
设置角色以及密码
4.修改ActiveMQ的启动配置
4.1 修改activemq启动文件
先查找看看有没有ACTIVEMQ_SUNJMX_START的key,如果有则修改,如果没有则之间在文件最后添加
ACTIVEMQ_SUNJMX_START的key值如下:
ACTIVEMQ_SUNJMX_START="-Dcom.sun.management.jmxremote.port=11099 "
ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.password.file=${ACTIVEMQ_CONF}/jmx.password"
ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.access.file=${ACTIVEMQ_CONF}/jmx.access"
ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.ssl=false"
5.重新启动ActiveMQ
6.JMX连接
6.1 在命令行输入jconsole
6.2 在远程连接项输入
(1)AvtiveMQ所在服务器IP:11099,例如
172.168.3.230:11099
(2)或者输入监控服务URI
service:jmx:rmi:///jndi/rmi://ActiveMQ所在服务器IP:11099/jmxrmi
例如:
service:jmx:rmi:///jndi/rmi://172.168.3.230:11099/jmxrmi