JavaMelody 能够监测Java或Java EE应用程序服务器,并以图表的方式显示:Java内存和Java CPU使用情况,用户Session数量,JDBC连接数,和http请求、sql请求、jsp页面与业务接口方法(EJB3、Spring、 Guice)的执行数量,平均执行时间,错误百分比等。图表可以按天,周,月,年或自定义时间段查看。
1、下载
1)直接下载: https://github.com/javamelody/javamelody/releases/download/1.50.0/javamelody-1.50.0.zip,打开下载即可
2)如果使用Maven,那么在pom中加入下面的引用即可
<dependency>
<groupId>net.bull.javamelody</groupId>
<artifactId>javamelody-core</artifactId>
<version>1.59.0</version>
</dependency>
<dependency>
<groupId>org.jrobin</groupId>
<artifactId>jrobin</artifactId>
<version>1.5.9</version>
</dependency>
注意:
要使用JDK1.7,使用JDK1.6有bug会OOM
Bean的配置其实就是net/bull/javamelody/monitoring-spring.xml里面的配置,可以到javamelody.jar看源码配置文
<bean id="monitoringAdvisor" class="net.bull.javamelody.MonitoringSpringAdvisor">
<property name="pointcut">
<bean class="net.bull.javamelody.MonitoredWithAnnotationPointcut"/>
</property>
</bean>
<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator">
<property name="proxyTargetClass" value="true"/>
</bean>
<bean id="springDataSourceBeanPostProcessor" class="net.bull.javamelody.SpringDataSourceBeanPostProcessor">
</bean>
2、配置XML。
<bean id="monitoringAdvisor" class="net.bull.javamelody.MonitoringSpringAdvisor">
<property name="pointcut">
<bean class="net.bull.javamelody.MonitoredWithAnnotationPointcut"/>
</property>
</bean>
<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator">
<property name="proxyTargetClass" value="true"/>
</bean>
<bean id="springDataSourceBeanPostProcessor" class="net.bull.javamelody.SpringDataSourceBeanPostProcessor">
</bean>
1) 修改contextConfigLocation,改为:
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>
- classpath:net/bull/javamelody/monitoring-spring.xml
- classpath:config/spring-*.xml</param-value>
- </context-param>
即,添加了monitoring-spring.xml文件。
2) 在第一个Filter之前加上JavaMelody的Filter配置,确保JavaMelody的Filter第一个被执行
- <!-- javamelody===begin -->
- <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>
- <!-- javamelody===end -->
1)在struts-common.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>
- <package name="qx-module" namespace="/module" extends="default">
4、和Spring集成
1)在spring-common.xml中添加以下代码:
- <bean id="facadeMonitoringAdvisor" class="net.bull.javamelody.MonitoringSpringAdvisor">
- <property name="pointcut">
- <bean class="org.springframework.aop.support.JdkRegexpMethodPointcut">
- <property name="pattern" value="mgr.*.*.service" />
- </bean>
- </property>
- </bean>
5、监控实体
在实体的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>
6、查看javaMelody
访问的目录后加/javamelody ,如http://localhost:8080/应用名/monitoring