Java应用监控工具-JavaMelody

    JavaMelody 能够监测Java或Java EE应用程序服务器,并以图表的方式显示:Java内存和Java   CPU使用情况,用户Session数量,JDBC连接数,和http请求、sql请求、jsp页面与业务接口方法(EJB3、Spring、 Guice)的执行数量,平均执行时间,错误百分比等。图表可以按天,周,月,年或自定义时间段查看。

Java应用监控工具-JavaMelody_第1张图片


下载地址: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中。 
(4)监控实体

在实体的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)。 

你可能感兴趣的:(监控工具)