jmx似乎没有使用activeMQ

时间:2016-12-13 22:57:23

标签: activemq jmx

我正在尝试使用JMX和activeMQ进行监控到目前为止我一直在使用thisthis作为参考,但到目前为止我无法远程连接到jmx而且我也是在activemq日志中没有看到任何jmx url的提及。我想知道是否有另一种方法来确保jmx正常工作?是应该在activemq日志中指出? PS我正在使用jdk1.7和activeMQ 5.14.2。

提前致谢!

修改

我在activemq.xml文件中设置了useJmx =“true”:

<broker xmlns="http://activemq.apache.org/schema/core" brokerName="primary" useJmx="true" dataDirectory="${activemq.data}">

我尝试了两个步骤:

第一

我尝试将管理上下文从createConnector =“false”更改为:

<managementContext>
   <managementContext createConnector="true" connectorPort="1099"/>
</managementContext>

第一次打开港口并且ACTIVEMQ运行良好和JMX URL获取在日志中报告,但我无法将其连接到远程,但我确定其工作

SECOND

我恢复了我为managmentContext所做的更改,并尝试设置:

ACTIVEMQ_SUNJMX_START="-Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.password.file=${ACTIVEMQ_BASE}/jmx.password -Dcom.sun.management.jmxremote.access.file=${ACTIVEMQ_BASE}/jmx.access"
在bin / activemq脚本中

我在conf / jmx.access文件中设置了一个用户名:

admin readwrite

并且还在conf / jmx.password中设置了密码:

admin activemq
  

NOW ACTIVEMQ现在并不是RUNNINT,但如果我设置它将会运行   AUTHENTICATE = FALSE并删除JMX.ACCESS和JMX.PASSWORD   BIN / ACTIVEMQ文件中的配置,但我需要用户名和密码   出于安全原因   我发现这个post与我的问题完全相同。有任何想法吗?

2 个答案:

答案 0 :(得分:2)

默认情况下启用远程监控的密码验证。要禁用它,请在启动JVM时设置以下系统属性: -Dcom.sun.management.jmxremote.authenticate = false就像你在第二次测试中所做的那样但你需要添加系统属性-Dcom.sun.management.jmxremote

尝试将这些jvm param添加到env文件并更新主机ip

-Djava.net.preferIPv4Stack = true -Djava.rmi.server.hostname = X.X.X.X

<强>更新

那么,为了恢复,我认为您尝试的第一步是最好的,为了使它工作这些是步骤:

  1. 还原所有jmx env文件更改,如下所示:

        # ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.port=1099 "
        # 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"
        ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote"
    
  2. <broker useJmx="true" ...

  3. <managementContext>
      <managementContext createConnector="true"  connectorPort="1099" />
    </managementContext>
    

    验证您在AMQ日志中

      

    INFO | JMX consoles can connect to service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi | org.apache.activemq.broker.jmx.ManagementContext | JMX connector

    注意:假设10.10.10.16是AMQ主机的IP。

    1. 尝试使用url "service:jmx:rmi:///jndi/rmi://10.10.10.16:1099/jmxrmi" 的AMQ主机与其他计算机连接jconsole而不使用user / pwd。

    2. 如果您无法连接,请尝试这样:

      <managementContext>
        <managementContext createConnector="true"  connectorPort="1099"  connectorHost="10.10.10.16" />
      </managementContext>
      
    3. 验证您在AMQ日志中

        

      INFO | JMX consoles can connect to service:jmx:rmi:///jndi/rmi://10.10.10.16:1099/jmxrmi | org.apache.activemq.broker.jmx.ManagementContext | JMX connector

      1. 重试连接,第4步

      2. 此步骤通常可以与jconsole连接。

      3. 如果您想添加安全性和授权,请使用:
      4. <managementContext>
          <managementContext  createConnector="true"  connectorPort="1099"  connectorHost="10.10.10.16" >
              <property xmlns="http://www.springframework.org/schema/beans" name="environment">
                  <map xmlns="http://www.springframework.org/schema/beans">
                      <entry xmlns="http://www.springframework.org/schema/beans" key="jmx.remote.x.password.file"
                             value="${activemq.conf}/jmx.password"/>
                      <entry xmlns="http://www.springframework.org/schema/beans" key="jmx.remote.x.access.file"
                             value="${activemq.conf}/jmx.access"/>
                  </map>
              </property>
          </managementContext>
        </managementContext>
        

        请尝试以下步骤,让我知道您无法连接哪一个,并从jconsole提供错误消息。

答案 1 :(得分:1)

一些故障排除步骤:

  1. 在同一系统上启动jconsole或visualvm,并使用&#34; pid&#34;附加方法。浏览MBean并确认存在org.apache.activemq bean

  2. 运行netstat -na并确认端口1099(和44444)处于LISTEN状态

  3. 查看日志并确认您没有任何&#34; java.net.BindException:地址已在使用中。&#34;表示端口与已运行的Java进程冲突的消息。

  4. 编辑bin / env以配置JMX(这会禁用SSL,将端口设置为1099并禁用要求用户名和密码。

    [regex]::Match($yourString, "Deployment task '\[.*?\]\s*([^']+)").Groups[1].Value