2021-05-12 14:32:11
ActiveMQ5.10.2版本設定JMX
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檔案>屬性>安全>高階>許可權>新增,將使用者新增進來即可。
四、修改binactivemq.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
四、修改binactivemq檔案,將以下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
本文永久更新連結地址:http://www.linuxidc.com/Linux/2015-06/118414.htm
相關文章