jconsole through firewall Remote Monitoring Tomcat

一直以來對於Tomcat的效能調整與監控, 都是程式開發人員希望能掌控的資訊,
但是…除了對於大型商業的 Java Web Application Server外, 能用的免費工具並不多,
事實上, JDK裡面附有一個監控程式jconsole,可能是一個不錯的輕量級的系統,
用來對付輕量級的Tomcat效能監控,調整開發程式的效能, 應該是一個好的工具!!

對於Local Tomcat Server的監控, 當然直接使用即可,
但是對於 remote server , 就必須在啟動時加入 一些參數, 如下的
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=1234
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
以上請參考:http://tomcat.apache.org/tomcat-6.0-doc/monitoring.html

不過令人遺憾的是, JMX將會另外隨機產生一個 port用以傳輸資料用,
因為隨機的port, 這對於伺服器在防火牆內的架構, 將會造成無法連結的問題!!…

在過去, 可能得要依靠其他的方式, 其他的 JMX 來解決,
幸好, Tomcat 6.0.24 有了新的解決方案, 新增一個 org.apache.catalina.mbeans.JmxRemoteLifecycleListener
設定方式如下:
1. 請先下載 必要的 jar檔案, catalina-jmx-remote.jar
    位置如下: http://apache.deathculture.net/tomcat/tomcat-6/v6.0.24/bin/extras/
2. 在你的Tomcat 設定 server.xml 加入 以下設定:
     <Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"

          rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002" />

3. 啟動Tomcat的catalina.bat,  或是 catalina.sh
    加入以下設定:
set JAVA_OPTS=%JAVA_OPTS%
-Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password
-Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

4. 當然, 如果有需要的話別忘了 加入權限認證的檔案,
    $CATALINA_HOME/conf/jmxremote.password
    $CATALINA_HOME/conf/jmxremote.access

5. 現在你可以利用 jconsole的 remote process

jconsole service:jmx:rmi://<hostname>:10002/jndi/rmi://<hostname>:10001/jmxrmi

就可以實現遠端監控並且透過防火牆了!!…

更詳細的設定方式可以參考 :
http://tomcat.apache.org/tomcat-6.0-doc/config/listeners.html

廣告

About fenjj

Perfect !!??...
本篇發表於 Uncategorized。將永久鏈結加入書籤。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s