VisualVM監控遠程主機


參考博客

https://blog.csdn.net/u010004317/article/details/82948040

https://blog.csdn.net/lienfeng6/article/details/78676760

一、在服務器上部署JMX服務

1.進入tomcat的bin目錄,修改catalina.sh文件

#tomcat的bin目錄,修改catalina.sh: 
#vim catalina.sh 
# 添加如下配置: 
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access -Djava.rmi.server.hostname=149.129.124.xx" 
# -Dcom.sun.management.jmxremote.ssl 是否開啟ssl傳輸,設為false即可 
# -Dcom.sun.management.jmxremote.authenticate 是否校驗,設為false即可 
# -Dcom.sun.management.jmxremote.password.file 遠程登錄的賬號管理文件,下文會講到如何獲取 # -Dcom.sun.management.jmxremote.access.file 同上 
# -Djava.rmi.server.hostname 這個很重要,如果不填的話,可以重啟成功,按時客戶端的jvisual是無法遠程連接上的,這里的IP必須是公網IP,公網IP

2.進入tomcat的conf 編輯server.xml文件,添加jmx的端口監聽

<!-- # 進入tomcat的conf: vim server.xml # 添加如下的監聽配置。其中10001和10002是自定義的兩個端口,用於遠程連接需要  --> 
<!-- 遠程監控 --> 
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002" />

3.添加jmx的訪問控制文件

# 進入tomcat/conf的目錄 # 執行以下命令 cp 復制兩個文件
cp $JAVA_HOME/jre/lib/management/jmxremote.password.template jmxremote.password 
cp $JAVA_HOME/jre/lib/management/jmxremote.access jmxremote.access 
vi jmxremote.password 
# 取消下面兩行的注釋,取消注釋表示你可以使用這兩個賬號進行遠程登錄, 使用就打開,不使用可以不打開
#monitorRole QED 
#controlRole R&D 
# 也可以自定義賬號,格式如 username passwd,如我想要添加一個名稱叫root的賬號,密碼是root@123 vim jmxremote.password 
# 在最后一行添加 root root@123
# 修改完jmxremote.password文件,還要修改jmxremote.access文件,添加權限 zexin readwrite chmod 600 jmxremote.password chmod 600 jmxremote.access 

4.添加catalina-jmx-remote.jar包到tomcat的lib目錄下

在maven倉庫下載,找到對應的版本

https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-catalina-jmx-remote

5.連接測試結果

二、安裝jstat服務

1. 安裝好JMX后,點擊 Visual GC 會顯示不受JVM支持,需要安裝jstat服務

2. JDK的bin目錄下,配置安全策略

cd $JAVA_HOME/bin 
# 新建安全策略文件 
vim jstatd.all.policy 
# 添加如下內容: 
grant codebase "file:${java.home}/../lib/tools.jar" { 
    permission java.security.AllPermission; 
}; 
# 原文說明,我不么深入研究,有些文章會在$JAVA_HOME/jre/lib/security/java.policy直接修改,本人我是不推薦的,能不動 到原來的配置文件進來就不要碰到,而且在java.policy直接修改,賦予的權限太高,也不安全。

3.啟動jstat

cd $JAVA_HOME/bin 
# 啟動命令:(啟動成功后,沒有報錯且有日志輸出就是正常的) 
./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=149.129.124.xx -J-Djava.rmi.server.logCalls=false
# 解釋: 
# -J-Djava.rmi.server.hostname=149.129.124.xx 這里要填的是公網IP # -J-Djava.rmi.server.logCalls=true 是否開啟日志,第一次配置最好開啟,可以確定是否啟動成功,如果是已經配置很多次了,能確保成功的,建議就把該日志關掉,因為該日志的產生量不小,容易撐爆硬盤 
# 在生產環境的配置如下(去掉日志打印,加入后台運行),這里我在監控的時候,通過輸入pid發現不行,不知道怎么回事,后面再查看下問題所在: ./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=149.129.124.xx &

4.查看效果(在非后台模式啟動下查看的)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM