2016-12-13 32 views
0

我想使用JMX activeMQ進行監測迄今爲止我一直在使用thisthis作爲參考,但到目前爲止我無法遠程連接到jmx,也是我在activemq日誌中沒有看到任何提及的jmx url。我想知道是否有另一種方法來確保jmx正在工作?它是否應該在activemq日誌中顯示? PS我正在使用jdk1.7和activeMQ 5.14.2。jmx似乎沒有與activeMQ工作

在此先感謝!

編輯

我在activemq.xml中文件中設置useJmx = 「真」:

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

我試過兩個步驟:

FIRST

我試圖從不斷變化的管理環境createConnector =「false」至:

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

首次端口是開放的和ActiveMQ的運行良好和JMX URL獲取報告日誌雖然我不能把設備連接到IT REMOTLEY但IM切實履行工作

第二

我又恢復我所做的更改對於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" 

在斌/ ActiveMQ的腳本,我的conf/jmx.access文件中設置一個用戶名作爲:

admin readwrite 

,也有設置的conf/jmx.password密碼:

admin activemq 

NOW ActiveMQ是不是RUNNINT所有,但運作如果我設置 AUTHENTICATE = FALSE並刪除JMX.ACCESS和JMX。 PASSWORD 在BIN/ACTIVEMQ文件中配置,但我需要用戶名和密碼 對於安全原因 我發現這個post與我的問題完全相同。有任何想法嗎?

+0

您可以發佈您的activemq.xml嗎?.activeMQ在啓動過程中將INFO級別的JMX URL記錄下來。 –

+0

嗨@HassenBennour感謝您的評論,我更新了我的問題。 – tkyass

+0

第一步,jconsole中的錯誤消息是什麼以及您使用了哪個主機名。你可以嘗試一個telnet activemqhost 8161.你有沒有引入user/pwd?你能確認你的ActiveMQ正在另一個不同的主機上運行嗎?主機名是什麼。 –

回答

1

密碼身份驗證默認情況下啓用。要禁用它,請在啓動JVM時設置以下系統屬性: -Dcom.sun.management.jmxremote.authenticate = false就像您在第二次測試中完成的那樣,但您需要添加系統屬性-Dcom.sun.management.jmxremote

嘗試添加這些JVM參數去env中的文件和更新主機IP

-Djava.net.preferIPv4Stack =真-Djava.rmi.server.hostname = XXXX

UPDATE

SO ,恢復,我認爲你嘗試的第一步是最好的,因爲使它的工作,這些步驟如下:

  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" ...

<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。

  • 嘗試與JConsole的從另一臺計算機網址爲"service:jmx:rmi:///jndi/rmi://10.10.10.16:1099/jmxrmi"連接比AMQ主機無需用戶/密碼。

  • 如果您無法連接,嘗試這樣的:

    <managementContext> 
        <managementContext createConnector="true" connectorPort="1099" connectorHost="10.10.10.16" /> 
    </managementContext> 
    
  • 驗證,在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

  • 重試連接,步驟4

  • 在此步驟通常可以用JConsole的連接。

  • ,如果你想添加的安全性和授權,使用此:
  • <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中提供錯誤信息。

    +0

    嗨哈森,我編輯了我的問題,這是我得到的最新問題,請你檢查並讓我知道你是否有任何想法。謝謝! – tkyass

    +0

    如果你設置了AUTHENTICATE = FALSE並且刪除了在BIN/ACTIVEMQ文件中的JMX.ACCESS和JMX.PASSWORD配置,你能用jconsole連接嗎? –

    +0

    我更新了我的答案,一步一步的配置嘗試 –

    0

    一對夫婦的故障排除步驟:

    1. 來啓動JConsole或在同一系統上的VisualVM和使用 「PID」 連接連接方法。瀏覽MBean和確認org.apache.activemq豆類存在

    2. 運行netstat -na並確認端口1099(44444和)處於LISTEN

    3. 看日誌,確認你沒有任何的「java .net.BindException:Address already in use ..「消息,指示端口與已經運行的Java進程衝突。

    編輯bin/env來配置JMX(這會禁用需要SSL的設置,將端口設置爲1099並禁用要求的用戶名和密碼。遠程監控

    ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.port=1099 " 
    ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.ssl=false " 
    ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote " 
    # 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" 
    
    +0

    感謝馬特你inout ..我試過你的步驟和第一步我無法遠程連接使用jconsole,所以我沒有看到MBeans。第二我有港口1099聽,但不能罰款44444,以及爲什麼檢查端口44444?爲了最後一步,我在日誌中沒有任何衝突。請看我最新的問題。謝謝。 – tkyass

    +0

    您在配置中存在衝突。可以使用「

    +0

    如果我使用默認值,那麼我如何指定jmx端口? – tkyass