|
|
@@ -3,6 +3,7 @@ package com.doc.framework.web.domain;
|
|
|
import com.doc.common.utils.Arith;
|
|
|
import com.doc.common.utils.ip.IpUtils;
|
|
|
import com.doc.framework.web.domain.server.*;
|
|
|
+import lombok.Data;
|
|
|
import oshi.SystemInfo;
|
|
|
import oshi.hardware.CentralProcessor;
|
|
|
import oshi.hardware.CentralProcessor.TickType;
|
|
|
@@ -13,6 +14,8 @@ import oshi.software.os.OSFileStore;
|
|
|
import oshi.software.os.OperatingSystem;
|
|
|
import oshi.util.Util;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
import java.net.UnknownHostException;
|
|
|
import java.util.LinkedList;
|
|
|
import java.util.List;
|
|
|
@@ -20,17 +23,21 @@ import java.util.Properties;
|
|
|
|
|
|
/**
|
|
|
* 服务器相关信息
|
|
|
- *
|
|
|
+ *
|
|
|
* @author ruoyi
|
|
|
*/
|
|
|
-public class Server
|
|
|
-{
|
|
|
+@Data
|
|
|
+public class Server {
|
|
|
private static final int OSHI_WAIT_SECOND = 1000;
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* CPU相关信息
|
|
|
*/
|
|
|
private Cpu cpu = new Cpu();
|
|
|
+ /**
|
|
|
+ * Hdd相关信息
|
|
|
+ */
|
|
|
+ private Hdd hdd = new Hdd();
|
|
|
|
|
|
/**
|
|
|
* 內存相关信息
|
|
|
@@ -47,63 +54,13 @@ public class Server
|
|
|
*/
|
|
|
private Sys sys = new Sys();
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
* 磁盘相关信息
|
|
|
*/
|
|
|
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
|
|
|
- {
|
|
|
+ public void copyTo() throws Exception {
|
|
|
SystemInfo si = new SystemInfo();
|
|
|
HardwareAbstractionLayer hal = si.getHardware();
|
|
|
|
|
|
@@ -121,8 +78,7 @@ public class Server
|
|
|
/**
|
|
|
* 设置CPU信息
|
|
|
*/
|
|
|
- private void setCpuInfo(CentralProcessor processor)
|
|
|
- {
|
|
|
+ private void setCpuInfo(CentralProcessor processor) {
|
|
|
// CPU信息
|
|
|
long[] prevTicks = processor.getSystemCpuLoadTicks();
|
|
|
Util.sleep(OSHI_WAIT_SECOND);
|
|
|
@@ -147,8 +103,7 @@ public class Server
|
|
|
/**
|
|
|
* 设置内存信息
|
|
|
*/
|
|
|
- private void setMemInfo(GlobalMemory memory)
|
|
|
- {
|
|
|
+ private void setMemInfo(GlobalMemory memory) {
|
|
|
mem.setTotal(memory.getTotal());
|
|
|
mem.setUsed(memory.getTotal() - memory.getAvailable());
|
|
|
mem.setFree(memory.getAvailable());
|
|
|
@@ -157,8 +112,7 @@ public class Server
|
|
|
/**
|
|
|
* 设置服务器信息
|
|
|
*/
|
|
|
- private void setSysInfo()
|
|
|
- {
|
|
|
+ private void setSysInfo() {
|
|
|
Properties props = System.getProperties();
|
|
|
sys.setComputerName(IpUtils.getHostName());
|
|
|
sys.setComputerIp(IpUtils.getHostIp());
|
|
|
@@ -170,8 +124,7 @@ public class Server
|
|
|
/**
|
|
|
* 设置Java虚拟机
|
|
|
*/
|
|
|
- private void setJvmInfo() throws UnknownHostException
|
|
|
- {
|
|
|
+ private void setJvmInfo() throws UnknownHostException {
|
|
|
Properties props = System.getProperties();
|
|
|
jvm.setTotal(Runtime.getRuntime().totalMemory());
|
|
|
jvm.setMax(Runtime.getRuntime().maxMemory());
|
|
|
@@ -183,15 +136,19 @@ public class Server
|
|
|
/**
|
|
|
* 设置磁盘信息
|
|
|
*/
|
|
|
- private void setSysFiles(OperatingSystem os)
|
|
|
- {
|
|
|
+ private void setSysFiles(OperatingSystem os) {
|
|
|
FileSystem fileSystem = os.getFileSystem();
|
|
|
List<OSFileStore> fsArray = fileSystem.getFileStores();
|
|
|
- for (OSFileStore fs : fsArray)
|
|
|
- {
|
|
|
+ BigDecimal hddTotal = BigDecimal.ZERO;
|
|
|
+ BigDecimal hddUsed = BigDecimal.ZERO;
|
|
|
+ BigDecimal hddFree = BigDecimal.ZERO;
|
|
|
+ for (OSFileStore fs : fsArray) {
|
|
|
long free = fs.getUsableSpace();
|
|
|
long total = fs.getTotalSpace();
|
|
|
long used = total - free;
|
|
|
+ hddTotal = hddTotal.add(BigDecimal.valueOf(total));
|
|
|
+ hddUsed = hddUsed.add(BigDecimal.valueOf(used));
|
|
|
+ hddFree = hddFree.add(BigDecimal.valueOf(free));
|
|
|
SysFile sysFile = new SysFile();
|
|
|
sysFile.setDirName(fs.getMount());
|
|
|
sysFile.setSysTypeName(fs.getType());
|
|
|
@@ -202,35 +159,34 @@ public class Server
|
|
|
sysFile.setUsage(Arith.mul(Arith.div(used, total, 4), 100));
|
|
|
sysFiles.add(sysFile);
|
|
|
}
|
|
|
+
|
|
|
+ try {
|
|
|
+ hddUsed = hddUsed.multiply(BigDecimal.valueOf(100)).divide(hddTotal, 2, RoundingMode.HALF_UP);
|
|
|
+ hdd.setUsed(hddUsed.doubleValue());
|
|
|
+ hdd.setFree(convertFileSize(hddFree.longValue()));
|
|
|
+ } catch (Exception ignored) {
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 字节转换
|
|
|
- *
|
|
|
+ *
|
|
|
* @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)
|
|
|
- {
|
|
|
+ if (size >= gb) {
|
|
|
return String.format("%.1f GB", (float) size / gb);
|
|
|
- }
|
|
|
- else if (size >= mb)
|
|
|
- {
|
|
|
+ } else if (size >= mb) {
|
|
|
float f = (float) size / mb;
|
|
|
return String.format(f > 100 ? "%.0f MB" : "%.1f MB", f);
|
|
|
- }
|
|
|
- else if (size >= kb)
|
|
|
- {
|
|
|
+ } else if (size >= kb) {
|
|
|
float f = (float) size / kb;
|
|
|
return String.format(f > 100 ? "%.0f KB" : "%.1f KB", f);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
+ } else {
|
|
|
return String.format("%d B", size);
|
|
|
}
|
|
|
}
|