前言
本文參考JavaMelody的UserGuide編寫,部分文字均來自文檔,添加有個人理解。並進行實踐操作
JavaMelody是一款可以監控Java應用(比如項目war,ear包)以及應用服務器(比如Tomcat或Jboss weblogic等等)。可以通過圖表給出監控數據。
軟件下載參考google網址:http://code.google.com/p/javamelody/downloads/list
它支持對Java的內存使用,垃圾回收,Session,JDBC,SQL,http請求,業務方法等等多種信息的監控。
JavaMelody介紹
JavaMelody用於對Java應用或者應用服務器的QA以及開發環境的監控。它並不是一個模擬請求類似JMeter的壓力測試工具,而是一個衡量並且計算在應用上的操作信息的工具,也就是說,它只負責對行爲進行監控,而不負責觸發操作。JavaMelody基於請求統計生成模擬圖表,併爲我們的應用程序在QA或者開發上提供下面的幫助:
1 給出平均的響應時間以及執行數
2 在某些操作趨勢變得嚴重前給出提示
3 優化響應
4 找出響應瓶頸的根本
5 證實優化策略的效果
JDK版本要求:需要Java JDK在1.6或者1.6以上。
支持在以下應用服務器的部署以及監控:
servlet API在2.4以上
Tomcat 5.5 6 或者7
GlassFish v2或v3
JBoss 4,5,6,7
Jonas 4或5
Jetty 6或7
WebLogic 9,10,11
如果想要監控其他的服務器需要安裝一些插件,詳情閱讀UserGuide
使用的瀏覽器最好是 Firefox Chrome或IE9
JavaMelody安裝
安裝測試JavaMelody需要一個web應用,一個javaMelody的war包,以及兩個jar包。
1 web應用:我這裏提供了一個簡單的樣例,就是一個web工程,裏面包含一個index.html
2 javamelody.war:這些文件都在google上面可以下載,但是考慮到一些沒有FQ的朋友,這裏保存在百度雲上了。
3 需要的兩個jar包,位於zip包裏面。
需要注意的是,JavaMelody監控是非常簡單的,部署也很快。通常JavaMelody與應用的整個都是軟件自動完成的,並不需要用戶做任何的操作。只需要修改一點配置文件即可。監控與應用整合一般都不會超過10秒鐘,通常都會自動的被編譯環境發現:你需要做的知識拷貝兩個jar包,添加10行xml的代碼。如果你發佈的應用程序不是一個相對目錄,而是war包,那麼就需要閱讀以下下面的章節了。如果是ear(EJBs),那麼就需要去閱讀以下User
Guide Advanced的一些相關內容了。
1 jar包
在javamelody.zip中有兩個jar包,一個是javamelody.jar,另一個是jrobin-x.jar。拷貝這兩個jar包到webapp中對應war包的WEB-INF/lib目錄下。或者使用Maven,添加javamelody-core 依賴文件pom.xml。
2 web.xml文件
如果你的servletAPI是3.0的,想tomcat7 glassfish v3 jboss6等等,那麼就需要配置xml了。不然的話,需要在應用war包的web.xml中添加如下的filter
1 <filter>
2 <filter-name>monitoring</filter-name>
3 <filter-class>net.bull.javamelody.MonitoringFilter</filter-class>
4 </filter>
5 <filter-mapping>
6 <filter-name>monitoring</filter-name>
7 <url-pattern>/*</url-pattern>
8 </filter-mapping>
9 <listener>
10 <listener-class>net.bull.javamelody.SessionListener</listener-class>
11 </listener>
如果是servlet3.0,還需要添加<async-supported>true</async-supported> 來支持異步請求
查看監控結果
現在就可以啓動應用服務器打開網址查看監控效果了。網址:http://<host>/<context>/monitoring
1 <host>是web應用服務器的部署IP,通常是localhost:8080 或者127.0.0.1:8080具體看你自己的應用服務器
2 <context>是你的web應用的名字。
注意:
如果在啓動過程中出錯,出錯信息含有window server,那麼檢查一下你是否使用了其他版本的server。並且添加系統參數-Djava.awt.headless=true
如果使用到額是tomcat,那麼在conf/catalina.properties中添加java.awt.headless=true
然後重啓服務器。
4 JavaMelody初探
由於我的這個測試使用的war包程序只有一個簡單的頁面,因此只能測試http請求的連接數了,手動刷新頁面就會發送http請求,可以再下面的列表中看到點擊的次數。以及請求的類型。
再次啓動後發現數據都還在,一定是存儲在了本地的某個地方。
查閱資料發現緩存文件都存放在tomcat下的temp中了,目錄是tomcat/temp/javamelody/應用名字_主機名字
刪除這兩個文件,再次啓動tomcat,可以發現數據清空了。
這也就證明所有的記錄的監控信息都在這個文件夾中,那麼都有什麼呢?
雖然都是RRD的文件,無法直接讀取,但是從名字就可以看到它都記錄什麼數據。比如sql 線程數,內存等等。
後面會繼續研究對多種項目的監控,以及源碼。