diff --git a/itbaima-monitor-client/pom.xml b/itbaima-monitor-client/pom.xml
index 41aadc0..fedb25e 100644
--- a/itbaima-monitor-client/pom.xml
+++ b/itbaima-monitor-client/pom.xml
@@ -37,6 +37,11 @@
fastjson2
2.0.37
+
+ com.github.oshi
+ oshi-core
+ 6.4.0
+
diff --git a/itbaima-monitor-client/src/main/java/com/example/config/ServerConfiguration.java b/itbaima-monitor-client/src/main/java/com/example/config/ServerConfiguration.java
index 9a03d34..df7fa73 100644
--- a/itbaima-monitor-client/src/main/java/com/example/config/ServerConfiguration.java
+++ b/itbaima-monitor-client/src/main/java/com/example/config/ServerConfiguration.java
@@ -2,6 +2,7 @@ package com.example.config;
import com.alibaba.fastjson2.JSONObject;
import com.example.entity.ConnectionConfig;
+import com.example.utils.MonitorUtils;
import com.example.utils.NetUtils;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
@@ -22,12 +23,16 @@ public class ServerConfiguration {
@Resource
NetUtils net;
+ @Resource
+ MonitorUtils monitor;
+
@Bean
ConnectionConfig connectionConfig() {
log.info("正在加载服务端连接配置...");
ConnectionConfig config = this.readConfigurationFromFile();
if(config == null)
config = this.registerToServer();
+ System.out.println(monitor.monitorBaseDetail());
return config;
}
diff --git a/itbaima-monitor-client/src/main/java/com/example/entity/BaseDetail.java b/itbaima-monitor-client/src/main/java/com/example/entity/BaseDetail.java
new file mode 100644
index 0000000..79f4b56
--- /dev/null
+++ b/itbaima-monitor-client/src/main/java/com/example/entity/BaseDetail.java
@@ -0,0 +1,18 @@
+package com.example.entity;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+public class BaseDetail {
+ String osArch;
+ String osName;
+ String osVersion;
+ int osBit;
+ String cpuName;
+ int cpuCore;
+ double memory;
+ double disk;
+ String ip;
+}
diff --git a/itbaima-monitor-client/src/main/java/com/example/utils/MonitorUtils.java b/itbaima-monitor-client/src/main/java/com/example/utils/MonitorUtils.java
new file mode 100644
index 0000000..28292ce
--- /dev/null
+++ b/itbaima-monitor-client/src/main/java/com/example/utils/MonitorUtils.java
@@ -0,0 +1,59 @@
+package com.example.utils;
+
+import com.example.entity.BaseDetail;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+import oshi.SystemInfo;
+import oshi.hardware.HardwareAbstractionLayer;
+import oshi.hardware.NetworkIF;
+import oshi.software.os.OperatingSystem;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.NetworkInterface;
+import java.util.Arrays;
+import java.util.Objects;
+import java.util.Properties;
+
+@Slf4j
+@Component
+public class MonitorUtils {
+
+ private final SystemInfo info = new SystemInfo();
+ private final Properties properties = System.getProperties();
+
+ public BaseDetail monitorBaseDetail() {
+ OperatingSystem os = info.getOperatingSystem();
+ HardwareAbstractionLayer hardware = info.getHardware();
+ double memory = hardware.getMemory().getTotal() / 1024.0 / 1024 /1024;
+ double diskSize = Arrays.stream(File.listRoots()).mapToLong(File::getTotalSpace).sum() / 1024.0 / 1024 / 1024;
+ String ip = Objects.requireNonNull(this.findNetworkInterface(hardware)).getIPv4addr()[0];
+ return new BaseDetail()
+ .setOsArch(properties.getProperty("os.arch"))
+ .setOsName(os.getFamily())
+ .setOsVersion(os.getVersionInfo().getVersion())
+ .setOsBit(os.getBitness())
+ .setCpuName(hardware.getProcessor().getProcessorIdentifier().getName())
+ .setCpuCore(hardware.getProcessor().getLogicalProcessorCount())
+ .setMemory(memory)
+ .setDisk(diskSize)
+ .setIp(ip);
+ }
+
+ private NetworkIF findNetworkInterface(HardwareAbstractionLayer hardware) {
+ try {
+ for (NetworkIF network : hardware.getNetworkIFs()) {
+ String[] ipv4Addr = network.getIPv4addr();
+ NetworkInterface ni = network.queryNetworkInterface();
+ if(!ni.isLoopback() && !ni.isPointToPoint() && ni.isUp() && !ni.isVirtual()
+ && (ni.getName().startsWith("eth") || ni.getName().startsWith("en"))
+ && ipv4Addr.length > 0) {
+ return network;
+ }
+ }
+ } catch (IOException e) {
+ log.error("读取网络接口信息时出错", e);
+ }
+ return null;
+ }
+}