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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...