Ruo-Yi基础篇(四):第四章. 系统监控:项目的健康仪表盘(非重要)

第四章. 系统监控:项目的健康仪表盘(非重要)

摘要: 在本章中,我们将从开发者的角色,部分切换到运维工程师(SRE/DevOps)的视角,学习如何利用若依内置的强大监控工具集来保障应用的健康与稳定。我们将逐一探索 在线用户管理、服务监控、缓存监控数据监控(Druid) 等核心模块。学完本章,您将具备诊断应用性能、监控系统资源和排查潜在问题的基本能力,为项目的稳定运行提供坚实保障。


4.1. 在线用户:实时会话管理与安全控制

是什么?
“在线用户”功能提供了一个实时的会话监控界面,它展示了当前所有通过验证并活跃在系统中的用户会话列表。

核心价值:

  • 实时监控: 管理员可以清晰地看到每个在线用户的 登录账号、所属部门、登录 IP、登录地点、浏览器类型 以及 操作系统
  • 安全强制下线: 提供了“强退”功能。当发现异常或可疑会话时(例如,某员工已离职但其账号仍在异地登录),管理员可以一键强制该用户下线,使其 Token 失效,从而立即终止其访问权限。

实战场景:处理异常登录会话

  1. 模拟场景: 请您使用另一个浏览器(或浏览器的隐私模式),再次登录 admin 账户。现在,您的 admin 账户就拥有了两个独立的在线会话。
  2. 导航与观察: 在第一个浏览器中,导航至 系统监控 -> 在线用户。您会在列表中看到两条 admin 用户的登录记录,它们的“会话编号”不同,可能登录 IP 也不同(如果使用了代理)。
  3. 执行强退: 找到您在第二个浏览器中登录的那条会话记录,点击其右侧操作列的 强退 按钮。
  4. 验证结果: 回到第二个浏览器,尝试点击任意菜单或刷新页面。您会发现系统会立即提示“登录状态已过期,请重新登录”,并跳转到登录页。这证明该会话已被成功终止。
    在线用户列表及强退操作示意图

4.2. 服务监控:洞悉服务器与 JVM 状态

是什么?
服务监控是一个集成的服务器运行时信息展示面板,它利用了 oshi 这个库来实时获取服务器底层的硬件和 JVM 的各项性能指标。

核心指标解读:

  • CPU: 展示服务器 CPU 的核心数、系统使用率、用户使用率和当前空闲率。CPU 使用率持续过高 是系统性能瓶颈最直接的信号。
  • 内存: 显示总物理内存、已用内存和剩余内存。内存使用持续接近上限 可能预示着内存泄漏或需要增加硬件资源。
  • 服务器信息: 包括服务器名称、操作系统、IP 地址等。
  • Java 虚拟机信息: 这是排查 Java 应用问题的关键区域。
    • 内存: 重点关注 “堆内存” 的使用情况(如 Max, Committed, Used)。如果 Used 内存持续增长而不回落,即使在应用空闲时也是如此,这通常是 内存泄漏(Memory Leak) 的典型特征。
    • 线程: 显示当前 JVM 的总线程数、守护线程数等。过多的线程数会消耗大量内存和 CPU 资源。

如何使用:
该页面提供的信息主要用于性能监控和问题诊断。当用户反馈系统卡顿或响应缓慢时,服务监控页面是运维人员首先需要查看的地方,以快速判断问题是出在 CPU、内存还是应用本身。

image-20251101120441297


4.3. 缓存监控:深入 Redis 的世界

是什么?
缓存监控提供了一个对若依所使用的 Redis 缓存实例的详细信息的图形化展示界面。

核心价值:

  • 基本信息: 展示 Redis 的版本、运行模式(单机/集群)、端口、运行时间等。
  • 命令统计: 以图表形式展示 Redis 自启动以来执行过的各种命令(如 GET, SET, KEYS)的次数。这有助于分析应用的缓存使用模式。
  • 内存信息: 显示 Redis 已使用的内存、内存峰值、内存碎片率等关键指标。已用内存持续增长 可能意味着存在缓存键没有设置过期时间(TTL)的问题。
  • 键值统计: 展示当前 Redis 实例中存储的键(Key)的总数量,以及每个数据库(db0, db1, …)的键数量和过期键数量。

实战场景:检查登录 Token 缓存

  1. 导航: 进入 系统监控 -> 缓存列表
  2. 观察键值统计: 在“键值统计”部分,您会看到 db0 中存在一定数量的 keys。这些键主要就是若依用来存储用户登录信息(LoginUser)的缓存,键的格式通常是 login_tokens:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  3. 验证过期机制: 登录一个用户,然后观察 keys 数量增加。等待超过 Token 的有效期(默认为 30 分钟)后再次观察,理论上对应的 login_tokens: 键应该会被 Redis 自动清除。

4.4. 数据监控:你的 SQL 性能优化利器

是什么?
数据监控实际上是阿里巴巴著名的数据库连接池项目 Druid 自带的监控后台。若依巧妙地将其内嵌到了自己的管理界面中。

核心功能:

  • 数据源信息: 显示数据库连接池的详细状态,如活动连接数、空闲连接数、最大连接数等。如果 活动连接数持续接近最大值,说明数据库连接可能成为瓶颈。
  • SQL 监控: 这是最有价值的功能。它会记录并分析应用执行过的每一条 SQL 语句的性能。
    • 执行最长: 按执行耗时排序,可以快速定位到系统中性能最差的“慢 SQL”。
    • 执行次数最多: 按执行次数排序,有助于找到最频繁被调用的 SQL,这些 SQL 即使单次执行不慢,高频调用也可能造成性能问题。
    • 错误次数最多: 快速定位到执行出错的 SQL。
  • URL 监控 / Spring 监控: 从不同维度分析应用的接口性能。

实战场景:定位慢查询

  1. 导航与登录: 进入 系统监控 -> 数据监控。首次访问需要登录,默认账号密码是 ruoyi / 123456(可在 application.yml 中修改)。
  2. 访问 SQL 监控: 在 Druid 后台,点击左侧的 SQL 监控
  3. 执行操作: 回到若依主界面,多次访问“课程管理”页面并执行几次查询操作。
  4. 分析 SQL: 刷新 Druid 的“SQL 监控”页面。您会在列表中看到类似 SELECT count(0) FROM tb_course WHERE ...SELECT ... FROM tb_course WHERE ... LIMIT ... 的 SQL 语句。点击任意一条 SQL,可以查看其详细的执行计划、耗时分布等信息。如果某条 SQL 执行时间过长,这里就是您开始进行数据库优化的起点。