From 2b8ab9cc4d538e2f02e6882b0bfa7934ae7bdbb4 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期五, 12 三月 2021 18:02:23 +0800 Subject: [PATCH] update 使用hutool重写系统监控 --- ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/Server.java | 193 ++++++++++++++--------------------------------- 1 files changed, 58 insertions(+), 135 deletions(-) diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/Server.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/Server.java index 63b03da..5195efa 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/Server.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/Server.java @@ -1,35 +1,35 @@ package com.ruoyi.framework.web.domain; -import java.net.UnknownHostException; import java.util.LinkedList; import java.util.List; import java.util.Properties; -import com.ruoyi.common.utils.Arith; -import com.ruoyi.common.utils.ip.IpUtils; + +import cn.hutool.core.net.NetUtil; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.system.*; +import cn.hutool.system.oshi.CpuInfo; +import cn.hutool.system.oshi.OshiUtil; import com.ruoyi.framework.web.domain.server.Cpu; import com.ruoyi.framework.web.domain.server.Jvm; import com.ruoyi.framework.web.domain.server.Mem; import com.ruoyi.framework.web.domain.server.Sys; import com.ruoyi.framework.web.domain.server.SysFile; -import oshi.SystemInfo; -import oshi.hardware.CentralProcessor; -import oshi.hardware.CentralProcessor.TickType; +import lombok.Data; import oshi.hardware.GlobalMemory; -import oshi.hardware.HardwareAbstractionLayer; import oshi.software.os.FileSystem; import oshi.software.os.OSFileStore; import oshi.software.os.OperatingSystem; -import oshi.util.Util; /** * 鏈嶅姟鍣ㄧ浉鍏充俊鎭� - * + * * @author ruoyi */ -public class Server -{ +@Data +public class Server { private static final int OSHI_WAIT_SECOND = 1000; - + /** * CPU鐩稿叧淇℃伅 */ @@ -55,103 +55,33 @@ */ private List<SysFile> sysFiles = new LinkedList<SysFile>(); - public Cpu getCpu() - { - return cpu; - } - public void setCpu(Cpu cpu) - { - this.cpu = cpu; - } - - public Mem getMem() - { - return mem; - } - - public void setMem(Mem mem) - { - this.mem = mem; - } - - public Jvm getJvm() - { - return jvm; - } - - public void setJvm(Jvm jvm) - { - this.jvm = jvm; - } - - public Sys getSys() - { - return sys; - } - - public void setSys(Sys sys) - { - this.sys = sys; - } - - public List<SysFile> getSysFiles() - { - return sysFiles; - } - - public void setSysFiles(List<SysFile> sysFiles) - { - this.sysFiles = sysFiles; - } - - public void copyTo() throws Exception - { - SystemInfo si = new SystemInfo(); - HardwareAbstractionLayer hal = si.getHardware(); - - setCpuInfo(hal.getProcessor()); - - setMemInfo(hal.getMemory()); - + public void copyTo() { + setCpuInfo(); + setMemInfo(); setSysInfo(); - setJvmInfo(); - - setSysFiles(si.getOperatingSystem()); + setSysFiles(); } /** * 璁剧疆CPU淇℃伅 */ - private void setCpuInfo(CentralProcessor processor) - { - // CPU淇℃伅 - long[] prevTicks = processor.getSystemCpuLoadTicks(); - Util.sleep(OSHI_WAIT_SECOND); - long[] ticks = processor.getSystemCpuLoadTicks(); - long nice = ticks[TickType.NICE.getIndex()] - prevTicks[TickType.NICE.getIndex()]; - long irq = ticks[TickType.IRQ.getIndex()] - prevTicks[TickType.IRQ.getIndex()]; - long softirq = ticks[TickType.SOFTIRQ.getIndex()] - prevTicks[TickType.SOFTIRQ.getIndex()]; - long steal = ticks[TickType.STEAL.getIndex()] - prevTicks[TickType.STEAL.getIndex()]; - long cSys = ticks[TickType.SYSTEM.getIndex()] - prevTicks[TickType.SYSTEM.getIndex()]; - long user = ticks[TickType.USER.getIndex()] - prevTicks[TickType.USER.getIndex()]; - long iowait = ticks[TickType.IOWAIT.getIndex()] - prevTicks[TickType.IOWAIT.getIndex()]; - long idle = ticks[TickType.IDLE.getIndex()] - prevTicks[TickType.IDLE.getIndex()]; - long totalCpu = user + nice + cSys + idle + iowait + irq + softirq + steal; - cpu.setCpuNum(processor.getLogicalProcessorCount()); - cpu.setTotal(totalCpu); - cpu.setSys(cSys); - cpu.setUsed(user); - cpu.setWait(iowait); - cpu.setFree(idle); + private void setCpuInfo() { + CpuInfo cpuInfo = OshiUtil.getCpuInfo(OSHI_WAIT_SECOND); + cpu.setCpuNum(cpuInfo.getCpuNum()); + cpu.setTotal(cpuInfo.getToTal()); + cpu.setSys(cpuInfo.getSys()); + cpu.setUsed(cpuInfo.getUsed()); + cpu.setWait(cpuInfo.getWait()); + cpu.setFree(cpuInfo.getFree()); } /** * 璁剧疆鍐呭瓨淇℃伅 */ - private void setMemInfo(GlobalMemory memory) - { + private void setMemInfo() { + GlobalMemory memory = OshiUtil.getMemory(); mem.setTotal(memory.getTotal()); mem.setUsed(memory.getTotal() - memory.getAvailable()); mem.setFree(memory.getAvailable()); @@ -160,38 +90,39 @@ /** * 璁剧疆鏈嶅姟鍣ㄤ俊鎭� */ - private void setSysInfo() - { - Properties props = System.getProperties(); - sys.setComputerName(IpUtils.getHostName()); - sys.setComputerIp(IpUtils.getHostIp()); - sys.setOsName(props.getProperty("os.name")); - sys.setOsArch(props.getProperty("os.arch")); - sys.setUserDir(props.getProperty("user.dir")); + private void setSysInfo() { + HostInfo hostInfo = SystemUtil.getHostInfo(); + OsInfo osInfo = SystemUtil.getOsInfo(); + UserInfo userInfo = SystemUtil.getUserInfo(); + sys.setComputerName(hostInfo.getName()); + sys.setComputerIp(hostInfo.getAddress()); + sys.setOsName(osInfo.getName()); + sys.setOsArch(osInfo.getArch()); + sys.setUserDir(userInfo.getCurrentDir()); } /** * 璁剧疆Java铏氭嫙鏈� */ - private void setJvmInfo() throws UnknownHostException - { - Properties props = System.getProperties(); - jvm.setTotal(Runtime.getRuntime().totalMemory()); - jvm.setMax(Runtime.getRuntime().maxMemory()); - jvm.setFree(Runtime.getRuntime().freeMemory()); - jvm.setVersion(props.getProperty("java.version")); - jvm.setHome(props.getProperty("java.home")); + private void setJvmInfo() { + JavaInfo javaInfo = SystemUtil.getJavaInfo(); + RuntimeInfo runtimeInfo = SystemUtil.getRuntimeInfo(); + JavaRuntimeInfo javaRuntimeInfo = SystemUtil.getJavaRuntimeInfo(); + jvm.setTotal(runtimeInfo.getTotalMemory()); + jvm.setMax(runtimeInfo.getMaxMemory()); + jvm.setFree(runtimeInfo.getFreeMemory()); + jvm.setVersion(javaInfo.getVersion()); + jvm.setHome(javaRuntimeInfo.getHomeDir()); } /** * 璁剧疆纾佺洏淇℃伅 */ - private void setSysFiles(OperatingSystem os) - { + private void setSysFiles() { + OperatingSystem os = OshiUtil.getOs(); FileSystem fileSystem = os.getFileSystem(); List<OSFileStore> fsArray = fileSystem.getFileStores(); - for (OSFileStore fs : fsArray) - { + for (OSFileStore fs : fsArray) { long free = fs.getUsableSpace(); long total = fs.getTotalSpace(); long used = total - free; @@ -202,39 +133,31 @@ sysFile.setTotal(convertFileSize(total)); sysFile.setFree(convertFileSize(free)); sysFile.setUsed(convertFileSize(used)); - sysFile.setUsage(Arith.mul(Arith.div(used, total, 4), 100)); + sysFile.setUsage(NumberUtil.mul(NumberUtil.div(used, total, 4), 100)); sysFiles.add(sysFile); } } /** * 瀛楄妭杞崲 - * + * * @param size 瀛楄妭澶у皬 * @return 杞崲鍚庡�� */ - public String convertFileSize(long size) - { + public String convertFileSize(long size) { long kb = 1024; long mb = kb * 1024; long gb = mb * 1024; - if (size >= gb) - { - return String.format("%.1f GB", (float) size / gb); - } - else if (size >= mb) - { + if (size >= gb) { + return StrUtil.format("%.1f GB", (float) size / gb); + } else if (size >= mb) { float f = (float) size / mb; - return String.format(f > 100 ? "%.0f MB" : "%.1f MB", f); - } - else if (size >= kb) - { + return StrUtil.format(f > 100 ? "%.0f MB" : "%.1f MB", f); + } else if (size >= kb) { float f = (float) size / kb; - return String.format(f > 100 ? "%.0f KB" : "%.1f KB", f); - } - else - { - return String.format("%d B", size); + return StrUtil.format(f > 100 ? "%.0f KB" : "%.1f KB", f); + } else { + return StrUtil.format("%d B", size); } } } -- Gitblit v1.9.3