JavaMelody是運行在Java Web容器中,用來監控Java內存和J服務器CPU使用情況,用戶Session數量,JDBC連接數,和http請求、sql請求等的執行數量,平均執行時間,錯誤百分比等。
圖表可以按天,周,月,年或自定義時間段查看。
使用方法
下載地址
https://github.com/javamelody/javamelody/releases
Maven依賴
<dependency> <groupId>net.bull.javamelody</groupId> <artifactId>javamelody-core</artifactId> <version>1.60.0</version> </dependency>
使用方法
直接把下載的jar包放在項目中WEB-INF/lib目錄下即可,無需任何配置,啟動容器后監控程序就已經運行。
至於為何不需要任何配置,javamelody相關程序就自動運行了,最下面有說明。
用戶界面
在瀏覽器地址欄,輸入如下樣式的url,就可以訪問監控圖形界面。
http://<host>/<context>/monitoring



javamelody啟動原理
按照正常使用步驟,除了導入javamelody的jar包,還需要在web.xml配置文件里,配置過濾器filter和filter-mapping,還有一個listener監聽器。
為什么現在只需導入jar包,不需要任何配置,啟動容器監控程序也跟着啟動?這個要從Servlet3.0的規范說起。
Servlet3.0
Servlet3.0對於模塊化支持
也就是說現在我們可以把各Web組件單獨拿出來進行開發,之后把它們打成對應的jar包放到主項目中就可以了,而不必像之前那樣——所有的內容都必須在web.xml文件中進行定義。有了對模塊化的支持后我們在實際應用中就可以把某些通用功能的Filter、Listener、Servlet作為一個單獨的Web模塊進行定義,在需要使用它們的項目中就把對應Web模塊對應的jar包加進去就可以了。是不是很有用呢?接下來我們就來看一下這些Web組件究竟是怎樣模塊化的。
Web模塊打成的jar包的內容的文件結構要求是這個樣子的:
|--META-INF
| |--web-fragment.xml
| |--resources
| | |--jsp、圖片等,相當於web的根目錄
|--class文件和類路徑下的文件
容器啟動時,會去讀取每個jar包的META-INF下的信息
查看javamelody-core的jar包會發現,在META-INF文件夾下有個web-fragment.xml,說明這個jar包本身就是一個Web模塊

打開這個文件,會發現,其實運行監控的過濾器和監聽器,已經在這個文件里定義了。這也是為什么不需要再做配置的原因

Servlet 3.0需要Tomcat 7.0以上版本才支持(包含7.0)
