web-dev-qa-db-ja.com

ApacheActiveMQブラウザがJMXコンソールに接続できません

Apache ActiveMQ version 5.8.0を使用していて、Apache ActiveMQ Browser version 2.5.2.8をダウンロードしました

Apache ActiveMQ内で、JMXを使用するようにactivemq.xml構成を編集しました。

<broker xmlns="http://activemq.Apache.org/schema/core" useJmx="true" brokerName="localhost" dataDirectory="${activemq.data}">
  <!-- This needed to be set to true, otherwise JMX won't start in 5.8.0 -->
  <managementContext>
    <managementContext createConnector="true"/>
  </managementContext>
</broker>

起動スクリプト内で、JMX設定を次のように設定しました。

#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"
ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.Sun.management.jmxremote"

Apache ActiveMQを再起動すると、ログにJMXが起動され、アクセス可能であることが示されます。

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

また、ポートがリッスンしているかどうかを確認すると、リッスンポートになります。

[me@server ~]$ netstat -lptun | grep 1099
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 :::1099                     :::*                        LISTEN      16775/Java

ApacheActiveMQがサーバー上で実行されています。たとえば、IP10.0.0.100の場合。 Apache ActiveMQブラウザーは私のPC(10.0.0.200)で実行されます。

Apache ActiveMQブラウザーに接続しようとすると、接続が失敗し続けます。次の設定を使用しています。

 JMX URL: service:jmx:rmi:///jndi/rmi://10.0.0.100:1099/jmxrmi
 JMX role: admin
 JMS password: activemq

この時点で、ユーザーとパスワードをデフォルトとしてjmx.passwordおよびjmx.accessのままにしました。

また、PuTTYに接続して、ポート1099からローカルポート1099へのトンネルを作成し、10.0.0.1ではなくlocalhostに接続して、ファイアウォールに問題がないことを確認しました。 。しかし、すべてが失敗します。

私は何かを忘れていますか?

15
Mark Veenstra

残念ながら、JMXが正しく動作するには2つのポートが必要です。また、2番目のポート(RMIレジストリポート)はデフォルトでランダムに選択され、ファイアウォールなどの問題を引き起こします。

JDK7u4以降使用可能

-Dcom.Sun.management.jmxremote.rmi.port=<port>

使用するRMIポートを設定します。

16
JB-

何時間もの苦しみの後。ファイアウォールの背後で接続する魔法。

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

サンプル接続文字列:

service:jmx:rmi://10.0.4.14:1098/jndi/rmi://10.0.4.14:1099/jmxrmi
9
CelinHC

JDKバージョンによって制限されているため、-Dcom.Sun.management.jmxremote.rmi.portを使用できない場合は、代わりに、managementContext自体でRMIレジストリポートを指定できます。

<broker xmlns="http://activemq.Apache.org/schema/core" useJmx="true" brokerName="localhost" dataDirectory="${activemq.data}">
    ...
    <managementContext>
        <managementContext connectorPort="1099" rmiServerPort="<port>" />
    </managementContext>
    ...
</broker>
5
RJC

私にとって私はこれを手に入れました:Connection refused to Host: ; nested exception is: .... TCP jmxポートでリッスンしていましたが。

-Djava.rmi.server.hostname = my.local.ip.addressも必要だったようですが、通常の接続URLで機能しました

 service:jmx:rmi:///jndi/rmi://Host:your_jmxremote_port/jmxrmi

理由がわからない...

おそらくactivemq側でもこれが必要でしたが、確かではありません。

--jmxurl service:jmx:rmi:///jndi/rmi://127.0.0.1:11099/jmxrmi
0
rogerdpack