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其中之 ...
随机推荐
- JS时间戳转时间格式
//转化为时间格式 function getDate(timestamp) { timestamp = timestamp.replace("/Date(", "&quo ...
- js代码上的优化
例1 if ( config.url === '/web/teacher/classes' || config.url === '/web/teacher/students || config.u ...
- flask-mysqldb安装时EnvironmentError: mysql_config not found
安装时候的日志如下: sh: : mysql_config: not found Traceback (most recent call last): File , in <module> ...
- [JavaScript] 获取昨日前天的日期
var day = new Date(); day.setDate(day.getDate()-1); console(day.pattern('yyyy-MM-dd'));//昨天的日期 day.s ...
- apt小问题
安装软件遇到情况,一直等待: root@test-xxx:/opt# apt-get install vsftpdReading package lists... DoneBuilding depen ...
- 【BZOJ2082】【POI2010】Divine divisor 假的pollard-rho
题目大意:给你$m$个数$a_i$,定义$n=\Pi_{i=1}^{m}a_i$.将$n$分解质因数为$\Pi p_i^{k_i} $,$p_i$是质数.请输出$2^{max(k_i)}-1$,以及存 ...
- Python中第三方库的安装
网上的帖子挺多的,教你如何安装,安装第三方工具库的方法总共分为三类:Dos系统下pip命令:安装包下载安装:IDE集成环境下安装(Pycharm,Spyder……) http://www.jiansh ...
- centos7.2 get pid by process name with python3.6
centos7.2 get pid by process name with python3.6 #-*- encoding:UTF-8 -*- import os import sys import ...
- windows 安装openssl
参考文章:http://www.cnblogs.com/tangxin-blog/p/5724071.html 准备条件: 1.VS2012 (携带c++) 2.下载openssl 源码 3.安装Pe ...
- 记一次Socket编程踩的坑
闲来无事研究了下Socket,想用它做个简单的聊天室模型,结果踩了个坑,整半天才出来,惭愧啊,先上完成的代码吧 服务端: public partial class Form1 : Form { pub ...