[ agent ] [ status ] - accomplish agent status - 2
This commit is contained in:
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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());
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.wdd.agent.status.hardware.cpu;
|
||||
package io.wdd.agent.status.hardware;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
@@ -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;
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user