# JConsoleX **Repository Path**: aopmin/jconsole-x ## Basic Information - **Project Name**: JConsoleX - **Description**: 基于 SpringBoot3 构建的 Web 版 JVM 监控平台,底层通过 JMX 协议实现远程 JVM 连接与实时数据采集。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-11 - **Last Updated**: 2026-06-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # JConsoleX - Web版JVM监控平台 基于 Spring Boot 3 + Java 17 + Thymeleaf 构建的 Web 版 JVM 监控平台,底层通过 JMX 协议实现远程 JVM 连接与实时数据采集,功能对标原生 JConsole。 ## 功能模块 ### 1. 连接管理 - 手动输入 IP、端口、JMX 认证信息 - 保存多组 JVM 连接配置(内存存储) - 支持连接测试、断开、重连 - 连接状态实时显示 ### 2. 概览面板 - 堆内存 / 非堆内存 / CPU / 线程 / 类加载 统计卡片 - ECharts 内存饼图 - ECharts GC 柱状图 - ECharts 堆内存实时趋势折线图 - JVM 运行时信息展示 ### 3. 内存监控 - 内存池分区详情表格(Eden、Survivor、Old、Metaspace 等) - 堆内存使用趋势图 - 非堆内存分布饼图 - 手动执行 Full GC ### 4. 线程监控 - 线程列表,支持按状态筛选(RUNNABLE/BLOCKED/WAITING 等) - 线程栈详情查看 - 死锁检测与告警 - 线程快照导出(文本格式) ### 5. 类加载监控 - 已加载 / 累计加载 / 已卸载 类数量统计 - 类加载趋势折线图 - 类加载分布饼图 ### 6. MBean 管理 - MBean 域名目录树浏览 - 属性值查看与刷新 - 操作方法调用(支持参数输入) - 完全兼容原生 JConsole MBean 操作能力 ## 技术栈 | 层级 | 技术 | |------|------| | 后端框架 | Spring Boot 3.2.5 | | Java版本 | JDK 17 | | 模板引擎 | Thymeleaf | | 前端UI | Bootstrap 5.3 | | 图表库 | ECharts 5.5 | | 图标库 | Font Awesome 6.5 | | JMX协议 | JDK内置 JMX RMI | | 存储 | 内存存储 (ConcurrentHashMap) | | 日志 | SLF4J + Logback | | 构建 | Maven | ## 快速开始 ### 环境要求 - JDK 17+ - Maven 3.6+ ### 编译运行 ```bash # 克隆项目 cd JConsoleX # 编译 mvn clean package -DskipTests # 启动(开发环境) mvn spring-boot:run -Dspring-boot.run.profiles=dev # 或直接运行jar包 java -jar target/JConsoleX-1.0-SNAPSHOT.jar --spring.profiles.active=dev ``` 启动后访问:**http://localhost:8080** ### 目标JVM配置 被监控的JVM需要开启JMX远程访问: ```bash # 无认证模式(测试用) java -Dcom.sun.management.jmxremote.port=1099 \ -Dcom.sun.management.jmxremote.authenticate=false \ -Dcom.sun.management.jmxremote.ssl=false \ -jar your-app.jar # 有认证模式 java -Dcom.sun.management.jmxremote.port=1099 \ -Dcom.sun.management.jmxremote.authenticate=true \ -Dcom.sun.management.jmxremote.password.file=/path/to/jmxremote.password \ -Dcom.sun.management.jmxremote.access.file=/path/to/jmxremote.access \ -Dcom.sun.management.jmxremote.ssl=false \ -jar your-app.jar ``` ### 使用步骤 1. 浏览器访问 `http://localhost:8080`,默认进入概览面板 2. 点击左侧导航「连接管理」→ 填入目标 JVM 的 IP 和端口 3. 点击「测试连接」确认连通性 → 点击「保存配置」 4. 在顶部连接选择器中选中保存的连接,自动建立 JMX 连接 5. 切换到各监控面板查看实时数据 ## 项目结构 ``` src/main/java/cn/aopmin/jconsolex/ ├── JConsoleXApplication.java # Spring Boot 入口 ├── config/ # 配置类 │ ├── WebMvcConfig.java # Web MVC 配置 │ ├── JmxConnectionPool.java # JMX 连接池 │ └── ConnectionConfigStore.java # 连接配置存储 ├── controller/ # 控制器 │ ├── PageController.java # 页面路由 │ ├── ConnectController.java # 连接管理API │ ├── OverviewController.java # 概览面板API │ ├── MemoryController.java # 内存监控API │ ├── ThreadController.java # 线程监控API │ ├── ClassController.java # 类加载API │ └── MBeanController.java # MBean管理API ├── model/ │ ├── entity/ConnectionConfig.java │ ├── dto/ConnectRequest.java │ └── vo/ResultVO.java # 统一响应 ├── service/JmxService.java # JMX 核心服务 ├── util/JmxUtil.java # JMX 工具类 ├── exception/ # 异常处理 └── aspect/ApiLogAspect.java # API日志切面 ``` ## 配置说明 ### 开发环境(application-dev.yml) - 端口: 8080 - Thymeleaf 缓存: 关闭(热更新) - SQL 日志: 开启 - 日志级别: DEBUG ### 生产环境(application-prod.yml) - 端口: 8080 - Thymeleaf 缓存: 开启 - SQL 日志: 关闭 - 日志级别: INFO ### 自定义端口 ```bash java -jar JConsoleX-1.0-SNAPSHOT.jar --server.port=9090 ``` ## API 概览 所有接口返回统一 JSON 格式: ```json {"code": 200, "message": "success", "data": {...}, "timestamp": 1718000000000} ``` | 模块 | 方法 | 路径 | 说明 | |------|------|------|------| | 连接 | GET | /api/connect/list | 获取连接配置列表 | | 连接 | POST | /api/connect/save | 保存连接配置 | | 连接 | DELETE | /api/connect/{id} | 删除连接配置 | | 连接 | POST | /api/connect/test | 测试连接 | | 连接 | POST | /api/connect/open | 打开连接 | | 连接 | POST | /api/connect/close/{id} | 关闭连接 | | 概览 | GET | /api/overview/info | 综合概览数据 | | 内存 | GET | /api/memory/detail | 内存详情 | | 内存 | POST | /api/memory/gc | 执行GC | | 线程 | GET | /api/thread/list | 线程列表 | | 线程 | GET | /api/thread/{id} | 线程详情 | | 线程 | GET | /api/thread/deadlock | 死锁检测 | | 线程 | GET | /api/thread/export | 导出线程快照 | | 类加载 | GET | /api/class/info | 类加载信息 | | MBean | GET | /api/mbean/domains | MBean域名列表 | | MBean | GET | /api/mbean/list | 域名下MBean列表 | | MBean | GET | /api/mbean/info | MBean详情 | | MBean | POST | /api/mbean/attribute | 读取属性 | | MBean | POST | /api/mbean/invoke | 调用操作 | ## License MIT License