JavaSimon,是Java Simple Monitoring的意思,是Java性能监控的一个开源方案(官方说明)。本文介绍它在项目中的用法:

pom.xml,加入core与dashboard的依赖

 1    <dependency>
 2        <groupId>org.javasimon</groupId>
 3        <artifactId>javasimon-spring</artifactId>
 4        <version>3.3.0</version>
 5    </dependency>
 6    <dependency>
 7        <groupId>org.javasimon</groupId>
 8        <artifactId>javasimon-console-embed</artifactId>
 9        <version>3.3.0</version>
10    </dependency>

web.xml,加入dashboard:

 1    <servlet>
 2        <servlet-name>SimonConsoleServlet</servlet-name>
 3        <servlet-class>org.javasimon.console.SimonConsoleServlet</servlet-class>
 4        <init-param>
 5            <param-name>url-prefix</param-name>
 6            <param-value>/javasimon</param-value>
 7        </init-param>
 8    </servlet>
 9    <servlet-mapping>
10        <servlet-name>SimonConsoleServlet</servlet-name>
11        <url-pattern>/javasimon/*</url-pattern>
12    </servlet-mapping>

applicationContext.xml 加入AOP设置

 1    <!-- 调用StopWatch计时的Interceptor -->
 2    <bean id="monitoringInterceptor" class="org.javasimon.spring.MonitoringInterceptor" />
 3
 4    <!-- 监控定义了@Monitored的方法 -->
 5    <bean id="monitoringAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor">
 6        <property name="advice" ref="monitoringInterceptor" />
 7        <property name="pointcut">
 8            <bean class="org.javasimon.spring.MonitoredMeasuringPointcut" />
 9        </property>
10    </bean>

在已知一定要监控的类或方法上加@Monitored

不修改代码监控新的方法

如下AOP定义片段监控了cn包或子包下的所有方法

1 <!-- 性能监控拦截 -->
2	<aop:config>
3		<aop:advisor advice-ref="monitoringInterceptor" pointcut="execution(* cn..*.*(..))" />
4	</aop:config>

(可选)监控jdbc访问速度 换用新的jdbc driver,在旧的jdbc url里插入simon

  • Oracle Driver class name: org.javasimon.jdbc4.Driver instead of oracle.jdbc.OracleDriver URL: jdbc:simon:oracle:thin:@host:1521/database instead of jdbc:oracle:thin:@host:1521/database
  • MySQL Driver class name: org.javasimon.jdbc4.Driver instead of com.mysql.jdbc.Driver URL: jdbc:simon:mysql://host:3306/database instead of jdbc:mysql://host:3306/database

使用

访问"{your webapp address}/javasimon",如:http://localhost:8080/essa-logger/javasimon即可。