RuoYi-Vue系统监控实战:CPU、内存、缓存全方位监控
RuoYi-Vue是基于SpringBoot、Spring Security、JWT、Vue & Element的前后端分离权限管理系统,提供了完善的系统监控功能,帮助管理员实时掌握CPU、内存、缓存等关键指标的运行状态。本文将详细介绍如何利用RuoYi-Vue的监控模块实现对系统资源的全方位监控与管理。
系统监控核心模块概述
RuoYi-Vue的监控功能主要集中在ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor目录下,包含两大核心控制器:
- ServerController:负责服务器硬件资源监控,包括CPU、内存、磁盘等信息采集
- CacheController:专注于Redis缓存监控,提供缓存键管理、统计分析和清理功能
这两个控制器通过RESTful API对外提供服务,前端通过Vue组件实现数据可视化展示,形成完整的监控闭环。
服务器资源监控实现
服务器监控模块通过ServerController实现,核心代码位于ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/ServerController.java。该控制器提供了一个简洁但功能强大的接口:
@PreAuthorize("@ss.hasPermi('monitor:server:list')")
@GetMapping()
public AjaxResult getInfo() throws Exception {
Server server = new Server();
server.copyTo();
return AjaxResult.success(server);
}
这个接口会收集服务器的全方位信息,包括:
- CPU信息:使用率、核心数、型号等
- 内存信息:总内存、已用内存、可用内存、使用率
- 磁盘信息:分区情况、已用空间、可用空间
- 系统信息:操作系统版本、运行时间、JVM信息
图:RuoYi-Vue系统架构支持全方位监控数据采集
Redis缓存监控功能详解
缓存监控由CacheController实现,位于ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java。该控制器提供了丰富的缓存管理功能:
1. 缓存统计信息
通过getInfo()方法获取Redis整体状态:
@GetMapping()
public AjaxResult getInfo() throws Exception {
Properties info = (Properties) redisTemplate.execute((RedisCallback<Object>) connection -> connection.info());
Properties commandStats = (Properties) redisTemplate.execute((RedisCallback<Object>) connection -> connection.info("commandstats"));
Object dbSize = redisTemplate.execute((RedisCallback<Object>) connection -> connection.dbSize());
// 处理并返回统计数据
}
该接口返回Redis服务器信息、数据库大小和命令统计数据,帮助管理员了解缓存服务器的整体运行状况。
2. 缓存键管理
系统预设了多种缓存类型,如用户信息、配置信息、数据字典等:
private final static List<SysCache> caches = new ArrayList<SysCache>();
{
caches.add(new SysCache(CacheConstants.LOGIN_TOKEN_KEY, "用户信息"));
caches.add(new SysCache(CacheConstants.SYS_CONFIG_KEY, "配置信息"));
caches.add(new SysCache(CacheConstants.SYS_DICT_KEY, "数据字典"));
caches.add(new SysCache(CacheConstants.CAPTCHA_CODE_KEY, "验证码"));
// 更多缓存类型...
}
通过getCacheKeys()和getCacheValue()方法,管理员可以查看指定类型的缓存键和对应的值,实现缓存内容的透明化管理。
3. 缓存清理功能
CacheController提供了三级缓存清理功能:
- 清理指定类型缓存:
clearCacheName() - 清理特定缓存键:
clearCacheKey() - 清理所有缓存:
clearCacheAll()
这些功能可以帮助管理员在系统运行异常时快速清理缓存,恢复系统正常运行。
监控数据可视化展示
RuoYi-Vue的前端监控页面位于ruoyi-ui/src/views/monitor/server/index.vue,通过调用后端API获取数据,并使用Chart.js等可视化库将监控数据以图表形式展示。管理员可以直观地看到:
- CPU使用率趋势图
- 内存使用情况饼图
- 磁盘空间分布
- 缓存命中情况统计
图:RuoYi-Vue系统监控数据可视化示例界面
监控权限控制
RuoYi-Vue的监控功能实现了严格的权限控制,通过@PreAuthorize注解确保只有授权用户才能访问监控接口:
@PreAuthorize("@ss.hasPermi('monitor:server:list')")
@GetMapping()
public AjaxResult getInfo() throws Exception { ... }
权限标识monitor:server:list和monitor:cache:list分别控制服务器监控和缓存监控的访问权限,管理员可以通过系统角色管理功能灵活配置监控权限。
总结与最佳实践
RuoYi-Vue提供的系统监控功能为管理员提供了全面的系统运行状态视图。在实际使用中,建议:
- 定期查看服务器监控数据,及时发现资源瓶颈
- 监控缓存命中率,优化缓存策略
- 谨慎使用全量缓存清理功能,避免影响系统运行
- 根据业务需求配置监控告警,及时响应异常情况
通过合理利用这些监控工具,管理员可以确保RuoYi-Vue系统的稳定运行,提升系统可靠性和用户体验。
系统监控模块的完整实现可以参考以下代码路径:
- 服务器监控控制器:
ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/ServerController.java - 缓存监控控制器:
ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java - 监控前端页面:
ruoyi-ui/src/views/monitor/server/index.vue
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考





