Tomcat開啓JMX監控

搭建模擬環境:
操做系統:centos7
內存:1G
jdk:1.8.0_131
tomcat:8.0.48
環境準備咱們這裏就不直接演示了,直接配置tomcat的jmx
    一、進入到tomcat的bin目錄下

      # cd /opt/tomcat/apache-tomcat-8.0.48/bin/java

    二、編輯配置文件

      # vim catalina.shlinux

    三、在下圖中上面添加參數

      

     參數添加後的樣子apache

      3.一、此配置鏈接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"

      配置後的截圖:bootstrap

       

    參數說明:vim

      hostname:是監控tomcat所在服務器的ip地址windows

      jmxremote.port:端口號,是要開啓的監控端口號centos

      jmxremote.ssl:是否要開啓ssl鏈接tomcat

      authenticate: false表示監控不須要用戶和密碼服務器

      3.二、須要配置用戶名、密碼:  
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.一、找到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.*

 

    四、啓動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.一、作完上面操做,使用jdk自帶的jvisualvm.exe鏈接,能夠在windows下測試

        

          

          

           

           

         雙擊打開jmx鏈接

           

           

       4.二、重啓tomcat,測試jmx是否還能夠鏈接上

         # ./shutdown.sh

        4.2.一、再次鏈接jmx查看是否能夠鏈接上

          數據監控圖都查看不了,鏈接不上

          

           

 

 爲什會出現這個問題?

    網上給出的結論是:

      tomcat的jmx遠程健康是須要兩個端口,一個是註冊端口,一個是服務端口,以前配置指定的9999端口是註冊端口,tomcat在啓動的時候會隨機指定一個服務端口,因爲咱們註冊端口只有一個,因此在重啓服務後,註冊端口沒有變化,服務端口已經變了,再次經過註冊端口鏈接已經鏈接不上以前的服務端口了,沒有辦法指定服務端鏈接,服務端口是隨機的。

      有一種方法是設置jmx固定的註冊端口和服務端口,經過jar包實現

      

        

   五、登陸tomcat官網(注意,個人tomcat版本是1.8.0的官網上只有1.8.5的也可使用)

      網址:https://tomcat.apache.org/

      根據本身的tomcat版本找到JMX Remote jar

      

 

   六、把下載下來的上傳到tomcta的lib目錄下

     獲取jar包的鏈接也能夠直接wget到lib目錄下

       # wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.50/bin/extras/catalina-jmx-remote.jar

       

 

 

    七、編輯tomcat的conf目錄下的server.xml文件   

      # vim server.xml

     添加下面內容:  

  <Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"
          rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002" />

     

 

    八、編輯tomcat的bin目錄下catalina.sh

     # vim catalina.sh

     刪除參數:

       -Dcom.sun.management.jmxremote.port=9999

      

 

    九、重啓tomcat測試,jmx註冊端口爲10001,服務端口爲10002

      

        

      

      

      

 

    十、重啓tomcat再次鏈接測試

       當咱們雙擊以前建立的jmx遠程鏈接的時候會發現也鏈接不上,這是爲何呢,這裏咱們要注意上面鏈接中的pid號,通過查詢,咱們發現這個pid號就是linux中tomcat的pid號,當咱們重啓tomcat後,會產生新的pid號,因此咱們想要鏈接就要新建一個鏈接

       

        

    十一、咱們再次新建jmx鏈接的時候會獲取新的pid號

       

        

    十二、到這裏咱們就測試成功了,這樣在咱們使用zabbix使用jmx監控tomcat的時候就不用擔憂tomcat重啓jmx端口鏈接不上了
相關文章
相關標籤/搜索