ActiveMQ5.10.2版本配置JMX

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后的上述信息,无需用户名和口令。即可链接成功。如图:

ActiveMQ5.10.2版本配置JMX

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文件>属性>安全>高级>权限,将“包括可从该对象的父项继承的权限”勾掉,弹出警告选择“添加”

    

ActiveMQ5.10.2版本配置JMX

    然后删除所有用户,一路确定。此时这个文件已经不能访问和修改。若想重新修改内容,右键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及其它细节,参考Oracle.com/Javase/1.5.0/docs/guide/management/agent.html#PasswordAccessFiles,和How to a Secure Password File on Microsoft Windows Systems。

Linux平台下

  Linux下的步骤与windows类似:

  一、设置createConnector=false

  二、确认jmx.access和jmx.password两个文件和内容

  三、关于jmx.password文件的权限,Linux下就比较容易,执行以下命令即可

chmod 600 jmxremote.password

  四、修改bin\activemq文件,将以下4行注释放开。注意,这里不是SUNJMX,不与windows一样。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/16255.html