您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(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小工具 )
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 的名稱。
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上。
JMX 在 Tomcat 中的使用
Tomcat 使用 JMX 實現(xiàn)其自身的監(jiān)控和管理。其中 我們在Catalina 包下看到的這些 MBean,在不同的包中有不同的MBean 描述文件描述。
如果對于自己部署的應(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)行獲取和管理。
要獲取這些信息,所需要做的,僅僅是寫一個 JMX 的 Client,然后通過 ObjectName 讀取其即可,所有的屬性讀取,操作執(zhí)行,完全可以理解成普通的JavaBean 在進(jìn)行反射調(diào)用一樣。
對于一個Web應(yīng)用,在web.xml里配置的那些信息,在MBean里一樣有體現(xiàn)
還有關(guān)于請求數(shù)的統(tǒ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)用。
看完上述內(nèi)容,你們對如何用Tomcat MBean實現(xiàn)監(jiān)控應(yīng)用有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(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)容。