diff --git a/src/main/java/com/tongran/agent/client/core/vo/DiskVO.java b/src/main/java/com/tongran/agent/client/core/vo/DiskVO.java index 4e272c7..2b9bea8 100644 --- a/src/main/java/com/tongran/agent/client/core/vo/DiskVO.java +++ b/src/main/java/com/tongran/agent/client/core/vo/DiskVO.java @@ -49,6 +49,9 @@ public class DiskVO implements Serializable { private String type; @Schema(description = "已用空间") private long usedSpace; + /** 健康状态 0 不健康,1健康 */ + @Schema(description = "健康状态") + private long healthStatus; } diff --git a/src/main/java/com/tongran/agent/client/scheduler/task/SpecificTimeTaskService.java b/src/main/java/com/tongran/agent/client/scheduler/task/SpecificTimeTaskService.java index 0033791..d8b3feb 100644 --- a/src/main/java/com/tongran/agent/client/scheduler/task/SpecificTimeTaskService.java +++ b/src/main/java/com/tongran/agent/client/scheduler/task/SpecificTimeTaskService.java @@ -313,9 +313,13 @@ public class SpecificTimeTaskService { */ private List mergeIpCounts(List allIpCountList) { Map ipCountMap = new HashMap<>(); - + final String excludedIp = "223.5.5.5"; for (IpCount ipCount : allIpCountList) { String ip = ipCount.getIp(); + // 跳过要排除的IP + if (excludedIp.equals(ip)) { + continue; + } Double count = ipCount.getCount(); if (ipCountMap.containsKey(ip)) { diff --git a/src/main/java/com/tongran/agent/client/service/impl/DiskServiceImpl.java b/src/main/java/com/tongran/agent/client/service/impl/DiskServiceImpl.java index 9f4c98f..17fadd6 100644 --- a/src/main/java/com/tongran/agent/client/service/impl/DiskServiceImpl.java +++ b/src/main/java/com/tongran/agent/client/service/impl/DiskServiceImpl.java @@ -31,6 +31,13 @@ public class DiskServiceImpl implements DiskService { // 处理磁盘名称:去掉/dev/前缀 String diskFullName = disk.getName(); + // 获取磁盘是否健康 + boolean isHealth = isDiskHealthy(diskFullName); + if(isHealth){ + diskVO.setHealthStatus(1); + }else{ + diskVO.setHealthStatus(0); + } String diskName = diskFullName.replace("/dev/", ""); diskVO.setName(diskName); // 保持原样存储 diskVO.setSerial(disk.getSerial()); // 序列号 @@ -218,6 +225,26 @@ public class DiskServiceImpl implements DiskService { } return partitionToDiskMap; } + + public boolean isDiskHealthy(String diskDevice) { + try { + Process process = new ProcessBuilder("smartctl", "-H", diskDevice) + .redirectErrorStream(true) + .start(); + + try (BufferedReader reader = new BufferedReader( + new InputStreamReader(process.getInputStream()))) { + + return reader.lines() + .anyMatch(line -> line.contains("PASSED") || line.contains("OK")) + && process.waitFor() == 0; + } + + } catch (Exception e) { + return false; + } + } + @Override public List pointList(long timestamp) { List list = new ArrayList<>();