歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> ActiveMQ5.10.2版本配置JMX

ActiveMQ5.10.2版本配置JMX

日期:2017/2/28 14:01:09   编辑:Linux教程

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後的上述信息,無需用戶名和口令。即可鏈接成功。如圖:

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文件>屬性>安全>高級>權限,將“包括可從該對象的父項繼承的權限”勾掉,彈出警告選擇“添加”

    

    然後刪除所有用戶,一路確定。此時這個文件已經不能訪問和修改。若想重新修改內容,右鍵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及其它細節,參考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類似:

  一、設置createConnector=false

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

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

chmod 600 jmxremote.password

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

推薦閱讀:

Linux系統下ActiveMQ 安裝 http://www.linuxidc.com/Linux/2012-03/55623.htm

Ubuntu下的ACTIVEMQ服務器 http://www.linuxidc.com/Linux/2008-07/14587.htm

Spring+JMS+ActiveMQ+Tomcat實現消息服務 http://www.linuxidc.com/Linux/2011-10/44632.htm

Linux環境下面ActiveMQ端口號設置和WEB端口號設置 http://www.linuxidc.com/Linux/2012-01/51100.htm

ActiveMQ5.11.1和JDK版本的匹配關系 http://www.linuxidc.com/Linux/2015-05/118124.htm

Copyright © Linux教程網 All Rights Reserved