[ agent ] [ status ] - accomplish agent status - 2

This commit is contained in:
zeaslity
2023-01-04 17:21:57 +08:00
parent 69eb330f2f
commit 3326196ebc
7 changed files with 75 additions and 23 deletions

View File

@@ -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<NetworkIF> networkInfo;
OperatingSystem osInfo;
}

View File

@@ -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;
@@ -73,6 +71,8 @@ public class AgentStatusCollector {
/* Network */
agentStatus.setNetworkInfo(hardware.getNetworkIFs(false));
/* operating system info */
agentStatus.setOsInfo(os);
/* Time */
agentStatus.setTime(TimeUtils.currentTimeString());

View File

@@ -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总的使用率
* CPU核心数
* */
private Integer coreTotal;
/**
* 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);
}
/**

View File

@@ -1,4 +1,4 @@
package io.wdd.agent.status.hardware.cpu;
package io.wdd.agent.status.hardware;
import lombok.AllArgsConstructor;
import lombok.Data;

View File

@@ -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;

View File

@@ -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<NetworkInfo> mapFromNetworkIFS(List<NetworkIF> networkIFList){
return networkIFList.stream().map(
networkIF -> NetworkInfo.builder()
.build()
).collect(Collectors.toList());
}
}

View File

@@ -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;