搭建模擬環境:
作業系統:centos7
記憶體:1G
jdk:1.8.0_131
tomcat:8.0.48
環境準備我們這里就不直接演示了,直接配置tomcat的jmx
1、進入到tomcat的bin目錄下
# cd /opt/tomcat/apache-tomcat-8.0.48/bin/
2、編輯組態檔
# vim catalina.sh
3、在下圖中上面添加引數

引數添加后的樣子
3.1、此配置連接jmx不需要賬號密碼:
CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=192.168.100.117
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"
配置后的截圖:

引數說明:
hostname:是監控tomcat所在服務器的ip地址
jmxremote.port:埠號,是要開啟的監控埠號
jmxremote.ssl:是否要開啟ssl連接
authenticate: false表示監控不需要用戶和密碼
3.2、需要配置用戶名、密碼:
CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=192.168.100.117
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password
-Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access"
配置后的截圖:

引數說明:
authenticate:為true開啟賬號驗證
access.file:權限檔案路徑
password.file:密碼檔案路徑
3.3、當沒有配置密碼驗證的時候,不需要此步操作,當啟用用戶、密碼驗證后需要操作此步驟
3.3.1、找到jdk安裝目錄
如果不知道安裝到目錄那個地方可以通過命令查找:
# java -verbose

3.3.2、切換到jdk目錄中

進入# cd jre/lib/management/
在檔案目錄下會有jmxremote.access jmxremote.password.template檔案,拷貝到tomcat的conf目錄下
# cp jmxremote.* /opt/tomcat/apache-tomcat-8.0.48/conf/
3.3.3、修改jmxremote.access檔案

3.3.4、重命名密碼檔案:
# mv jmxremote.password.template jmxremote.password
3.3.5、編輯密碼檔案
# vim jmxremote.password

3.3.6、編輯完檔案后,要修改access檔案和password檔案權限,不然tomcat啟動不起來
# chmod 600 jmxremote.*
4、啟動tomcat
[root@ha bin]# ./startup.sh Using CATALINA_BASE: /opt/tomcat/apache-tomcat-8.0.48 Using CATALINA_HOME: /opt/tomcat/apache-tomcat-8.0.48 Using CATALINA_TMPDIR: /opt/tomcat/apache-tomcat-8.0.48/temp Using JRE_HOME: /usr Using CLASSPATH: /opt/tomcat/apache-tomcat-8.0.48/bin/bootstrap.jar:/opt/tomcat/apache-tomcat-8.0.48/bin/tomcat-juli.jar Tomcat started.

4.1、做完上面操作,使用jdk自帶的jvisualvm.exe連接,可以在windows下測驗





雙擊打開jmx連接


4.2、重啟tomcat,測驗jmx是否還可以連接上
# ./shutdown.sh
4.2.1、再次連接jmx查看是否可以連接上
資料監控圖都查看不了,連接不上


為什會出現這個問題?
網上給出的結論是:
tomcat的jmx遠程健康是需要兩個埠,一個是注冊埠,一個是服務埠,之前配置指定的9999埠是注冊埠,tomcat在啟動的時候會隨機指定一個服務埠,由于我們注冊埠只有一個,所以在重啟服務后,注冊埠沒有變化,服務埠已經變了,再次通過注冊埠連接已經連接不上之前的服務埠了,沒有辦法指定服務端連接,服務埠是隨機的,
有一種方法是設定jmx固定的注冊埠和服務埠,通過jar包實作
5、登錄tomcat官網(注意,我的tomcat版本是1.8.0的官網上只有1.8.5的也可以使用)
網址:https://tomcat.apache.org/
根據自己的tomcat版本找到JMX Remote jar

6、把下載下來的上傳到tomcta的lib目錄下
獲取jar包的連接也可以直接wget到lib目錄下
# wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.50/bin/extras/catalina-jmx-remote.jar

7、編輯tomcat的conf目錄下的server.xml檔案
# vim server.xml
添加下面內容:
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"
rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002" />

8、編輯tomcat的bin目錄下catalina.sh
# vim catalina.sh
洗掉引數:
-Dcom.sun.management.jmxremote.port=9999

9、重啟tomcat測驗,jmx注冊埠為10001,服務埠為10002





10、重啟tomcat再次連接測驗
當我們雙擊之前創建的jmx遠程連接的時候會發現也連接不上,這是為什么呢,這里我們要注意上面連接中的pid號,經過查詢,我們發現這個pid號就是linux中tomcat的pid號,當我們重啟tomcat后,會產生新的pid號,所以我們想要連接就要新建一個連接


11、我們再次新建jmx連接的時候會獲取新的pid號


12、到這里我們就測驗成功了,這樣在我們使用zabbix使用jmx監控tomcat的時候就不用擔心tomcat重啟jmx埠連接不上了
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/144518.html
標籤:Linux
上一篇:Linux環境搭建及基礎操作
