JavaMelody 集成实战:Spring Boot 与 Spring MVC 监控配置
JavaMelody 是一款针对 Java 应用运行时的性能监控工具,能够以可视化图表的形式展示内存占用、CPU 消耗、数据库连接池状态、HTTP 请求耗时、SQL 执行效率等关键指标。它并非通过模拟用户行为来生成数据,而是基于真实流量进行统计分析,帮助开发者在问题恶化前及时感知并定位性能瓶颈。
核心能力
- 量化平均响应时间与请求吞吐量
- 通过趋势预判潜在风险
- 为性能调优提供数据支撑
- 追踪响应延迟的根因
- 验证优化措施的实际效果
运行要求:JDK 1.6 及以上;Servlet 容器需支持 Servlet API 2.4+(如 Tomcat 5.5+、Jetty 6+、JBoss 4+ 等)。
Spring MVC 项目集成
引入依赖
<dependency>
<groupId>net.bull.javamelody</groupId>
<artifactId>javamelody-core</artifactId>
<version>1.71.0</version>
</dependency>
<!-- 如需导出 PDF 报表,需额外引入 -->
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7</version>
</dependency>
web.xml 配置
若容器支持 Servlet 3.0(如 Tomcat 7+),且 web.xml 已声明 version="3.0",则可省略此步骤。否则需在 WEB-INF/web.xml 中添加:
<filter>
<filter-name>performanceMonitor</filter-name>
<filter-class>net.bull.javamelody.MonitoringFilter</filter-class>
<async-supported>true</async-supported>
</filter>
<filter-mapping>
<filter-name>performanceMonitor</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>ASYNC</dispatcher>
</filter-mapping>
<listener>
<listener-class>net.bull.javamelody.SessionListener</listener-class>
</listener>
Spring Boot 项目集成
Spring Boot 的集成更为简洁,仅需引入相同依赖即可,无需额外配置:
<dependency>
<groupId>net.bull.javamelody</groupId>
<artifactId>javamelody-core</artifactId>
<version>1.71.0</version>
</dependency>
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7</version>
</dependency>
启动应用后,访问 http://host:port/context-path/monitoring 即可进入监控面板。注意路径中的 monitoring 为固定后缀,不可省略。
监控面板解读
监控首页以仪表盘形式汇总了各项核心指标,界面风格类似系统资源管理器,直观展示:
- JVM 堆内存与非堆内存使用曲线
- 线程活跃数与 CPU 负载走势
- HTTP 请求 QPS 与平均耗时
- JDBC 连接获取耗时与活跃连接数
- Session 在线数量变化
对于异常请求,面板中会标记"系统错误"类别。展开详情可查看错误堆栈、发生时间戳及影响范围。值得留意的是,历史数据会被持久化存储,因此看到的异常可能并非实时产生,而是过往记录的累积。
进阶配置建议
上述为基础接入方式,实际生产环境中建议补充以下配置:
- 访问控制:默认无需认证即可查看监控页,应配置登录校验防止信息泄露
- 白名单过滤:排除健康检查端点、静态资源等无需监控的请求路径
- 数据源监控:对特定数据源连接池进行精细化跟踪
- 告警阈值:设置响应时间、错误率等指标的触发条件
更多配置参数与扩展用法可参考官方仓库:https://github.com/javamelody/javamelody