一、功能概述
服务器监控模块通过oshi工具库实时采集服务器硬件与软件运行状态,整合CPU、内存、JVM、系统信息及磁盘存储的关键指标,以统一的ServerBO对象封装数据,为系统运维提供全面的服务器状态视图。模块支持实时刷新监控数据,帮助运维人员及时发现资源瓶颈、性能异常和潜在故障。
二、核心监控指标说明
(一)CPU监控(CpuPO)
- 监控内容:
- 核心数:物理核心与逻辑线程数(格式:
X核Y线程) - 使用率:
- 总使用率(
all):100% - 空闲率 - 系统使用率(
sys):系统进程占用CPU的比例 - 用户使用率(
used):用户进程占用CPU的比例 - 等待率(
wait):CPU等待IO操作的时间比例 - 空闲率(
free):CPU空闲时间比例
- 总使用率(
- 核心数:物理核心与逻辑线程数(格式:
- 采集逻辑:
- 使用
oshi的CentralProcessor获取CPU ticks(时间片) - 间隔1秒(
OSHI_WAIT_SECOND=1000)采集两次ticks,计算时间差内的使用率 - 公式:
使用率 = 某类ticks差值 / 总ticks差值 × 100%
- 使用
- 单位:百分比(%)
- 应用场景:识别CPU过载(如总使用率持续>80%)、系统进程异常占用等问题
(二)内存监控(MemPO)
- 监控内容:
- 总内存(
total):服务器物理内存总量 - 已用内存(
used):已分配使用的内存量 - 剩余内存(
free):空闲可用的内存量 - 使用率(
usedRate):已用内存占总内存的比例
- 总内存(
- 采集逻辑:
- 通过
oshi的GlobalMemory获取总内存和可用内存 - 公式:
已用内存 = 总内存 - 可用内存;使用率 = (已用内存 / 总内存) × 100%
- 通过
- 单位:
- 内存容量:GB(保留2位小数)
- 使用率:百分比(%)
- 应用场景:监控内存泄漏(内存使用率持续上升)、内存不足(剩余内存<10%)等问题
(三)JVM监控(JvmPO)
- 监控内容:
- 内存指标:
- 总内存(
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"
- 虚拟机名称(
- 内存指标:
- 采集逻辑:
- 内存指标:通过
Runtime.getRuntime()获取JVM内存数据 - 运行信息:通过
ManagementFactory和System.getProperties()获取 - 公式:
已用内存 = 总内存 - 空闲内存;使用率 = (已用内存 / 总内存) × 100%
- 内存指标:通过
- 单位:
- 内存容量:MB(保留2位小数)
- 使用率:百分比(%)
- 时间:启动时间为
yyyy-MM-dd HH:mm:ss,运行时长为自然语言描述
- 应用场景:优化JVM参数(如最大内存不足导致频繁GC)、监控JVM运行稳定性
(四)服务器信息监控(SysPO)
- 监控内容:
- 主机名(
computerName):服务器的网络名称 - 主机IP(
computerIp):服务器的IP地址(通过KPIPUtil获取) - 操作系统名称(
osName):如"Windows 10"、"Linux" - 操作系统架构(
osArch):如"amd64" - 工作目录(
userDir):应用程序的运行目录
- 主机名(
- 采集逻辑:
- 通过
System.getProperties()获取系统属性 - 通过
KPIPUtil工具类获取主机名和IP
- 通过
- 应用场景:识别服务器部署环境、定位分布式系统中的节点
(五)磁盘监控(SysFilePO列表)
- 监控内容(单块磁盘):
- 挂载点(
dirName):磁盘在系统中的挂载路径(如"/"、"D:") - 文件系统类型(
sysTypeName):如"NTFS"、"ext4" - 磁盘名称(
typeName):磁盘的硬件名称 - 总容量(
total):磁盘的总存储空间 - 剩余容量(
free):磁盘可用存储空间 - 已用容量(
used):磁盘已使用的存储空间 - 使用率(
usage):已用容量占总容量的比例
- 挂载点(
- 采集逻辑:
- 使用
oshi的FileSystem获取所有磁盘分区(OSFileStore) - 公式:
已用容量 = 总容量 - 剩余容量;使用率 = (已用容量 / 总容量) × 100% - 容量单位转换:自动根据大小转换为B/KB/MB/GB(保留1位小数)
- 使用
- 应用场景:监控磁盘空间不足(使用率>90%)、识别异常占用磁盘的分区
页面展示 