操做系統:centos7
內存:1G
jdk:1.8.0_131
tomcat:8.0.48
環境準備咱們這裏就不直接演示了,直接配置tomcat的jmx
# cd /opt/tomcat/apache-tomcat-8.0.48/bin/java
# vim catalina.shlinux
參數添加後的樣子apache
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"
配置後的截圖:bootstrap
參數說明:vim
hostname:是監控tomcat所在服務器的ip地址windows
jmxremote.port:端口號,是要開啓的監控端口號centos
jmxremote.ssl:是否要開啓ssl鏈接tomcat
authenticate: false表示監控不須要用戶和密碼服務器
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.一、找到jdk安裝目錄
若是不知道安裝到目錄那個地方能夠經過命令查找:
# java -verbose
3.3.二、切換到jdk目錄中
進入# cd jre/lib/management/
在文件目錄下會有jmxremote.access jmxremote.password.template文件,拷貝到tomcat的conf目錄下
# cp jmxremote.* /opt/tomcat/apache-tomcat-8.0.48/conf/
3.3.三、修改jmxremote.access文件
3.3.四、重命名密碼文件:
# mv jmxremote.password.template jmxremote.password
3.3.五、編輯密碼文件
# vim jmxremote.password
3.3.六、編輯完文件後,要修改access文件和password文件權限,否則tomcat啓動不起來
# chmod 600 jmxremote.*
[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.
雙擊打開jmx鏈接
# ./shutdown.sh
4.2.一、再次鏈接jmx查看是否能夠鏈接上
數據監控圖都查看不了,鏈接不上
網上給出的結論是:
tomcat的jmx遠程健康是須要兩個端口,一個是註冊端口,一個是服務端口,以前配置指定的9999端口是註冊端口,tomcat在啓動的時候會隨機指定一個服務端口,因爲咱們註冊端口只有一個,因此在重啓服務後,註冊端口沒有變化,服務端口已經變了,再次經過註冊端口鏈接已經鏈接不上以前的服務端口了,沒有辦法指定服務端鏈接,服務端口是隨機的。
有一種方法是設置jmx固定的註冊端口和服務端口,經過jar包實現
根據本身的tomcat版本找到JMX Remote jar
獲取jar包的鏈接也能夠直接wget到lib目錄下
# wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.50/bin/extras/catalina-jmx-remote.jar
# vim server.xml
添加下面內容:
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"
rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002" />
# vim catalina.sh
刪除參數:
-Dcom.sun.management.jmxremote.port=9999
當咱們雙擊以前建立的jmx遠程鏈接的時候會發現也鏈接不上,這是爲何呢,這裏咱們要注意上面鏈接中的pid號,通過查詢,咱們發現這個pid號就是linux中tomcat的pid號,當咱們重啓tomcat後,會產生新的pid號,因此咱們想要鏈接就要新建一個鏈接