一直没怎么关注javaMelody这个东西。
自己写东西的时候想弄点监控,于是把javaMelody装进去了。
看了文档几乎全是法语,在此记录一些常用的配置。

首先依赖添加如下:

<dependency>
<groupId>net.bull.javamelody</groupId>
<artifactId>javamelody-core</artifactId>
<version>1.50.0</version>
</dependency>

说说最基本的配置:
net.bull.javamelody.MonitoringFilternet.bull.javamelody.SessionListener
这两个个必须有,
MonitoringFilter用于监控的Servlet Filter,需要声明在webapp的web.xml中。
而SessionListener是用于监听HTTP Session的,另外也监听Servlet Context,需要声明在webapp的web.xml中。

/**
* Filtre de servlet pour le monitoring.
* C'est la classe de ce filtre qui doit être déclarée dans le fichier web.xml de la webapp.
* @author Emeric Vernat
*/
public class MonitoringFilter implements Filter{
//...
}

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>

如果mvc框架使用的是struts,javaMelody提供了net.bull.javamelody.StrutsInterceptor

/**
* Interceptor Struts 2 pour avoir les temps moyens des actions Struts.
* {@link StrutsInterceptor "http://struts.apache.org/2.1.6/docs/interceptors.html"}
* @author Emeric Vernat
*/
public final class StrutsInterceptor extends AbstractInterceptor{
//..
}

集成了AbstractInterceptor,直接放到struts2的interceptor tag里面reg上就可以了:

<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>

关于数据源的监控,虽然说作者提供了一个net.bull.javamelody.JdbcDriver,但通常会使用dbcp,c3p0什么的,然后再把它注入到TransactionMananger什么的来做点事务管理。

那就用net.bull.javamelody.SpringDataSourceFactoryBean,把数据源给监控代理做监控了。
比如这样,只是把声明好的数据源注入进去:

<bean id="mainDataSource" class="net.bull.javamelody.SpringDataSourceFactoryBean">
<property name="targetName" value="_mainDataSource" />
</bean>

这样配置后我试着执行了一次SQL,它也的确监控到了。
但是我声明的net.bull.javamelody.MonitoringSpringAdvisor却什么也没记录。

说的就是这个东东:

关于aop,可以使用net.bull.javamelody.MonitoringSpringAdvisor
官网给了三种配置方法,我在这里也举个多pointcut栗子:

<bean id="facadeMonitoringAdvisor" class="net.bull.javamelody.MonitoringSpringAdvisor">
<property name="pointcut">
<bean class="org.springframework.aop.support.JdkRegexpMethodPointcut">
<property name="patterns">
<list>
<value>com.xyz.someapp.service.MonitoringPointcut0.*</value>
<value>com.xyz.someapp.service.MonitoringPointcut1.*</value>
<value>com.xyz.someapp.service.MonitoringPointcut2.*</value>
</list>
</property>
</bean>
</property>
</bean>

光配置这个是不会生效的。
之前配置数据源的时候官网给出的文档中说道:如果数据源配置于spring context中,请务必将classpath:net/bull/javamelody/monitoring-spring.xml加入contextConfigLocation中。
但我并没有加上,问题是确实监控到了SQL的执行于是没太关心。
但这次没监控到spring就要把这个加上了。

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:net/bull/javamelody/monitoring-spring.xml
classpath*:/applicationContext*.xml
</param-value>
</context-param>

那这个monitoring-spring.xml是什么?
先来看看他的内容:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<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"/>
<bean id="springDataSourceBeanPostProcessor" class="net.bull.javamelody.SpringDataSourceBeanPostProcessor">
<!--
<property name="excludedDatasources">
<set>
<value>excludedDataSourceName</value>
</set>
</property>
-->
</bean>
<!--
<bean id="wrappedDataSource" class="net.bull.javamelody.SpringDataSourceFactoryBean">
<property name="targetName" value="targetDataSource" />
</bean>
-->
</beans>

MonitoringSpringAdvisor继承了默认的DefaultPointcutAdviso,并在自己的constructor中设置了一个Advice——MonitoringSpringInterceptor以简化配置。
MonitoredWithAnnotationPointcut则是Pointcut的实现,它让所有MonitoredWithSpring使用MonitoredWithSpring注解和所有类都通过。

另外定时任务框架我使用的是Quartz,
如果仅仅是Quartz而已,JavaMelody会自动监控,不需要任何配置。
但如果是使用spring scheduling的Quartz
JavaMelody提供了...其实它也没提供什么。
关键是org.springframework.scheduling.quartz.SchedulerFactoryBean中有个exposeSchedulerInRepository,虽然注释中提到不提倡使用,但是只要spring版本够新就没什么问题。

