tcpdump探测ip剔除223.5.5.5。

磁盘增加磁盘健康状态采集。
This commit is contained in:
gaoyutao
2026-02-05 18:15:43 +08:00
parent 04a51bc201
commit 3e7c9ec5cf
3 changed files with 35 additions and 1 deletions
@@ -49,6 +49,9 @@ public class DiskVO implements Serializable {
private String type; private String type;
@Schema(description = "已用空间") @Schema(description = "已用空间")
private long usedSpace; private long usedSpace;
/** 健康状态 0 不健康,1健康 */
@Schema(description = "健康状态")
private long healthStatus;
} }
@@ -313,9 +313,13 @@ public class SpecificTimeTaskService {
*/ */
private List<IpCount> mergeIpCounts(List<IpCount> allIpCountList) { private List<IpCount> mergeIpCounts(List<IpCount> allIpCountList) {
Map<String, Double> ipCountMap = new HashMap<>(); Map<String, Double> ipCountMap = new HashMap<>();
final String excludedIp = "223.5.5.5";
for (IpCount ipCount : allIpCountList) { for (IpCount ipCount : allIpCountList) {
String ip = ipCount.getIp(); String ip = ipCount.getIp();
// 跳过要排除的IP
if (excludedIp.equals(ip)) {
continue;
}
Double count = ipCount.getCount(); Double count = ipCount.getCount();
if (ipCountMap.containsKey(ip)) { if (ipCountMap.containsKey(ip)) {
@@ -31,6 +31,13 @@ public class DiskServiceImpl implements DiskService {
// 处理磁盘名称:去掉/dev/前缀 // 处理磁盘名称:去掉/dev/前缀
String diskFullName = disk.getName(); String diskFullName = disk.getName();
// 获取磁盘是否健康
boolean isHealth = isDiskHealthy(diskFullName);
if(isHealth){
diskVO.setHealthStatus(1);
}else{
diskVO.setHealthStatus(0);
}
String diskName = diskFullName.replace("/dev/", ""); String diskName = diskFullName.replace("/dev/", "");
diskVO.setName(diskName); // 保持原样存储 diskVO.setName(diskName); // 保持原样存储
diskVO.setSerial(disk.getSerial()); // 序列号 diskVO.setSerial(disk.getSerial()); // 序列号
@@ -218,6 +225,26 @@ public class DiskServiceImpl implements DiskService {
} }
return partitionToDiskMap; 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 @Override
public List<PointVO> pointList(long timestamp) { public List<PointVO> pointList(long timestamp) {
List<PointVO> list = new ArrayList<>(); List<PointVO> list = new ArrayList<>();