无防火墙下activemq的JMX配置:
1、修改activemq.xml
路径:${ACTIVEMQ_HOME}/conf/activemq.xml
Broker节点,增加属性useJmx="true"
managementContext节点,修改createConnector改为true,增加jmx端口属性:connectorPort="11099"
2、修改jmx用户名密码配置
默认用户名密码:admin/activemq
可通过以下文件增删用户名密码和权限:
配置用户名和权限:${ACTIVEMQ_HOME}/conf/jmx.access
配置用户名和密码:${ACTIVEMQ_HOME}/conf/jmx.password
3、修改启动文件activemq
路径:${ACTIVEMQ_HOME}/bin/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"
按照以上配置后,服务器开启防火墙,并且开放了11099端口,发现还是不能正常监控activemq,而且telnet 11099端口是通的,出现这个问题的原因可以参考:
需要修改activemq的JMX配置如下:
1、${ACTIVEMQ_HOME}/bin/activemq 只保留
ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Djava.rmi.server.hostname=$服务器的ip"
2、${ACTIVEMQ_HOME}/conf/activemq.xml 配置如下:
这里配置了两个端口,一个是jmx端口,另一个是rmi端口。
说明:之前的配置方案,只配置了jmx端口,rmi端口是随机的;而防火墙只开放了jmx端口,没有开放rmi端口,并且对于随机的rmi端口,是无法配置防火墙规则的故在此配置方案基础上,再增加一个12099(rmi端口)的防火墙入站规则,即可进行访问。