使用JavaMelody监控做性能分析

简介

JavaMelody-Simple-Demo 是使用 JavaMelody 监控 Java web 做性能分析的一个 Demo 项目主要目的是为了方便刚接触 JavaMelody 的童鞋能够快速上手,并且看到实际效果好做出决策是否使用该项目。

关于JavaMelody

JavaMelody 是一个开源项目,他的目标是监控 测试 & 生产环境中的 Java 或 Java EE 应用程序。根据用户对应用程序的使用情况来衡量和计算应用程序实际操作统计信息的工具。

如何使用

  • 一 在 mavne 项目的 POM.xml 里面加入如下 Jar 包依赖

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <dependency>
    <groupId>net.bull.javamelody</groupId>
    <artifactId>javamelody-core</artifactId>
    <version>1.70.0</version>
    </dependency>
    <dependency>
    <groupId>org.jrobin</groupId>
    <artifactId>jrobin</artifactId>
    <version>1.5.9</version>
    </dependency>
  • 二 在 web.xml 里面加入如下内容,其中 applicationContext.xml 是你本来就有的 spring 配置文件,根据实际情况适当修改名字就好。这里有一点多说一句,就是由于监控信息属于敏感信息肯定线上不能谁都能看到,所以在这里加上用户认证。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
    classpath:net/bull/javamelody/monitoring-spring-datasource.xml
    classpath:net/bull/javamelody/monitoring-spring-aspectj.xml
    classpath*:applicationContext.xml
    </param-value>
    </context-param>
    <listener>
    <listener-class>net.bull.javamelody.SessionListener</listener-class>
    </listener>
    <filter>
    <filter-name>javamelody</filter-name>
    <filter-class>net.bull.javamelody.MonitoringFilter</filter-class>
    <async-supported>true</async-supported>
    <!--========= 这里是设置访问性能监控页面的权限设置 ========-->
    <init-param>
    <param-name>authorized-users</param-name>
    <param-value>admin:123456, user:pwd</param-value>
    </init-param>
    <!--========= 这里是设置访问性能监控页面的权限设置 ========-->
    </filter>
    <filter-mapping>
    <filter-name>javamelody</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>ASYNC</dispatcher>
    </filter-mapping>
  • 三 检查你的 Spring 配置文件里面是否配置了 AOP ,一般都会有的。

    1
    <aop:aspectj-autoproxy/>