1,需求場景
我的linux服務器上跑了好幾個java應用,現在想監控這些應用的詳細情況,方便優化jvm性能。zabbix這些監控軟件就不說了,主要是用jdk自帶了一款監控軟件,叫做visualVM,但是visualVM是一款圖形界面工具,而我的centos上沒有安裝圖形界面,所以不能運行該工具。可能你會說使用visualVM的遠程監控,對,可以使用遠程監控,但是很不方便,使用jstatd功能太弱,使用jmx需要重啟我的應用,所以我不想這么干。
現在有沒有這樣一種方法,在沒有圖形界面的linux上運行jvisualvm,然后把jvisualvm圖像發送到我的本地電腦上顯示
2.解決步驟
在沒有圖形界面的centos上運行visualVM,就會收到如下報錯:
# /usr/java/jdk1.8.0_112/bin/jvisualvm
/usr/java/jdk1.8.0_112/lib/visualvm/platform/lib/nbexec: WARNING: environment variable DISPLAY is not set
工具:
1.XQuartz
Mac下載安裝XQuartz
https://www.xquartz.org/
2.登錄到centos,修改/etc/ssh/sshd_config,打開如下幾項
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
然后重啟sshd服務
3,linux上安裝一下一些組件:
yum install xorg-x11-xauth xterm libXi libXp libXtst -y
到這里基本就完了,然后在mac本地打開終端,連接到centos上
ssh -XY username@hostname
然后在此運行# /usr/java/jdk1.8.0_112/bin/jvisualvm,該軟件的圖像即會發送到我的mac上來顯示了,就像mac本地使用該工具一樣
一些報錯解決方法:
1.
X11 connection rejected because of wrong authentication
出現上面的報錯查看用戶家目錄下有沒有.Xauthority這個文件,正常情況下使用的,如果沒有,可能是登錄到linux系統后切換了用戶了,在原來用戶的家目錄找找
2.
打開圖形界面工具既不報錯也不顯示打開應用
該問題原因也不是很清楚,不過可以嘗試打開XQuartz,在XQuartz右鍵--應用程序--終端,執行
xhost + 遠程主機ip
執行完顯示being added to access control list,表示成功添加訪問權限
或者在遠程主機上設置DISPLAY環境
export DISPLAY=localhost:0(localhost:0不一定適用於任何主機)
正常情況登錄到主機上會自動設置好這個變量。
參考這篇文章:http://blog.creke.net/810.html
如果不能通過這種方法實現X11轉發,可以通過一下方案來實現
centos通過vnc查看X11圖形窗口:http://blog.creke.net/811.html