diff --git a/agent/pom.xml b/agent/pom.xml
index 36215b7..93bc353 100644
--- a/agent/pom.xml
+++ b/agent/pom.xml
@@ -39,14 +39,6 @@
-
-
- com.github.oshi
- oshi-core-java11
- 6.4.0
-
-
-
diff --git a/agent/src/main/java/io/wdd/agent/status/AgentStatusCollector.java b/agent/src/main/java/io/wdd/agent/status/AgentStatusCollector.java
index 7879d42..5cf4663 100644
--- a/agent/src/main/java/io/wdd/agent/status/AgentStatusCollector.java
+++ b/agent/src/main/java/io/wdd/agent/status/AgentStatusCollector.java
@@ -4,8 +4,12 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.wdd.agent.config.beans.init.AgentServerInfo;
import io.wdd.agent.config.utils.TimeUtils;
-import io.wdd.agent.status.hardware.CpuInfo;
-import io.wdd.agent.status.hardware.MemoryInfo;
+import io.wdd.common.beans.status.CpuInfo;
+import io.wdd.common.beans.status.DiskInfo;
+import io.wdd.common.beans.status.MemoryInfo;
+import io.wdd.common.beans.status.NetworkInfo;
+import io.wdd.common.beans.status.AgentStatus;
+import io.wdd.common.utils.FormatUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.connection.stream.StreamRecords;
import org.springframework.data.redis.connection.stream.StringRecord;
@@ -13,6 +17,7 @@ import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import oshi.SystemInfo;
+import oshi.hardware.HWDiskStore;
import oshi.hardware.HardwareAbstractionLayer;
import oshi.software.os.OperatingSystem;
@@ -20,6 +25,7 @@ import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
@Service
@Slf4j
@@ -61,13 +67,19 @@ public class AgentStatusCollector {
agentStatus.setCpuInfo(new CpuInfo(hardware.getProcessor(), 1000));
/* Memory */
- agentStatus.setMemoryInfo(new MemoryInfo().build(hardware.getMemory()));
+ agentStatus.setMemoryInfo(
+ MemoryInfo.build(hardware.getMemory())
+ );
/* Storage */
- agentStatus.setDiskStoreInfo(hardware.getDiskStores());
+ agentStatus.setDiskStoreInfo(
+ DiskInfo.mapFromDiskStore(hardware.getDiskStores())
+ );
/* Network */
- agentStatus.setNetworkInfo(hardware.getNetworkIFs(false));
+ agentStatus.setNetworkInfo(
+ NetworkInfo.mapFromNetworkIFS(hardware.getNetworkIFs(false))
+ );
/* operating system info */
agentStatus.setOsInfo(os);
@@ -78,10 +90,21 @@ public class AgentStatusCollector {
return agentStatus;
}
+ /**
+ * when server first time boot up
+ * the server info are not collected completely
+ * this will be executed to update or complete the octopus agent server info
+ */
+ @Scheduled(initialDelay = 180000)
+ public void updateAgentServerInfo(){
- // agent boot up 60s then start to report its status
+
+
+ }
+
+ // agent boot up 120s then start to report its status
// at the fix rate of 15s
- @Scheduled(initialDelay = 60000, fixedRate = 5000)
+ @Scheduled(initialDelay = 60000, fixedRate = 15000)
public void sendAgentStatusToRedis() {
try {
@@ -101,5 +124,4 @@ public class AgentStatusCollector {
}
-
}
diff --git a/agent/src/main/java/io/wdd/agent/status/hardware/NetworkInfo.java b/agent/src/main/java/io/wdd/agent/status/hardware/NetworkInfo.java
deleted file mode 100644
index 2a34f1d..0000000
--- a/agent/src/main/java/io/wdd/agent/status/hardware/NetworkInfo.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package io.wdd.agent.status.hardware;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import lombok.experimental.SuperBuilder;
-import oshi.hardware.NetworkIF;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-@SuperBuilder(toBuilder = true)
-public class NetworkInfo {
-
-
- public static List mapFromNetworkIFS(List networkIFList){
-
- return networkIFList.stream().map(
- networkIF -> NetworkInfo.builder()
- .build()
- ).collect(Collectors.toList());
- }
-}
diff --git a/common/pom.xml b/common/pom.xml
index 5060808..e660761 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -19,6 +19,18 @@
11
+
+
+
+
+ com.github.oshi
+ oshi-core-java11
+ 6.4.0
+
+
+
+
+
diff --git a/agent/src/main/java/io/wdd/agent/status/AgentStatus.java b/common/src/main/java/io/wdd/common/beans/status/AgentStatus.java
similarity index 63%
rename from agent/src/main/java/io/wdd/agent/status/AgentStatus.java
rename to common/src/main/java/io/wdd/common/beans/status/AgentStatus.java
index b8e012b..16e1e61 100644
--- a/agent/src/main/java/io/wdd/agent/status/AgentStatus.java
+++ b/common/src/main/java/io/wdd/common/beans/status/AgentStatus.java
@@ -1,14 +1,10 @@
-package io.wdd.agent.status;
+package io.wdd.common.beans.status;
-import io.wdd.agent.status.hardware.CpuInfo;
-import io.wdd.agent.status.hardware.MemoryInfo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
-import oshi.hardware.HWDiskStore;
-import oshi.hardware.NetworkIF;
import oshi.software.os.OperatingSystem;
import java.util.List;
@@ -30,9 +26,9 @@ public class AgentStatus {
MemoryInfo memoryInfo;
- List diskStoreInfo;
+ List diskStoreInfo;
- List networkInfo;
+ List networkInfo;
OperatingSystem osInfo;
diff --git a/agent/src/main/java/io/wdd/agent/status/hardware/CpuInfo.java b/common/src/main/java/io/wdd/common/beans/status/CpuInfo.java
similarity index 98%
rename from agent/src/main/java/io/wdd/agent/status/hardware/CpuInfo.java
rename to common/src/main/java/io/wdd/common/beans/status/CpuInfo.java
index 961f5a3..c2e4d55 100644
--- a/agent/src/main/java/io/wdd/agent/status/hardware/CpuInfo.java
+++ b/common/src/main/java/io/wdd/common/beans/status/CpuInfo.java
@@ -1,4 +1,4 @@
-package io.wdd.agent.status.hardware;
+package io.wdd.common.beans.status;
import lombok.AllArgsConstructor;
import lombok.Data;
diff --git a/agent/src/main/java/io/wdd/agent/status/hardware/CpuTicks.java b/common/src/main/java/io/wdd/common/beans/status/CpuTicks.java
similarity index 98%
rename from agent/src/main/java/io/wdd/agent/status/hardware/CpuTicks.java
rename to common/src/main/java/io/wdd/common/beans/status/CpuTicks.java
index 9d49680..6d4d587 100644
--- a/agent/src/main/java/io/wdd/agent/status/hardware/CpuTicks.java
+++ b/common/src/main/java/io/wdd/common/beans/status/CpuTicks.java
@@ -1,4 +1,4 @@
-package io.wdd.agent.status.hardware;
+package io.wdd.common.beans.status;
import lombok.AllArgsConstructor;
import lombok.Data;
diff --git a/common/src/main/java/io/wdd/common/beans/status/DiskInfo.java b/common/src/main/java/io/wdd/common/beans/status/DiskInfo.java
new file mode 100644
index 0000000..085e0a2
--- /dev/null
+++ b/common/src/main/java/io/wdd/common/beans/status/DiskInfo.java
@@ -0,0 +1,71 @@
+package io.wdd.common.beans.status;
+
+import io.wdd.common.utils.FormatUtils;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+import oshi.hardware.HWDiskStore;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@SuperBuilder(toBuilder = true)
+public class DiskInfo {
+
+ String name;
+
+ String model;
+
+ String serial;
+
+ String size;
+
+
+ private List partitionInfoList;
+
+
+ @Data
+ @AllArgsConstructor
+ @NoArgsConstructor
+ @SuperBuilder(toBuilder = true)
+ private static class PartitionInfo{
+
+ String path;
+
+ String type;
+
+ String size;
+
+ String mountPoint;
+
+ }
+
+ public static List mapFromDiskStore(List hwDiskStoreList){
+
+ return hwDiskStoreList.stream().map(
+ hwDiskStore -> DiskInfo.builder()
+ .name(hwDiskStore.getName())
+ .model(hwDiskStore.getModel())
+ .serial(hwDiskStore.getSerial())
+ .size(FormatUtils.formatData(hwDiskStore.getSize()))
+ .partitionInfoList(
+ // partition should also be got from stream
+ hwDiskStore.getPartitions().stream().map(partition -> DiskInfo.PartitionInfo.builder()
+ .path(partition.getIdentification())
+ .size(FormatUtils.formatData(partition.getSize()))
+ .type(partition.getType())
+ .mountPoint(partition.getMountPoint())
+ .build()
+ ).collect(Collectors.toList())
+ )
+ .build()
+ ).collect(Collectors.toList());
+
+ }
+
+
+}
diff --git a/agent/src/main/java/io/wdd/agent/status/hardware/MemoryInfo.java b/common/src/main/java/io/wdd/common/beans/status/MemoryInfo.java
similarity index 89%
rename from agent/src/main/java/io/wdd/agent/status/hardware/MemoryInfo.java
rename to common/src/main/java/io/wdd/common/beans/status/MemoryInfo.java
index d7f2248..528e6ea 100644
--- a/agent/src/main/java/io/wdd/agent/status/hardware/MemoryInfo.java
+++ b/common/src/main/java/io/wdd/common/beans/status/MemoryInfo.java
@@ -1,6 +1,6 @@
-package io.wdd.agent.status.hardware;
+package io.wdd.common.beans.status;
-import io.wdd.agent.status.hardware.config.FormatUtils;
+import io.wdd.common.utils.FormatUtils;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@@ -30,7 +30,7 @@ public class MemoryInfo {
String swapUsage;
- public MemoryInfo build(GlobalMemory memory) {
+ public static MemoryInfo build(GlobalMemory memory) {
VirtualMemory virtualMemory = memory.getVirtualMemory();
return MemoryInfo.builder()
diff --git a/common/src/main/java/io/wdd/common/beans/status/NetworkInfo.java b/common/src/main/java/io/wdd/common/beans/status/NetworkInfo.java
new file mode 100644
index 0000000..04b5e7d
--- /dev/null
+++ b/common/src/main/java/io/wdd/common/beans/status/NetworkInfo.java
@@ -0,0 +1,60 @@
+package io.wdd.common.beans.status;
+
+
+import io.wdd.common.utils.FormatUtils;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+import oshi.hardware.NetworkIF;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@SuperBuilder(toBuilder = true)
+public class NetworkInfo {
+
+ private String name;
+ private String displayName;
+
+ private String macAddr;
+
+ private String mtu;
+
+ private String[] ipv4Addr;
+ private String[] ipv6Addr;
+
+ private String trafficRecv;
+
+ private String trafficSend;
+
+ public static List mapFromNetworkIFS(List networkIFList) {
+
+ return networkIFList.stream().map(networkIF -> NetworkInfo.builder().name(networkIF.getName()).displayName(networkIF.getDisplayName()).mtu(String.valueOf(networkIF.getMTU())).macAddr(networkIF.getMacaddr()).ipv4Addr(generateIPDICRFromNetworkIFList(networkIF, 4)).ipv6Addr(generateIPDICRFromNetworkIFList(networkIF, 6)).trafficSend(FormatUtils.formatData(networkIF.getBytesSent())).trafficRecv(FormatUtils.formatData(networkIF.getBytesRecv())).build()).collect(Collectors.toList());
+ }
+
+ private static String[] generateIPDICRFromNetworkIFList(NetworkIF networkIF, int Ipv4OrIpv6) {
+
+ String[] iPAddr;
+ Short[] subnetMasks;
+
+ if (Ipv4OrIpv6 == 4) {
+ iPAddr = networkIF.getIPv4addr();
+ subnetMasks = networkIF.getSubnetMasks();
+ } else {
+ iPAddr = networkIF.getIPv6addr();
+ subnetMasks = networkIF.getPrefixLengths();
+ }
+
+ String[] result = new String[iPAddr.length];
+ for (int index = 0; index < iPAddr.length; index++) {
+ result[index] = iPAddr[index] + "/" + subnetMasks[index];
+ }
+
+ return result;
+ }
+}
diff --git a/agent/src/main/java/io/wdd/agent/status/hardware/config/DataUnit.java b/common/src/main/java/io/wdd/common/utils/DataUnit.java
similarity index 96%
rename from agent/src/main/java/io/wdd/agent/status/hardware/config/DataUnit.java
rename to common/src/main/java/io/wdd/common/utils/DataUnit.java
index 777e57d..c535c3e 100644
--- a/agent/src/main/java/io/wdd/agent/status/hardware/config/DataUnit.java
+++ b/common/src/main/java/io/wdd/common/utils/DataUnit.java
@@ -1,4 +1,4 @@
-package io.wdd.agent.status.hardware.config;
+package io.wdd.common.utils;
import org.springframework.util.unit.DataSize;
diff --git a/agent/src/main/java/io/wdd/agent/status/hardware/config/FormatUtils.java b/common/src/main/java/io/wdd/common/utils/FormatUtils.java
similarity index 94%
rename from agent/src/main/java/io/wdd/agent/status/hardware/config/FormatUtils.java
rename to common/src/main/java/io/wdd/common/utils/FormatUtils.java
index 5081041..916d134 100644
--- a/agent/src/main/java/io/wdd/agent/status/hardware/config/FormatUtils.java
+++ b/common/src/main/java/io/wdd/common/utils/FormatUtils.java
@@ -1,4 +1,4 @@
-package io.wdd.agent.status.hardware.config;
+package io.wdd.common.utils;
import java.text.DecimalFormat;
diff --git a/pom.xml b/pom.xml
index a50c600..239a4aa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,10 +35,10 @@
-
+
@@ -67,10 +67,10 @@
${alibaba-cloud.version}
-
+
org.springframework.boot
@@ -126,15 +126,15 @@
- org.springframework.boot
- spring-boot-devtools
- runtime
+ org.projectlombok
+ lombok
true
- org.projectlombok
- lombok
+ org.springframework.boot
+ spring-boot-devtools
+ runtime
true
@@ -147,7 +147,7 @@
-
+