JVM Prometheus Monitor - 轻量级 JVM 监控面板
2026/8/15 9:27:16 网站建设 项目流程

🎯 JVM Prometheus Monitor

一个基于 Prometheus 的 JVM 监控工具,提供实时、可视化的 JVM 性能监控和健康分析功能。

📑 目录

  • 功能特性
  • 快速开始
  • 配置说明
  • 监控指标详解
  • 健康分析功能
  • GC 类型支持
  • 常见问题
  • 最佳实践

✨ 功能特性

📊 实时监控

每 5 秒自动刷新,支持暂停/继续,实时查看 JVM 各项指标变化趋势。

🎨 可视化图表

15+ 个独立图表,包括堆内存、非堆内存、GC、CPU、线程等,支持鼠标悬浮查看详情。

🔍 健康分析

自动分析 JVM 健康状态,识别潜在风险,提供优化建议。

🔄 多 GC 支持

自动识别 G1、Parallel、CMS、Serial 等 GC 类型,提供针对性分析。

⚙️ 灵活配置

支持自定义服务地址、Metrics 路径、认证 Header,配置自动保存。

📱 响应式设计

Grafana 风格暗色主题,适配各种屏幕尺寸,支持移动端访问。

🚀 快速开始

1. 前置条件

  • 目标应用已集成 Spring Boot Actuator 或 Prometheus 客户端
  • 目标应用暴露了/metrics/actuator/prometheus端点
  • 现代浏览器(Chrome、Firefox、Safari、Edge)

2. 启动监控

  1. 打开index.html文件(直接双击或用浏览器打开)
  2. 点击右上角⚙️ 配置按钮
  3. 填写配置信息:
    • 服务地址:例如http://your-service:8080
    • Metrics 路径:默认/metrics,Spring Boot 应用通常是/actuator/prometheus
    • 请求头:如果需要认证,填写 JSON 格式的 Header,例如:
      {"refresh-token": "***"}
  4. 点击连接服务按钮
  5. 开始监控!

💡 提示:配置会自动保存到浏览器本地存储,下次打开无需重新配置。

⚙️ 配置说明

基础配置

配置项说明示例
服务地址目标应用的完整 URL(协议+域名+端口)http://test-service.example.com:8080
Metrics 路径Prometheus 指标暴露的路径/metrics/actuator/prometheus
请求头JSON 格式的 HTTP 请求头(用于认证){"Authorization": "Bearer ***"}

Spring Boot 应用配置

如果目标应用是 Spring Boot,需要确保已添加 Actuator 依赖:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> </dependency>

application.yml中启用 Prometheus 端点:

management: endpoints: web: exposure: include: prometheus,health,info metrics: export: prometheus: enabled: true

📊 监控指标详解

堆内存监控

指标说明关注点
Eden 区新对象分配区域频繁 Minor GC 可能导致 Eden 快速回收
Survivor 区存活对象暂存区使用率过高可能导致对象提前晋升
Old Gen长期存活对象持续增长可能表示内存泄漏

非堆内存监控

指标说明关注点
Metaspace类元数据存储区持续增长可能表示类加载泄漏
Code CacheJIT 编译代码缓存满了会影响性能
Compressed Class Space压缩类指针空间通常不需要特别关注

GC 监控

指标说明正常范围
Minor GC 频率Young GC 次数/小时< 100 次/小时
Full GC 频率Full GC 次数/小时< 1 次/小时
GC 暂停时间单次 GC 暂停毫秒数< 200ms

系统资源监控

指标说明关注点
CPU 使用率进程和系统 CPU 占用持续 > 80% 需要关注
线程数活跃线程、阻塞线程等阻塞线程过多可能表示锁竞争

🔍 健康分析功能

点击页面右上角的🔍 分析按钮,系统会自动分析当前 JVM 状态并生成健康报告。

分析维度

  • 堆内存使用率:评估堆内存是否充足
  • 各区域使用率:Eden、Survivor、Old Gen 的使用情况
  • 非堆内存:Metaspace、Code Cache 使用情况
  • GC 频率和耗时:评估 GC 是否过于频繁
  • CPU 使用率:评估 CPU 资源是否充足
  • 线程状态:检查是否有过多阻塞线程
  • 文件描述符:检查 FD 使用率

风险等级

等级颜色说明
正常🟢 绿色指标在安全范围内
警告🟡 黄色指标接近阈值,需要关注
严重🔴 红色指标超过阈值,需要立即处理

