修改采集延迟时间,调整为整分启动

This commit is contained in:
qiminbao
2025-09-08 13:35:51 +08:00
parent 97b935e6f4
commit 846bee9f6b
2 changed files with 55 additions and 12 deletions
@@ -33,30 +33,31 @@ public class AppInitializer implements CommandLineRunner {
dynamicTaskService.scheduleTask("heartbeat",
businessTasks::heartbeatTask, 5000, 30000);
long milli = AgentUtil.getMillisToNextMinute() + 60000;
// 每300秒执行CPU信息采集任务
AssertLog.info("初始化启动CPU信息采集定时任务 - 延迟: {}ms, 间隔: {}ms", 25000, 300000);
AssertLog.info("初始化启动CPU信息采集定时任务 - 延迟: {}ms, 间隔: {}ms", milli, 300000);
dynamicTaskService.scheduleTask("cpu",
businessTasks::cpuTask, 25000, 300000); // 25秒后开始,每300秒执行
businessTasks::cpuTask, milli, 300000); // 25秒后开始,每300秒执行
// 每300秒执行磁盘信息采集任务
AssertLog.info("初始化启动磁盘信息采集定时任务 - 延迟: {}ms, 间隔: {}ms", 35000, 300000);
AssertLog.info("初始化启动磁盘信息采集定时任务 - 延迟: {}ms, 间隔: {}ms", milli, 300000);
dynamicTaskService.scheduleTask("disk",
businessTasks::diskTask, 35000, 300000); // 35秒后开始,每300秒执行
businessTasks::diskTask, milli, 300000); // 35秒后开始,每300秒执行
// 每300秒执行系统信息采集任务
AssertLog.info("初始化启动系统信息采集定时任务 - 延迟: {}ms, 间隔: {}ms", 40000, 300000);
AssertLog.info("初始化启动系统信息采集定时任务 - 延迟: {}ms, 间隔: {}ms", milli, 300000);
dynamicTaskService.scheduleTask("system",
businessTasks::systemTask, 40000, 300000); // 40秒后开始,每300秒执行
businessTasks::systemTask, milli, 300000); // 40秒后开始,每300秒执行
// 每300秒执行容器信息采集任务
AssertLog.info("初始化启动容器信息采集定时任务 - 延迟: {}ms, 间隔: {}ms", 45000, 300000);
AssertLog.info("初始化启动容器信息采集定时任务 - 延迟: {}ms, 间隔: {}ms", milli, 300000);
dynamicTaskService.scheduleTask("docker",
businessTasks::dockerTask, 45000, 300000); // 45秒后开始,每300秒执行
businessTasks::dockerTask, milli, 300000); // 45秒后开始,每300秒执行
// 每300秒执行内存信息采集任务
AssertLog.info("初始化启动内存信息采集定时任务 - 延迟: {}ms, 间隔: {}ms", 55000, 300000);
AssertLog.info("初始化启动内存信息采集定时任务 - 延迟: {}ms, 间隔: {}ms", milli, 300000);
dynamicTaskService.scheduleTask("memory",
businessTasks::memoryTask, 55000, 300000); // 55秒后开始,每300秒执行
businessTasks::memoryTask, milli, 300000); // 55秒后开始,每300秒执行
//获取当前时间距离下一个“分钟为 0 或 5”的时间点还差多少毫秒
@@ -67,9 +68,9 @@ public class AppInitializer implements CommandLineRunner {
businessTasks::netTask, millis, 300000); // 65秒后开始,每300秒执行
// 每300秒执行挂载信息采集任务
AssertLog.info("初始化启动挂载信息采集定时任务 - 延迟: {}ms, 间隔: {}ms", 75000, 300000);
AssertLog.info("初始化启动挂载信息采集定时任务 - 延迟: {}ms, 间隔: {}ms", milli, 300000);
dynamicTaskService.scheduleTask("point",
businessTasks::pointTask, 75000, 300000); // 75秒后开始,每300秒执行
businessTasks::pointTask, milli, 300000); // 75秒后开始,每300秒执行
// 每300秒执行交换机信息采集任务
AssertLog.info("初始化启动交换机信息采集定时任务 - 延迟: {}ms, 间隔: {}ms", millis, 300000);
@@ -131,4 +131,46 @@ public class AgentUtil {
return ChronoUnit.MILLIS.between(now, nextTime);
}
/**
* 获取距离下一个分钟整点的毫秒数
*/
public static long getMillisToNextMinute() {
LocalDateTime now = LocalDateTime.now();
// 获取下一个分钟整点时间
LocalDateTime nextMinute = now
.truncatedTo(ChronoUnit.MINUTES) // 截断到当前分钟
.plusMinutes(1); // 加1分钟
// 计算时间差(毫秒)
return ChronoUnit.MILLIS.between(now, nextMinute);
}
/**
* 获取距离下一个指定分钟整点的毫秒数
*/
public static long getMillisToNextMinuteInterval(int intervalMinutes) {
if (intervalMinutes <= 0) {
throw new IllegalArgumentException("Interval must be positive");
}
LocalDateTime now = LocalDateTime.now();
// 计算当前分钟在间隔中的位置
int currentMinute = now.getMinute();
int remainder = currentMinute % intervalMinutes;
// 计算需要增加的分钟数
int minutesToAdd = remainder == 0 ? intervalMinutes : intervalMinutes - remainder;
// 获取下一个间隔整点时间
LocalDateTime nextInterval = now
.truncatedTo(ChronoUnit.MINUTES) // 截断到当前分钟
.plusMinutes(minutesToAdd) // 增加到下一个整点
.withSecond(0) // 秒设为0
.withNano(0); // 纳秒设为0
return ChronoUnit.MILLIS.between(now, nextInterval);
}
}