JavaMelody 能够监测Java或Java EE应用程序服务器,并以图表的方式显示:Java内存和Java CPU使用情况,用户Session数量,JDBC连接数,和http请求、sql请求、jsp页面与业务接口方法(EJB3、Spring、 Guice)的执行数量,平均执行时间,错误百分比等。图表可以按天,周,月,年或自定义时间段查看。
下载地址:https://github.com/javamelody/javamelody
一、安装使用
(1)将所用到的jar包添加到web应用中
<dependency> <groupId>net.bull.javamelody</groupId> <artifactId>javamelody-core</artifactId> <version>1.55.0</version> </dependency>
(2)配置web.xml
<context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:net/bull/javamelody/monitoring-spring.xml classpath:applicationContext.xml</param-value> </context-param> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:log4j.properties</param-value> </context-param> <!-- MonitoringFilter用于监控http的Servlet Filter,在第一个Filter之前加上JavaMelody的Filter配置, 确保JavaMelody的Filter第一个被执行 --> <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> <!-- 用于监听HTTP Session的,另外也监听Servlet Context,如果是servlet3.0,还需要添加<async-supported>true</async-supported>来支持异步请求 --> <listener> <listener-class>net.bull.javamelody.SessionListener</listener-class> </listener>然后启动应用服务即可,就这么简单。 (3)配置监控管理应用
下载javamelody-1.55.0.war部署到应用程序中,放到tomcat的webapp中启动即可,然后访问:
http://192.168.36.215:9080/javamelody
给被监控的应用起一个名字,添加访问url,进入监控管理。
二、其他监控配置说明
(1)集成struts
在struts.xml中加入以下代码
<package name="default" extends="struts-default" > <interceptors> <interceptor name="monitoring" class="net.bull.javamelody.StrutsInterceptor"/> <interceptor-stack name="myStack"> <interceptor-ref name="monitoring"/> <interceptor-ref name="defaultStack"/> </interceptor-stack> </interceptors> <default-interceptor-ref name="myStack"/> </package>将struts-模块名.xml中的extends改为default
<package name="qx-module" namespace="/module" extends="default">
(2)集成spring
在spring-all.xml中添加以下代码
<bean id="facadeMonitoringAdvisor" class="net.bull.javamelody.MonitoringSpringAdvisor"> <property name="pointcut"> <bean class="org.springframework.aop.support.JdkRegexpMethodPointcut"> <property name="patterns"> <list> <value>cn.slimsmart.service.*.*</value> </list> </property> </bean> </property> </bean>(3)监控数据源
<bean id="mainDataSource" class="net.bull.javamelody.SpringDataSourceFactoryBean"> <property name="targetName" value="_mainDataSource" /> </bean>如果数据源配置于spring context中,务必要将classpath:net/bull/javamelody/monitoring-spring.xml加入contextConfigLocation中。
在实体的persistence.xml文件最前面加入红色语句(必须用JavaMelody1.5及以上)
<persistence-unit name="gxpt-qx-entity" transaction-type="JTA" > <provider>net.bull.javamelody.JpaPersistence</provider> <jta-data-source>java:/MySqlDS</jta-data-source> <properties> <!-- <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/> --> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> <property name="hibernate.hbm2ddl.auto" value="update" /> <property name="hibernate.show_sql" value="true" /> </properties> </persistence-unit>(5)定时任务
如果是Quartz,JavaMelody会自动监控,不需要任何配置。 但如果是使用spring scheduling的Quartz JavaMelody提供了org.springframework.scheduling.quartz.SchedulerFactoryBean中有个exposeSchedulerInRepository,虽然注释中提到不提倡使用,但是只要spring版本够新就没什么问题。 监控集成于spring的quartz只需要将该属性设置为true(默认为false)。