# (七):性能監測工具JavaMelody
### 簡介
JavaMelody 能夠監測Java或Java EE應用程序服務器,并以圖表的方式顯示:
Java內存和Java CPU使用情況,用戶Session數量,JDBC連接數,
和http請求、sql請求、jsp頁面與業務接口方法(EJB3、Spring、 Guice)的執行數量,平均執行時間,錯誤百分比等。
圖表可以按天,周,月,年或自定義時間段查看。
### 使用步驟
1.下載JavaMelody。
下載地址:[http://code.google.com/p/javamelody/downloads/list](http://code.google.com/p/javamelody/downloads/list)
javamelody-1.16.0.jar,jrobin-1.5.9.1.jar
(版本號可能會不同)
2.將Jar包拷貝到項目的WEB-INF的lib目錄。
3.在web.xml下增加配置。
~~~
<filter>
<filter-name>monitoring</filter-name>
<filter-class>net.bull.javamelody.MonitoringFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>monitoring</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>net.bull.javamelody.SessionListener</listener-class>
</listener>
~~~
4.重新啟動項目,訪問[http://localhost:8080/monitoring/](http://localhost:8080/monitoring/)?即可看到監控圖表。
[](http://fansunion.cn/wp-content/uploads/2013/11/Jamelody%E5%9B%BE%E8%A1%A8.gif)
### 安全問題
按照上述的配置,不需要登錄就可以訪問JavaMelody的頁面。
實際項目中,常見需求是“登錄用戶,才可以查看”。
定制方法如下:
web.xml的Filter配置
packageName.ProjectMonitoringFilter
自定義的Filter
~~~
public?class?ProjectMonitoringFilter?extends?net.bull.javamelody.MonitoringFilter{??
??
?@Override??
?public?void?doFilter(ServletRequest?req,?ServletResponse?response,??
???FilterChain?chain)?throws?IOException,?ServletException?{??
??HttpServletRequest?request?=?(HttpServletRequest)?req;??
??HttpSession?session?=?request.getSession();??
??User?user?=?(User)?session.getAttribute(Constant.LOGIN_USER);??
??String?uri?=?((HttpServletRequest)?request).getRequestURI();??
??if(user?==?null?&&?uri.indexOf("/monitoring")?!=?-1){??
???return;??
??}??
??super.doFilter(request,?response,?chain);??
?}??
???
}??
~~~
### 實踐出真知
本來想自己總結的,發現別人總結的比我好,所以就借鑒了許多別人寫的。
我覺得“借鑒”和“復制”別人的并不可恥,因為絕大部分技術都是別人開發的,我們只是用。
那些技術的優點、正確的使用方法,基本是固定的了,我們只有學習的份。
這類工具的使用方法,網上一大堆。
不過,自己總結下,加深下理解,今后也有自己的參考。
看自己總結的,更親切,更可讀,出錯的可能性更小。