阈值标准

指标警告阈值严重阈值
堆内存使用率> 70%> 85%
Old Gen 使用率> 60%> 80%
Survivor 使用率> 90%-
Metaspace 使用率> 80%> 90%
Full GC 频率> 0.1 次/小时> 1 次/小时
CPU 使用率> 60%> 80%
阻塞线程数> 10-

🔄 GC 类型支持

系统会自动识别以下 GC 类型,并提供针对性的分析:

G1 GC

  • 特点:面向服务端应用,可预测的停顿时间
  • 内存区域:Eden、Survivor、Old Gen(Region 化)
  • GC 类型:Young GC、Mixed GC、Full GC
  • 分析重点:Old Gen 使用率、Mixed GC 频率

Parallel GC(默认)

  • 特点:吞吐量优先,多线程并行回收
  • 内存区域:PS Eden、PS Survivor、PS Old Gen
  • GC 类型:Minor GC、Major GC
  • 分析重点:Survivor 使用率(自适应策略)、Full GC 频率

CMS GC

  • 特点:低延迟,并发标记清除
  • 内存区域:Par Eden、Par Survivor、CMS Old Gen
  • GC 类型:Minor GC、Concurrent Mark-Sweep
  • 分析重点:Old Gen 碎片化、Concurrent Mode Failure

Serial GC

  • 特点:单线程,适合客户端应用
  • 内存区域:Eden、Survivor、Tenured Gen
  • GC 类型:Minor GC、Major GC
  • 分析重点:GC 暂停时间

❓ 常见问题

Q1: 为什么连接服务失败?

可能原因:

  • 服务地址或端口错误
  • Metrics 路径不正确(Spring Boot 应用通常是/actuator/prometheus
  • 需要认证但未提供正确的 Header
  • CORS 跨域问题(目标服务未配置允许跨域)

Q2: 为什么某些图表没有数据?

可能原因:

  • 目标应用未暴露相应的 Prometheus 指标
  • 应用刚启动,还没有产生 GC 或 HTTP 请求
  • 指标名称与预期不同(不同 GC 类型的指标名称不同)

Q3: Survivor 区使用率很高,正常吗?

答案:取决于 GC 类型和配置。

  • Parallel GC:启用自适应策略时,Survivor 会自动调整大小,高使用率可能是正常的
  • G1 GC:Survivor 使用率高可能导致对象提前晋升,需要关注
  • 建议:查看健康分析报告,系统会根据 GC 类型给出针对性建议

Q4: Full GC 频繁怎么办?

排查步骤:

  1. 检查 Old Gen 使用率是否持续增长(可能内存泄漏)
  2. 检查 Metaspace 使用率(可能类加载泄漏)
  3. 增加堆内存:-Xmx
  4. 调整 GC 参数或切换到 G1 GC
  5. 使用jmapjstat等工具深入分析

Q5: 如何监控多个服务?

当前版本:每个页面只能监控一个服务。

解决方案

  • 打开多个浏览器标签页,每个监控一个服务
  • 或者修改代码支持多服务切换(需要开发)

💡 最佳实践

JVM 参数推荐配置

G1 GC(推荐,堆内存 > 4GB)
-Xms4g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=4m -XX:InitiatingHeapOccupancyPercent=45 -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m
Parallel GC(堆内存 < 4GB)
-Xms2g -Xmx2g -XX:+UseParallelGC -XX:ParallelGCThreads=4 -XX:+UseAdaptiveSizePolicy -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m

监控建议

  1. 定期检查健康分析报告:每天至少查看一次,及时发现潜在问题
  2. 关注趋势而非瞬时值:观察图表的变化趋势,而不是某个时间点的值
  3. 设置告警阈值:根据业务特点设置合理的告警阈值
  4. 结合日志分析:GC 日志、应用日志结合分析,快速定位问题
  5. 压测验证:在测试环境进行压测,观察 JVM 各项指标的表现

性能优化方向

  • 减少 GC 频率:优化对象创建,减少短命对象
  • 降低 GC 暂停:调整 GC 参数,选择合适的 GC 类型
  • 避免内存泄漏:及时释放不再使用的资源,注意集合类的清理
  • 优化线程池:合理配置线程池大小,避免过多线程竞争
  • 监控 Metaspace:避免类加载泄漏,特别是动态加载类的场景

JVM Prometheus Monitor- 让 JVM 监控更简单、更直观

版本:1.0.0 | 最后更新:2026-08-13

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询