ActiveMQ5.10.2版本配置JMX

ActiveMQ的特性之一是很好的支持JMX。經過JMX MBeans能夠很方便的監聽和控制ActiveMQ的broker。html

  鑑於官方網站提供的JMX特性說明對於遠程訪問的配置流程不是很完整,筆者在實際配置時也走了一點彎路。因此本文將根據筆者的實際經驗,分別講解如何在windows和Linux環境下配置ActiveMQ的JMX遠程訪問。除此以外,還會從「是不是密碼保護」的方面講解。java

  本文的JMX客戶端環境爲Windows7下的JDK1.7。windows

沒有密碼保護的遠程訪問

  沒有密碼保護的遠程訪問的配置很簡單,只需稍微修改activemq.xml中的配置便可。配置以下:安全

Window平臺下

  在<broker>節點中加入useJmx屬性,並修改<managementContext>節點中的createConnector屬性:服務器

<broker ... useJmx="true">
...
    <managementContext>
        <managementContext createConnector="true"/>
    </managementContext>
</broker>

  其中,默認訪問端口爲1099,也能夠經過<managementContext>節點中的connectorPort屬性修改。啓動activemq後,日誌中出現如下信息表示配置成功了。oracle

 INFO | JMX consoles can connect to service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi

  在windows7命令行中啓動jconsole,選擇「遠程進程」,在URL中輸入將localhost替換成實際IP後的上述信息,無需用戶名和口令。便可連接成功。如圖:ide

Linux平臺下

  Lunix平臺的下配置與windows一模一樣,但需額外增長以下配置:網站

<broker ... useJmx="true">
...
    <managementContext>
        <managementContext createConnector="true" connectorHost="本機的IP"/>
    </managementContext>
</broker>

 或修改Linux服務器系統文件/etc/hosts中的localhost設置,將127.0.0.1更改成實際IP(不建議)。ui

  不然客戶端沒法經過將localhost替換成實際IP後遠程訪問JMX。spa

有密碼保護的遠程訪問

  有密碼保護的配置相對較複雜,須要修改JVM參數,主要步驟以下:

Window平臺下

  1、確認ActiveMQ默認的鏈接器已經關閉。注意createConnector=false

<broker ... useJmx="true">
...
    <managementContext>
        <managementContext createConnector="false"/>
    </managementContext>
</broker>

  2、確認conf目錄下有jmx.access(用戶權限)和jmx.password(用戶密碼)兩個文件(安裝時默認會有),並按照格式填寫內容(參考官方文檔)

  3、修改jmx.password的讀取權限,目的是除歸屬用戶外,其它用戶不能有權限讀寫,這個是難點,對於筆者使用的win7系統,按以下方式修改。

    右鍵jmx.password文件>屬性>安全>高級>權限,將「包括可從該對象的父項繼承的權限」勾掉,彈出警告選擇「添加」

    

    而後刪除全部用戶,一路肯定。此時這個文件已經不能訪問和修改。若想從新修改內容,右鍵jmx.password文件>屬性>安全>高級>權限>添加,將用戶添加進來便可。

  4、修改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 Windows Systems。

Linux平臺下

  Linux下的步驟與windows相似:

  1、設置createConnector=false

  2、確認jmx.access和jmx.password兩個文件和內容

  3、關於jmx.password文件的權限,Linux下就比較容易,執行如下命令便可

chmod 600 jmxremote.password

  4、修改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參數,引向密碼文件。難點在於密碼文件的權限修改。

相關文章
相關標籤/搜索