一、功能概述
服务器监控模块通过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%)、识别异常占用磁盘的分区
页面展示