一、功能概述

服务器监控模块通过oshi工具库实时采集服务器硬件与软件运行状态,整合CPU、内存、JVM、系统信息及磁盘存储的关键指标,以统一的ServerBO对象封装数据,为系统运维提供全面的服务器状态视图。模块支持实时刷新监控数据,帮助运维人员及时发现资源瓶颈、性能异常和潜在故障。

二、核心监控指标说明

(一)CPU监控(CpuPO

  1. 监控内容
    • 核心数:物理核心与逻辑线程数(格式:X核Y线程
    • 使用率
      • 总使用率(all):100% - 空闲率
      • 系统使用率(sys):系统进程占用CPU的比例
      • 用户使用率(used):用户进程占用CPU的比例
      • 等待率(wait):CPU等待IO操作的时间比例
      • 空闲率(free):CPU空闲时间比例
  2. 采集逻辑
    • 使用oshiCentralProcessor获取CPU ticks(时间片)
    • 间隔1秒(OSHI_WAIT_SECOND=1000)采集两次ticks,计算时间差内的使用率
    • 公式:使用率 = 某类ticks差值 / 总ticks差值 × 100%
  3. 单位:百分比(%)
  4. 应用场景:识别CPU过载(如总使用率持续>80%)、系统进程异常占用等问题

(二)内存监控(MemPO

  1. 监控内容
    • 总内存(total):服务器物理内存总量
    • 已用内存(used):已分配使用的内存量
    • 剩余内存(free):空闲可用的内存量
    • 使用率(usedRate):已用内存占总内存的比例
  2. 采集逻辑
    • 通过oshiGlobalMemory获取总内存和可用内存
    • 公式:已用内存 = 总内存 - 可用内存使用率 = (已用内存 / 总内存) × 100%
  3. 单位
    • 内存容量:GB(保留2位小数)
    • 使用率:百分比(%)
  4. 应用场景:监控内存泄漏(内存使用率持续上升)、内存不足(剩余内存<10%)等问题

(三)JVM监控(JvmPO

  1. 监控内容
    • 内存指标
      • 总内存(total):JVM当前分配的内存总量
      • 最大内存(max):JVM可分配的最大内存(由-Xmx指定)
      • 已用内存(used):JVM已使用的内存量
      • 空闲内存(free):JVM当前空闲的内存量
      • 使用率(usedRate):已用内存占总内存的比例
    • 运行信息
      • 虚拟机名称(javaName):如"Java HotSpot(TM) 64-Bit Server VM"
      • 启动时间(javaStartTime):JVM启动的具体时间
      • 运行时长(javaRunTime):JVM已运行的时间(如"2天3小时")
      • Java版本(javaVersion):如"1.8.0_301"
      • Java安装路径(javaPath):JDK安装目录
      • 时区(timeZone):如"Asia/Shanghai"
  2. 采集逻辑
    • 内存指标:通过Runtime.getRuntime()获取JVM内存数据
    • 运行信息:通过ManagementFactorySystem.getProperties()获取
    • 公式:已用内存 = 总内存 - 空闲内存使用率 = (已用内存 / 总内存) × 100%
  3. 单位
    • 内存容量:MB(保留2位小数)
    • 使用率:百分比(%)
    • 时间:启动时间为yyyy-MM-dd HH:mm:ss,运行时长为自然语言描述
  4. 应用场景:优化JVM参数(如最大内存不足导致频繁GC)、监控JVM运行稳定性

(四)服务器信息监控(SysPO

  1. 监控内容
    • 主机名(computerName):服务器的网络名称
    • 主机IP(computerIp):服务器的IP地址(通过KPIPUtil获取)
    • 操作系统名称(osName):如"Windows 10"、"Linux"
    • 操作系统架构(osArch):如"amd64"
    • 工作目录(userDir):应用程序的运行目录
  2. 采集逻辑
    • 通过System.getProperties()获取系统属性
    • 通过KPIPUtil工具类获取主机名和IP
  3. 应用场景:识别服务器部署环境、定位分布式系统中的节点

(五)磁盘监控(SysFilePO列表)

  1. 监控内容(单块磁盘)
    • 挂载点(dirName):磁盘在系统中的挂载路径(如"/"、"D:")
    • 文件系统类型(sysTypeName):如"NTFS"、"ext4"
    • 磁盘名称(typeName):磁盘的硬件名称
    • 总容量(total):磁盘的总存储空间
    • 剩余容量(free):磁盘可用存储空间
    • 已用容量(used):磁盘已使用的存储空间
    • 使用率(usage):已用容量占总容量的比例
  2. 采集逻辑
    • 使用oshiFileSystem获取所有磁盘分区(OSFileStore
    • 公式:已用容量 = 总容量 - 剩余容量使用率 = (已用容量 / 总容量) × 100%
    • 容量单位转换:自动根据大小转换为B/KB/MB/GB(保留1位小数)
  3. 应用场景:监控磁盘空间不足(使用率>90%)、识别异常占用磁盘的分区

页面展示 效果图 img01