修改网卡、交换机采集延迟时间

This commit is contained in:
qiminbao
2025-09-04 16:56:59 +08:00
parent 436f80f4dd
commit a4ef3a9870
2 changed files with 36 additions and 4 deletions
@@ -1,5 +1,6 @@
package com.tongran.agentserver.scheduler.service;
import com.tongran.agentserver.utils.AgentUtil;
import com.tongran.agentserver.utils.AssertLog;
import org.springframework.boot.CommandLineRunner;
import org.springframework.context.annotation.Lazy;
@@ -57,10 +58,13 @@ public class AppInitializer implements CommandLineRunner {
dynamicTaskService.scheduleTask("memory",
businessTasks::memoryTask, 55000, 300000); // 55秒后开始,每300秒执行
//获取当前时间距离下一个“分钟为 0 或 5”的时间点还差多少秒
long seconds = AgentUtil.secondsToNext5Minute() * 1000;
// 每300秒执行网络信息采集任务
AssertLog.info("初始化启动网络信息采集定时任务 - 延迟: {}ms, 间隔: {}ms", 65000, 300000);
AssertLog.info("初始化启动网络信息采集定时任务 - 延迟: {}ms, 间隔: {}ms", seconds, 300000);
dynamicTaskService.scheduleTask("net",
businessTasks::netTask, 65000, 300000); // 65秒后开始,每300秒执行
businessTasks::netTask, seconds, 300000); // 65秒后开始,每300秒执行
// 每300秒执行挂载信息采集任务
AssertLog.info("初始化启动挂载信息采集定时任务 - 延迟: {}ms, 间隔: {}ms", 75000, 300000);
@@ -68,9 +72,9 @@ public class AppInitializer implements CommandLineRunner {
businessTasks::pointTask, 75000, 300000); // 75秒后开始,每300秒执行
// 每300秒执行交换机信息采集任务
AssertLog.info("初始化启动交换机信息采集定时任务 - 延迟: {}ms, 间隔: {}ms", 85000, 300000);
AssertLog.info("初始化启动交换机信息采集定时任务 - 延迟: {}ms, 间隔: {}ms", seconds, 300000);
dynamicTaskService.scheduleTask("switchBoard",
businessTasks::switchBoardTask, 85000, 300000); // 85秒后开始,每300秒执行
businessTasks::switchBoardTask, seconds, 300000); // 85秒后开始,每300秒执行
}
@@ -8,6 +8,8 @@ import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.Base64;
import java.util.Enumeration;
import java.util.List;
@@ -103,4 +105,30 @@ public class AgentUtil {
}
}
/**
* 获取当前时间距离下一个“分钟为 0 或 5”的时间点还差多少秒
* 例如:xx:00, xx:05, xx:10, ..., xx:55
*/
public static long secondsToNext5Minute() {
LocalDateTime now = LocalDateTime.now();
// 当前分钟
int minute = now.getMinute();
// 计算下一个 5 分钟整点(向上取整到 5 的倍数)
int nextMinute = ((minute / 5) + 1) * 5; // 例如:12 → 15, 17 → 20, 58 → 60
LocalDateTime nextTime;
if (nextMinute < 60) {
// 在当前小时内
nextTime = now.withMinute(nextMinute).withSecond(0).withNano(0);
} else {
// 跨小时,例如 10:58 → 11:00
nextTime = now.plusHours(1).withMinute(0).withSecond(0).withNano(0);
}
// 计算相差的秒数
return ChronoUnit.SECONDS.between(now, nextTime);
}
}