diff --git a/agent/src/main/java/io/wdd/agent/status/redisReporter/AgentStatus.java b/agent/src/main/java/io/wdd/agent/status/AgentStatus.java similarity index 73% rename from agent/src/main/java/io/wdd/agent/status/redisReporter/AgentStatus.java rename to agent/src/main/java/io/wdd/agent/status/AgentStatus.java index 2d75ad6..b8e012b 100644 --- a/agent/src/main/java/io/wdd/agent/status/redisReporter/AgentStatus.java +++ b/agent/src/main/java/io/wdd/agent/status/AgentStatus.java @@ -1,14 +1,15 @@ -package io.wdd.agent.status.redisReporter; +package io.wdd.agent.status; -import io.wdd.agent.status.hardware.cpu.CpuInfo; -import io.wdd.agent.status.hardware.memory.MemoryInfo; +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; @@ -33,4 +34,6 @@ public class AgentStatus { List networkInfo; + OperatingSystem osInfo; + } diff --git a/agent/src/main/java/io/wdd/agent/status/hardware/AgentStatusCollector.java b/agent/src/main/java/io/wdd/agent/status/AgentStatusCollector.java similarity index 90% rename from agent/src/main/java/io/wdd/agent/status/hardware/AgentStatusCollector.java rename to agent/src/main/java/io/wdd/agent/status/AgentStatusCollector.java index 5e29be4..2cb7359 100644 --- a/agent/src/main/java/io/wdd/agent/status/hardware/AgentStatusCollector.java +++ b/agent/src/main/java/io/wdd/agent/status/AgentStatusCollector.java @@ -1,14 +1,12 @@ -package io.wdd.agent.status.hardware; +package io.wdd.agent.status; 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.cpu.CpuInfo; -import io.wdd.agent.status.hardware.memory.MemoryInfo; -import io.wdd.agent.status.redisReporter.AgentStatus; +import io.wdd.agent.status.hardware.CpuInfo; +import io.wdd.agent.status.hardware.MemoryInfo; import lombok.extern.slf4j.Slf4j; -import org.apache.catalina.util.ServerInfo; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import oshi.SystemInfo; @@ -72,7 +70,9 @@ public class AgentStatusCollector { /* Network */ agentStatus.setNetworkInfo(hardware.getNetworkIFs(false)); - + + /* operating system info */ + agentStatus.setOsInfo(os); /* Time */ agentStatus.setTime(TimeUtils.currentTimeString()); diff --git a/agent/src/main/java/io/wdd/agent/status/hardware/cpu/CpuInfo.java b/agent/src/main/java/io/wdd/agent/status/hardware/CpuInfo.java similarity index 68% rename from agent/src/main/java/io/wdd/agent/status/hardware/cpu/CpuInfo.java rename to agent/src/main/java/io/wdd/agent/status/hardware/CpuInfo.java index 65c6179..961f5a3 100644 --- a/agent/src/main/java/io/wdd/agent/status/hardware/cpu/CpuInfo.java +++ b/agent/src/main/java/io/wdd/agent/status/hardware/CpuInfo.java @@ -1,4 +1,4 @@ -package io.wdd.agent.status.hardware.cpu; +package io.wdd.agent.status.hardware; import lombok.AllArgsConstructor; import lombok.Data; @@ -16,24 +16,29 @@ public class CpuInfo { private static final DecimalFormat LOAD_FORMAT = new DecimalFormat("#.00"); /** - * CPU核心数 + * CPU总线程 */ - private Integer cpuNum; + private Integer cpuTotal; + + /** + * CPU核心数 + * */ + private Integer coreTotal; /** - * CPU总的使用率 + * CPU总数 计算方式理论上为 cpuTotal * 100 */ - private double toTal; + private double cpuUsageTotol; /** * CPU系统使用率 */ - private double sys; + private double systemCpuUsage; /** * CPU用户使用率 */ - private double user; + private double userCpuUsage; /** * CPU当前等待率 @@ -50,11 +55,16 @@ public class CpuInfo { */ private String cpuModel; + private double[] cpuLoadAverage; + + private double[] systemLoadAverage; + /** * CPU型号信息 */ private CpuTicks ticks; + public CpuInfo(CentralProcessor processor, long waitingTime){ this.init(processor, waitingTime); } @@ -72,15 +82,27 @@ public class CpuInfo { final CpuTicks ticks = new CpuTicks(processor, waitingTime); this.ticks = ticks; - this.cpuNum = processor.getLogicalProcessorCount(); + this.cpuTotal = processor.getLogicalProcessorCount(); + this.coreTotal = processor.getPhysicalProcessorCount(); + this.cpuModel = processor.toString(); final long totalCpu = ticks.totalCpu(); - this.toTal = totalCpu; - this.sys = formatDouble(ticks.cSys, totalCpu); - this.user = formatDouble(ticks.user, totalCpu); + this.cpuUsageTotol = totalCpu; + + this.systemCpuUsage = formatDouble(ticks.cSys, totalCpu); + this.userCpuUsage = formatDouble(ticks.user, totalCpu); + this.wait = formatDouble(ticks.ioWait, totalCpu); this.free = formatDouble(ticks.idle, totalCpu); + + + // system load average + this.systemLoadAverage = processor.getSystemLoadAverage(3); + + // cpu load average + this.cpuLoadAverage = processor.getProcessorCpuLoad(waitingTime); + } /** diff --git a/agent/src/main/java/io/wdd/agent/status/hardware/cpu/CpuTicks.java b/agent/src/main/java/io/wdd/agent/status/hardware/CpuTicks.java similarity index 98% rename from agent/src/main/java/io/wdd/agent/status/hardware/cpu/CpuTicks.java rename to agent/src/main/java/io/wdd/agent/status/hardware/CpuTicks.java index 38029c9..9d49680 100644 --- a/agent/src/main/java/io/wdd/agent/status/hardware/cpu/CpuTicks.java +++ b/agent/src/main/java/io/wdd/agent/status/hardware/CpuTicks.java @@ -1,4 +1,4 @@ -package io.wdd.agent.status.hardware.cpu; +package io.wdd.agent.status.hardware; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/agent/src/main/java/io/wdd/agent/status/hardware/memory/MemoryInfo.java b/agent/src/main/java/io/wdd/agent/status/hardware/MemoryInfo.java similarity index 96% rename from agent/src/main/java/io/wdd/agent/status/hardware/memory/MemoryInfo.java rename to agent/src/main/java/io/wdd/agent/status/hardware/MemoryInfo.java index e515ab0..d7f2248 100644 --- a/agent/src/main/java/io/wdd/agent/status/hardware/memory/MemoryInfo.java +++ b/agent/src/main/java/io/wdd/agent/status/hardware/MemoryInfo.java @@ -1,4 +1,4 @@ -package io.wdd.agent.status.hardware.memory; +package io.wdd.agent.status.hardware; import io.wdd.agent.status.hardware.config.FormatUtils; import lombok.AllArgsConstructor; 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 new file mode 100644 index 0000000..2a34f1d --- /dev/null +++ b/agent/src/main/java/io/wdd/agent/status/hardware/NetworkInfo.java @@ -0,0 +1,27 @@ +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/agent/src/test/java/io/wdd/agent/OSHITest.java b/agent/src/test/java/io/wdd/agent/OSHITest.java index f2947cb..7fd464d 100644 --- a/agent/src/test/java/io/wdd/agent/OSHITest.java +++ b/agent/src/test/java/io/wdd/agent/OSHITest.java @@ -2,7 +2,7 @@ package io.wdd.agent; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import io.wdd.agent.status.hardware.AgentStatusCollector; +import io.wdd.agent.status.AgentStatusCollector; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import oshi.SystemInfo;