Tomcat開啟JMX監控

来源:https://www.cnblogs.com/yangzhaon/archive/2019/12/26/12102794.html
-Advertisement-
Play Games

搭建模擬環境: 操作系統:centos7記憶體:1Gjdk:1.8.0_131tomcat:8.0.48 環境準備我們這裡就不直接演示了,直接配置tomcat的jmx 1、進入到tomcat的bin目錄下 # cd /opt/tomcat/apache-tomcat-8.0.48/bin/ 2、編輯配 ...


搭建模擬環境:
操作系統:centos7
記憶體:1G
jdk:1.8.0_131
tomcat:8.0.48
環境準備我們這裡就不直接演示了,直接配置tomcat的jmx
    1、進入到tomcat的bin目錄下

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

    2、編輯配置文件

      # vim catalina.sh

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

      

     參數添加後的樣子

      3.1、此配置連接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"

      配置後的截圖:

       

    參數說明:

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

      jmxremote.port:埠號,是要開啟的監控埠號

      jmxremote.ssl:是否要開啟ssl連接

      authenticate: false表示監控不需要用戶和密碼

      3.2、需要配置用戶名、密碼:  
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.3.1、找到jdk安裝目錄

          如果不知道安裝到目錄那個地方可以通過命令查找:

            # java -verbose

            

        3.3.2、切換到jdk目錄中

            

            進入# cd jre/lib/management/

            在文件目錄下會有jmxremote.access  jmxremote.password.template文件,拷貝到tomcat的conf目錄下

              # cp jmxremote.* /opt/tomcat/apache-tomcat-8.0.48/conf/

         3.3.3、修改jmxremote.access文件

            

          3.3.4、重命名密碼文件:

            # mv jmxremote.password.template jmxremote.password

        3.3.5、編輯密碼文件

            # vim jmxremote.password

            

 

        3.3.6、編輯完文件後,要修改access文件和password文件許可權,不然tomcat啟動不起來

            # chmod 600 jmxremote.*

 

    4、啟動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.1、做完上面操作,使用jdk自帶的jvisualvm.exe連接,可以在windows下測試

        

          

          

           

           

         雙擊打開jmx連接

           

           

       4.2、重啟tomcat,測試jmx是否還可以連接上

         # ./shutdown.sh

        4.2.1、再次連接jmx查看是否可以連接上

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

          

           

 

 為什會出現這個問題?

    網上給出的結論是:

      tomcat的jmx遠程健康是需要兩個埠,一個是註冊埠,一個是服務埠,之前配置指定的9999埠是註冊埠,tomcat在啟動的時候會隨機指定一個服務埠,由於我們註冊埠只有一個,所以在重啟服務後,註冊埠沒有變化,服務埠已經變了,再次通過註冊埠連接已經連接不上之前的服務埠了,沒有辦法指定服務端連接,服務埠是隨機的。

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

      

        

   5、登錄tomcat官網(註意,我的tomcat版本是1.8.0的官網上只有1.8.5的也可以使用)

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

      根據自己的tomcat版本找到JMX Remote jar

      

 

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

     獲取jar包的連接也可以直接wget到lib目錄下

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

       

 

 

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

      # vim server.xml

     添加下麵內容:  

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

     

 

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

     # vim catalina.sh

     刪除參數:

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

      

 

    9、重啟tomcat測試,jmx註冊埠為10001,服務埠為10002

      

        

      

      

      

 

    10、重啟tomcat再次連接測試

       當我們雙擊之前創建的jmx遠程連接的時候會發現也連接不上,這是為什麼呢,這裡我們要註意上面連接中的pid號,經過查詢,我們發現這個pid號就是linux中tomcat的pid號,當我們重啟tomcat後,會產生新的pid號,所以我們想要連接就要新建一個連接

       

        

    11、我們再次新建jmx連接的時候會獲取新的pid號

       

        

    12、到這裡我們就測試成功了,這樣在我們使用zabbix使用jmx監控tomcat的時候就不用擔心tomcat重啟jmx埠連接不上了

     

    

      

 

 

     

  

 

 

  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 代碼實現 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>L ...
  • 剛開始遇到這個問題時有點懵,UDP為什麼還有分啟動順序?看一下我遇到的錯誤: 先啟動serevr,再啟動client,雙方不管誰先發消息,正常; 先啟動server,再啟動client,之後關閉client,不關閉server,重新再啟動client,client先發消息異常, 先啟動client, ...
  • 場景 在使用ZedGraph生成多條曲線時為了能區分曲線顏色,要求隨機設置曲線顏色。 首先從System.Drawing.Color中獲取所有顏色的對象的數組,然後將其順序打亂隨機排序,然後在生成曲線時從Color數組中取Color並賦值。 效果 註: 博客主頁: https://blog.csdn ...
  • 場景 在ZedGraph隨機生成顏色時需要從顏色數組中取顏色對象。 Color數組存取的是System.Drawing.Color的顏色。 其順序是相鄰的顏色,顏色差距不大,在取顏色時按順序取顏色時,如果顏色條數比較少,差距會不明顯。 需要將此數組的順序打亂,隨機進行排序。 註: 博客主頁: htt ...
  • 場景 需要在生成一組多條曲線時,隨機從一顏色數組中取顏色,至少一百種顏色以上。 而System.Drawing.Color自帶140多種顏色 那麼怎樣將其自帶的顏色對象取出並存在數組中。 註: 博客主頁: https://blog.csdn.net/badao_liumang_qizhi 關註公眾號 ...
  • 在Windows10系統上搭建完深度學習環境用於無人駕駛中的目標檢測後,想在Linux系統上再嘗試一下。由於VMware虛擬機安裝的Linux系統不支持物理硬體,所以需要一步到位安裝一個雙系統。本文介紹如何安裝雙系統以及裝完系統後的輸入法和英偉達顯卡驅動配置。 1.安裝雙系統 詳細操作參考https ...
  • apue 上講 Solaris 系統是可以在進程間通過 STREAMS 管道傳遞文件句柄的。 書上講道:“在技術上,發送進程實際上向接收進程傳送一個指向一打開文件表項的指針,該指針被分配存放在接收進程的第一個可用描述符項中。” 個人非常感興趣,就寫下了下麵的兩個程式來驗證 STREAMS 管道是否支 ...
  • 以下內容為使用樹莓派搭建伺服器的過程,因為個人還沒有搭建完成,所以僅更新出已完成的部分,至於未完成的部分,以後會持續更新。 具體環節分為這幾個階段: 1.給樹莓派安裝系統 2.使用電腦連接控並制樹莓派 3.配置網站伺服器環境 4.添加網站源碼 5.配置網站環境設置 【0x01:給樹莓派安裝系統】 我 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...