ActiveMQ5.10.2版本配置JMX

本文发布时间: 2019-Mar-22
ActiveMQ的特性之一是很好的支持JMX。通过JMX MBeans可以很方便的监听和控制ActiveMQ的broker。  鉴于官方网站提供的JMX特性说明对于远程访问的配置流程不是很完整,笔者在实际配置时也走了一点弯路。所以本文将根据笔者的实际经验,分别讲解如何在windows和Linux环境下配置ActiveMQ的JMX远程访问。除此之外,还会从“是否是密码保护”的方面讲解。  本文的JMX客户端环境为Windows7下的JDK1.7。没有密码保护的远程访问  没有密码保护的远程访问的配置很简单,只需稍微修改activemq.xml中的配置即可。配置如下:Window平台下  在<broker>节点中加入useJmx属性,并修改<managementContext>节点中的createConnector属性:<broker ... useJmx="true">... <managementContext> <managementContext createConnector="true"/> </managementContext></broker>  其中,默认访问端口为1099,也可以通过<managementContext>节点中的connectorPort属性修改。启动activemq后,日志中出现以下信息表示配置成功了。 INFO | JMX consoles can connect to service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi  在windows7命令行中启动jconsole,选择“远程进程”,在URL中输入将localhost替换成实际IP后的上述信息,无需用户名和口令。即可链接成功。如图:Linux平台下  Lunix平台的下配置与windows如出一辙,但需额外增加如下配置:<broker ... useJmx="true">... <managementContext> <managementContext createConnector="true" connectorHost="本机的IP"/> </managementContext></broker>或修改Linux服务器系统文件/etc/hosts中的localhost设置,将127.0.0.1更改为实际IP(不建议)。  否则客户端无法通过将localhost替换成实际IP后远程访问JMX。有密码保护的远程访问  有密码保护的配置相对较复杂,需要修改JVM参数,主要步骤如下:Window平台下  一、确认ActiveMQ默认的连接器已经关闭。注意createConnector=false<broker ... useJmx="true">... <managementContext> <managementContext createConnector="false"/> </managementContext></broker>  二、确认conf目录下有jmx.access(用户权限)和jmx.password(用户密码)两个文件(安装时默认会有),并按照格式填写内容(参考官方文档)  三、修改jmx.password的读取权限,目的是除归属用户外,其它用户不能有权限读写,这个是难点,对于笔者使用的win7系统,按如下方式修改。    右键jmx.password文件>属性>安全>高级>权限,将“包括可从该对象的父项继承的权限”勾掉,弹出警告选择“添加”        然后删除所有用户,一路确定。此时这个文件已经不能访问和修改。若想重新修改内容,右键jmx.password文件>属性>安全>高级>权限>添加,将用户添加进来即可。  四、修改bin\activemq.bat文件。找到set SUNJMX=语句处,主要不是带REM(注释掉)的那一行将SUNJMX值设置为set SUNJMX=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1616 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.password.file=%ACTIVEMQ_BASE%/conf/jmx.password -Dcom.sun.management.jmxremote.access.file=%ACTIVEMQ_BASE%/conf/jmx.access  好了,现在通过jconsole远程链接,填写URL,注意端口为1616,输入用户名密码,连接成功。  关于winxp及其它细节,参考http://docs.oracle.com/javase/1.5.0/docs/guide/management/agent.html#PasswordAccessFiles,和How to a Secure Password File on Microsoft WindowsSystems。Linux平台下  Linux下的步骤与windows类似:  一、设置createConnector=false  二、确认jmx.access和jmx.password两个文件和内容  三、关于jmx.password文件的权限,Linux下就比较容易,执行以下命令即可chmod 600 jmxremote.password  四、修改bin\activemq文件,将以下4行注释放开。注意,这里不是SUNJMX,不与windows一样。# 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"  现在,Linux平台下也可以实现有密码保护的远程访问了。总结  关于JMX远程访问的配置已全部讲解完毕,总结一下我们主要进行的配置:  不需要密码时,只修改activemq.xml中的配置即可;  需要密码时,关掉默认链接,在脚本中修改JVM参数,引向密码文件。难点在于密码文件的权限修改。


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2024-Mar-04 02:09pm
栏目列表