JavaMelody的目标是监视QA和生产环境中的Java或Java EE应用服务器。它不是模拟用户请求的工具,而是根据用户对应用程序的使用情况来衡量和计算应用程序实际操作的统计信息的工具。JavaMelody主要基于请求统计和演化图。
它允许改进QA和生产中的应用程序,并有助于:
给出关于平均响应时间和执行次数的事实
在趋势不好的时候,在问题变得太严重之前做出决定
基于更有限的响应时间进行优化
找到响应时间的根本原因
验证优化后的实际改进
详细介绍请参考https://github.com/javamelody/javamelody/wiki/UserGuide
方式一、使用javamelody的springboot starter
<dependency>
<groupId>net.bull.javamelody</groupId>
<artifactId>javamelody-spring-boot-starter</artifactId>
<version>1.85.0</version>
</dependency>
在application.yml文件中配置属性
javamelody:
# 启用JavaMelody自动配置(可选,默认值:true)
enabled: true
# 从监控中排除数据源名称(可选,逗号分隔)
excluded-datasources: secretSource,topSecretSource
# 启用Spring服务和控制器的监控(可选,默认:true)
spring-monitoring-enabled: true
# 初始化JavaMelody参数(可选)
# 参见: https://github.com/javamelody/javamelody/wiki/UserGuide#6-optional-parameters
init-parameters:
# 记录HTTP请求:
log: true
# 从监控中排除图像,css,字体和js url:
#url-exclude-pattern: (/webjars/.*|/css/.*|/images/.*|/fonts/.*|/js/.*)
# 聚合HTTP请求中的数字:
#http-transform-pattern: \d+
# 添加基本权限:
authorized-users: admin:123456
# 更改默认存储目录:
#storage-directory: /tmp/javamelody
# 修改默认的"/monitoring"路径:
monitoring-path: /jpa/monitoring
方式二、使用javamelody原生的包
<dependency>
<groupId>net.bull.javamelody</groupId>
<artifactId>javamelody-core</artifactId>
<version>1.85.0</version>
</dependency>
编写配置类注入bean
import net.bull.javamelody.MonitoringFilter;
import net.bull.javamelody.SessionListener;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import java.util.HashMap;
import java.util.Map;
@Configuration
public class JavaMelodyConfig {
/**
* 配置javamelody监控
* spring boot会按照order值的大小,从小到大的顺序来依次过滤
*/
@Bean
@Order(Integer.MAX_VALUE-1)
public FilterRegistrationBean<MonitoringFilter> monitoringFilter() {
Map<String, String> initParameters = new HashMap<>();
//设置账号密码
initParameters.put("authorized-users", "admin:123456");
//修改默认路径
initParameters.put("monitoring-path", "/config/monitoring");
FilterRegistrationBean<MonitoringFilter> registration = new FilterRegistrationBean<>();
registration.setFilter(new MonitoringFilter());
registration.addUrlPatterns("/*");
registration.setName("monitoring");
registration.setInitParameters(initParameters);
return registration;
}
/**
* 配置javamelody监听器sessionListener
*/
@Bean
public ServletListenerRegistrationBean<SessionListener> servletListenerRegistrationBean() {
ServletListenerRegistrationBean<SessionListener> slrBean = new ServletListenerRegistrationBean<>();
slrBean.setListener(new SessionListener());
return slrBean;
}
}
以方式二集成的结果为例,启动服务后访问http://localhost:8081/config/monitoring
端口是你当前项目的server.port端口,如果有配置servlet.context-path还需加上配置的路径