JavaMelody - 常用配置
一直没怎么关注javaMelody这个东西。
自己写东西的时候想弄点监控,于是把javaMelody装进去了。
看了文档几乎全是法语,在此记录一些常用的配置。
首先依赖添加如下:
<dependency>
<groupId>net.bull.javamelody</groupId>
<artifactId>javamelody-core</artifactId>
<version>1.50.0</version>
</dependency>
说说最基本的配置:
net.bull.javamelody.MonitoringFilter和net.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 - 常用配置的更多相关文章
- logback 常用配置详解<appender>
logback 常用配置详解 <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的 ...
- 【转】logback logback.xml常用配置详解(三) <filter>
原创文章,转载请指明出处:http://aub.iteye.com/blog/1110008, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...
- 【转】logback logback.xml常用配置详解(二)<appender>
原创文章,转载请指明出处:http://aub.iteye.com/blog/1101260, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...
- 【转】logback logback.xml常用配置详解(一)<configuration> and <logger>
原创文章,转载请指明出处:http://aub.iteye.com/blog/1101260, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...
- 【转】logback 常用配置详解(序)logback 简介
原创文章,转载请指明出处:http://aub.iteye.com/blog/1101222, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...
- logback 常用配置详解(二) <appender>
logback 常用配置详解(二) <appender> <appender>: <appender>是<configuration>的子节点,是负责写 ...
- SpringBoot常用配置简介
SpringBoot常用配置简介 1. SpringBoot中几个常用的配置的简单介绍 一个简单的Spring.factories # Bootstrap components org.springf ...
- .net学习笔记----WebConfig常用配置节点介绍
一.配置文件入门 .Net提供了一种保存项目配置信息的办法,就是利用配置文件,配置文件的后缀一般是.config.在WinForm程序中配置文件一般是App.config.在Asp.net中一般默认是 ...
- logback logback.xml常用配置详解(三)
logback logback.xml常用配置详解 <filter> <filter>: 过滤器,执行一个过滤器会有返回个枚举值,即DENY,NEUTRAL,ACCEPT其中之 ...
随机推荐
- Kafka consumer的参数
earliest: 当各分区下有已提交的offset时,从提交的offset开始消费:无提交的offset时,从头开始消费 latest :当各分区下有已提交的offset时,从提交的offset开始 ...
- BitAdminCore框架应用篇:(三)核心套件querySuite入门介绍
索引 NET Core应用框架之BitAdminCore框架应用篇系列 框架演示:http://bit.bitdao.cn 框架源码:https://github.com/chenyinxin/coo ...
- 基于C#语言MVC框架Aspose.Cells控件导出Excel表数据
控件bin文件下载地址:https://download.csdn.net/download/u012949335/10610726 @{ ViewBag.Title = "xx" ...
- java 处理json格式数据中的转义斜杠
1.{\"Count\":\"3\",\"ErrorString\":\"\",\"Success\" ...
- 782. Transform to Chessboard
An N x N board contains only 0s and 1s. In each move, you can swap any 2 rows with each other, or an ...
- Qt5学习笔记(基础)
按钮 #include <QApplication> /*应用程序抽象类*/ #include <QWidget> //窗口类 #include <QPushButton ...
- sql语句_统计总成绩最高的前2名
有一个数据表,id user_id score 三个字段,计算总成绩最高的前两名 SELECT * FROM (SELECT user_name,SUM(score) AS score FROM us ...
- 深入set和dict
一. 浅拷贝和深拷贝 浅拷贝:就是创建一个具有相同类型,相同值但不同id的新对象. 浅拷贝产生的新对象中可变对象的值在发生改变时,会对原对象的值也做出改变,因为这些值是同一个引用. a = [1 ...
- django -admin 源码解析
admin源码解析 单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单 ...
- 【mNOIP模拟赛Day 1】 T2 数颜色
题目传送门:https://www.luogu.org/problemnew/show/P3939 题外话:写完这题后本地跑了下极限数据,用时1.5s,于是马上用fread+fwrite优化至0.3s ...