监控集成于spring的quartz只需要将该属性设置为true(默认为false)。

然后进monitoring,显示如下:

JavaMelody - 常用配置的更多相关文章

  1. logback 常用配置详解<appender>

    logback 常用配置详解 <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的 ...

  2. 【转】logback logback.xml常用配置详解(三) <filter>

    原创文章,转载请指明出处:http://aub.iteye.com/blog/1110008, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...

  3. 【转】logback logback.xml常用配置详解(二)<appender>

    原创文章,转载请指明出处:http://aub.iteye.com/blog/1101260, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...

  4. 【转】logback logback.xml常用配置详解(一)<configuration> and <logger>

    原创文章,转载请指明出处:http://aub.iteye.com/blog/1101260, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...

  5. 【转】logback 常用配置详解(序)logback 简介

    原创文章,转载请指明出处:http://aub.iteye.com/blog/1101222, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...

  6. logback 常用配置详解(二) <appender>

    logback 常用配置详解(二) <appender> <appender>: <appender>是<configuration>的子节点,是负责写 ...

  7. SpringBoot常用配置简介

    SpringBoot常用配置简介 1. SpringBoot中几个常用的配置的简单介绍 一个简单的Spring.factories # Bootstrap components org.springf ...

  8. .net学习笔记----WebConfig常用配置节点介绍

    一.配置文件入门 .Net提供了一种保存项目配置信息的办法,就是利用配置文件,配置文件的后缀一般是.config.在WinForm程序中配置文件一般是App.config.在Asp.net中一般默认是 ...

  9. logback logback.xml常用配置详解(三)

    logback logback.xml常用配置详解 <filter> <filter>: 过滤器,执行一个过滤器会有返回个枚举值,即DENY,NEUTRAL,ACCEPT其中之 ...

随机推荐

  1. C#使用MongoDb来存储文件

    近期在写一个小玩意,需要保存一些图片,以前我采用的是FTP或者直接数据库保存文件,用FTP来保存文件感觉比较麻烦,用数据库吧,还要改字段类型,修改代码,修改查询语句,懒得改. 以前看过mongonDb ...

  2. C# 生产成条形码3种方法

    首先效果: 1:首先下载BarcodeLib.dll 下载地址 http://pan.baidu.com/share/link?shareid=2590968386&uk=2148890391 ...

  3. .net core cache使用

    整理下.net core cache的使用 Nuget安装   Microsoft.Extensions.Caching.Memory using Microsoft.Extensions.Cachi ...

  4. 分布式ehcache缓存

    今天在这里了记录一下学习ehcache分布式集群的过程. ehcache的三种最为常用集群方式,分别是 RMI.JGroups 以及 EhCache Server . 这里主要讲一下rmi方式. 1. ...

  5. 【css】——根据div个数显示不同的样式

    这里记录面试融众集团的一道题 Q:说可能有1~3个item显示在同一行,而item的个数不一定,如果1个,那这个item占宽100%,2个时每一个50%,3个时每一个33%,用纯CSS实现. A:先贴 ...

  6. 简单HOG+SVM mnist手写数字分类

    使用工具 :VS2013 + OpenCV 3.1 数据集:minst 训练数据:60000张 测试数据:10000张 输出模型:HOG_SVM_DATA.xml 数据准备 train-images- ...

  7. python3模块: json & pickle

    概念: 序列化(Serialization): 将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON,XML等.反序列化就是从存储区域(JSON,XML)读取反序列化对象的 ...

  8. 逆向工程生成的Mapper.xml以及*Example.java详解

    逆向工程生成的接口中的方法详解 在我上一篇的博客中讲解了如何使用Mybayis逆向工程针对单表自动生成mapper.java.mapper.xml.实体类,今天我们先针对mapper.java接口中的 ...

  9. 【xsy1611】 数位dp 数位dp

    这题是显然的数位$dp$,然而我居然写了一个下午!!! 我们不难想到差分,令$solve(x,y)$表示从第一个数字在区间$[0,x]$,第二个数字在区间$[0,y]$的答案. 不难发现题目中给了你一 ...

  10. Impala配置HA-Nginx

    Impala的高可用配置,官方的例子用的是Haproxy,考虑到nginx配置简单,使用人群广泛,再加上nginx1.9以后支持TCP的负载均衡,所以选用nginx. nginx安装:yum inst ...