溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何用Tomcat MBean實現(xiàn)監(jiān)控應(yīng)用

發(fā)布時間:2022-01-04 15:40:39 來源:億速云 閱讀:190 作者:柒染 欄目:大數(shù)據(jù)

今天就跟大家聊聊有關(guān)如何用Tomcat MBean實現(xiàn)監(jiān)控應(yīng)用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

做為一款發(fā)行多年的成熟開源應(yīng)用服務(wù)器,Tomcat 有眾多的優(yōu)點,其中方便的監(jiān)控就是其中之一。

在 Tomcat 中,要實現(xiàn)監(jiān)控,無論是監(jiān)控應(yīng)用,還是監(jiān)控容器內(nèi)部,都可以通過 JMX 的方式實現(xiàn)。

打開JConsole的窗口可以看到,在列出的本地JVM進(jìn)程中,包含已經(jīng)啟動的 Tomcat 進(jìn)程,其中名稱一欄是當(dāng)前應(yīng)用的 Main-Class 的名稱, PID 和 jps 命令顯示一致。對于不清楚哪個是要 attach 的應(yīng)用時,可以通過 jps 命令顯示詳情,通過載入的配置,JVM 參數(shù)等來明確。(jps 命令請參考這篇 你可能不知道的幾個java小工具 )

如何用Tomcat MBean實現(xiàn)監(jiān)控應(yīng)用

attach之后,就會看到 Tomcat 以及 JVM 對外暴露的一系列對象,在 JMX 里稱之為 MBean。 這里 JConsole 僅僅是一個 Client, 我們所連接到的這個進(jìn)程所提供的,是一個 Server, JMX 里稱為 MBeanServer。這些 MBean 就是 這個Server 上對外提供屬性和方法的對象。

下面這張圖,是 attach 到 Tomcat 進(jìn)程后看到的 一些MBean, Catalina 這個很明顯是 Tomcat 提供的, 一些java開頭的,是 JVM 提供的。

這里的 Engine 就是一個MBean, 紅框中的屬性和操作,是MBean對象提供的可供讀取和執(zhí)行的內(nèi)容, 而右側(cè)這里的ObjectName,是我們在一個MBeanServer上 來定位一個MBean 的名稱。

如何用Tomcat MBean實現(xiàn)監(jiān)控應(yīng)用

JMX

說到MBean,就不得不提 JMX。什么是JMX?

JMX 是 Java Management Extensions 的縮寫,Wikipedia上這樣介紹:

JMX is a Java technology that supplies tools for managing and monitoring applications, system objects, devices (such as printers) and service-oriented networks. Those resources are represented by objects called MBeans (for Managed Bean).

最主要的功能,是用來對應(yīng)用進(jìn)行管理監(jiān)控。我們上面提到的幾個概念,就是 JMX 中最核心的幾個概念。

wikipedia上這張圖借來一用。我們看到 Console 通過不同的協(xié)議連接到MBeanServer上。

如何用Tomcat MBean實現(xiàn)監(jiān)控應(yīng)用

JMX 在 Tomcat 中的使用

Tomcat 使用 JMX 實現(xiàn)其自身的監(jiān)控和管理。其中 我們在Catalina 包下看到的這些 MBean,在不同的包中有不同的MBean 描述文件描述。

如何用Tomcat MBean實現(xiàn)監(jiān)控應(yīng)用

如果對于自己部署的應(yīng)用有監(jiān)控和管理的需要等,我們自己也可以開發(fā)MBean,然后直接獲取平臺的MBeanServer,這樣就可以和Tomcat的進(jìn)程在一起。

Tomcat 內(nèi)部對于一些應(yīng)用部署,屬性提供等都可以通過 JMX 的形式來完成,我們之前寫過一些這部分的內(nèi)容:

你了解JMX在Tomcat的應(yīng)用嗎?

你一定不知道IDE里的Tomcat是怎么工作的!

里面有介紹IDE內(nèi)應(yīng)用部署是如何通過JMX實現(xiàn)的等。

此處,當(dāng)前 Tomcat 內(nèi)部署了哪些Web應(yīng)用,同時創(chuàng)建了哪些 線程池, Connector 等,都可以通過 JMX 的 MBean 進(jìn)行獲取和管理。

如何用Tomcat MBean實現(xiàn)監(jiān)控應(yīng)用

要獲取這些信息,所需要做的,僅僅是寫一個 JMX 的 Client,然后通過 ObjectName 讀取其即可,所有的屬性讀取,操作執(zhí)行,完全可以理解成普通的JavaBean 在進(jìn)行反射調(diào)用一樣。

對于一個Web應(yīng)用,在web.xml里配置的那些信息,在MBean里一樣有體現(xiàn)

如何用Tomcat MBean實現(xiàn)監(jiān)控應(yīng)用

還有關(guān)于請求數(shù)的統(tǒng)計

如何用Tomcat MBean實現(xiàn)監(jiān)控應(yīng)用

一個Web應(yīng)用內(nèi)的 Servlet 、Jsp 都分別羅列出來,做為不同的MBean,他們的ObjectName格式類似這樣:

Catalina:j2eeType=Servlet,WebModule=//localhost/examples,name=HelloWorldExample,J2EEApplication=none,J2EEServer=none

只需要修改黑體字部分即可。

而通過 JMX 實現(xiàn)的管理,是通過對MBean提供的一些操作的執(zhí)行,來實現(xiàn)應(yīng)用內(nèi)一些內(nèi)容的動態(tài)變更。比如像Connector的啟動暫停。

可以在Jconsole里直接進(jìn)行方法的調(diào)用。

如何用Tomcat MBean實現(xiàn)監(jiān)控應(yīng)用

看完上述內(nèi)容,你們對如何用Tomcat MBean實現(xiàn)監(jiān)控應(yīng)用有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI