|
@@ -2,6 +2,7 @@ package cn.reghao.autodop.dmaster.monitor.service;
|
|
|
|
|
|
|
|
import cn.reghao.autodop.common.http.DefaultWebRequest;
|
|
import cn.reghao.autodop.common.http.DefaultWebRequest;
|
|
|
import cn.reghao.autodop.common.http.WebRequest;
|
|
import cn.reghao.autodop.common.http.WebRequest;
|
|
|
|
|
+import cn.reghao.autodop.dmaster.DmasterApplication;
|
|
|
import cn.reghao.autodop.dmaster.machine.db.crud.MachineStatusCrudService;
|
|
import cn.reghao.autodop.dmaster.machine.db.crud.MachineStatusCrudService;
|
|
|
import cn.reghao.autodop.dmaster.app.repository.AppRunningRepository;
|
|
import cn.reghao.autodop.dmaster.app.repository.AppRunningRepository;
|
|
|
import cn.reghao.autodop.dmaster.monitor.entity.AppMonitor;
|
|
import cn.reghao.autodop.dmaster.monitor.entity.AppMonitor;
|
|
@@ -9,15 +10,16 @@ import cn.reghao.autodop.dmaster.monitor.entity.MachineMonitor;
|
|
|
import cn.reghao.autodop.dmaster.monitor.entity.MonitorJob;
|
|
import cn.reghao.autodop.dmaster.monitor.entity.MonitorJob;
|
|
|
import cn.reghao.autodop.dmaster.monitor.repository.AppMonitorRepository;
|
|
import cn.reghao.autodop.dmaster.monitor.repository.AppMonitorRepository;
|
|
|
import cn.reghao.autodop.dmaster.monitor.repository.MachineMonitorRepository;
|
|
import cn.reghao.autodop.dmaster.monitor.repository.MachineMonitorRepository;
|
|
|
-import cn.reghao.autodop.dmaster.monitor.service.job.machine.MachineHeartbeatCheckJob;
|
|
|
|
|
import cn.reghao.autodop.dmaster.notification.entity.NotifyGroup;
|
|
import cn.reghao.autodop.dmaster.notification.entity.NotifyGroup;
|
|
|
import cn.reghao.autodop.dmaster.notification.service.NotifyService;
|
|
import cn.reghao.autodop.dmaster.notification.service.NotifyService;
|
|
|
|
|
+import cn.reghao.autodop.dmaster.utils.clazz.PackageScanner;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.quartz.*;
|
|
import org.quartz.*;
|
|
|
import org.quartz.impl.StdSchedulerFactory;
|
|
import org.quartz.impl.StdSchedulerFactory;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
import javax.annotation.PostConstruct;
|
|
import javax.annotation.PostConstruct;
|
|
|
|
|
+import java.io.IOException;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -36,6 +38,7 @@ public class MonitorScheduler {
|
|
|
private WebRequest webRequest;
|
|
private WebRequest webRequest;
|
|
|
private MachineMonitorRepository machineMonitorRepository;
|
|
private MachineMonitorRepository machineMonitorRepository;
|
|
|
private AppMonitorRepository appMonitorRepository;
|
|
private AppMonitorRepository appMonitorRepository;
|
|
|
|
|
+ private PackageScanner packageScanner = new PackageScanner();
|
|
|
|
|
|
|
|
public MonitorScheduler(NotifyService notifyService,
|
|
public MonitorScheduler(NotifyService notifyService,
|
|
|
AppRunningRepository runningRepository,
|
|
AppRunningRepository runningRepository,
|
|
@@ -78,35 +81,26 @@ public class MonitorScheduler {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public void addMonitorJob(MonitorJob monitorJob, List<NotifyGroup> notifyGroups) {
|
|
|
|
|
- /*String jobId = monitorJob.getJobId();
|
|
|
|
|
- String cronExp = monitorJob.getCronExp();
|
|
|
|
|
-
|
|
|
|
|
- JobDataMap jobDataMap = new JobDataMap();
|
|
|
|
|
- jobDataMap.put("notifyService", notifyService);
|
|
|
|
|
- jobDataMap.put("notifyGroups", notifyGroups);
|
|
|
|
|
- jobDataMap.put("machineId", machineMonitor.getMachineId());
|
|
|
|
|
- jobDataMap.put("statusCrudService", statusCrudService);
|
|
|
|
|
- addAndStart(MachineHeartbeatCheckJob.class, jobId, cronExp, jobDataMap);*/
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- public void addMachineHeartbeatCheckJob(MachineMonitor machineMonitor) throws SchedulerException {
|
|
|
|
|
- /*String jobId = machineMonitor.getJobId();
|
|
|
|
|
- String cronExp = machineMonitor.getCronExp();
|
|
|
|
|
|
|
+ public void addMachineMonitorJob(MachineMonitor machineMonitor, String jobId)
|
|
|
|
|
+ throws SchedulerException, IOException {
|
|
|
|
|
+ MonitorJob monitorJob = machineMonitor.getJobMap().get(jobId);
|
|
|
List<NotifyGroup> notifyGroups = machineMonitor.getNotifyGroups();
|
|
List<NotifyGroup> notifyGroups = machineMonitor.getNotifyGroups();
|
|
|
|
|
+ String cronExp = monitorJob.getCronExp();
|
|
|
|
|
+ Class jobClass = findClassBySimpleName(monitorJob.getJobClassName());
|
|
|
|
|
|
|
|
JobDataMap jobDataMap = new JobDataMap();
|
|
JobDataMap jobDataMap = new JobDataMap();
|
|
|
jobDataMap.put("notifyService", notifyService);
|
|
jobDataMap.put("notifyService", notifyService);
|
|
|
jobDataMap.put("notifyGroups", notifyGroups);
|
|
jobDataMap.put("notifyGroups", notifyGroups);
|
|
|
jobDataMap.put("machineId", machineMonitor.getMachineId());
|
|
jobDataMap.put("machineId", machineMonitor.getMachineId());
|
|
|
jobDataMap.put("statusCrudService", statusCrudService);
|
|
jobDataMap.put("statusCrudService", statusCrudService);
|
|
|
- addAndStart(MachineHeartbeatCheckJob.class, jobId, cronExp, jobDataMap);*/
|
|
|
|
|
|
|
+ addAndStart(jobClass, jobId, cronExp, jobDataMap);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public void addAppHealthCheckJob(AppMonitor appMonitor) throws SchedulerException {
|
|
|
|
|
- /*String jobId = appMonitor.getJobId();
|
|
|
|
|
- String cronExp = appMonitor.getCronExp();
|
|
|
|
|
|
|
+ public void addAppMonitorJob(AppMonitor appMonitor, String jobId) throws SchedulerException, IOException {
|
|
|
|
|
+ MonitorJob monitorJob = appMonitor.getJobMap().get(jobId);
|
|
|
List<NotifyGroup> notifyGroups = appMonitor.getNotifyGroups();
|
|
List<NotifyGroup> notifyGroups = appMonitor.getNotifyGroups();
|
|
|
|
|
+ String cronExp = monitorJob.getCronExp();
|
|
|
|
|
+ Class jobClass = findClassBySimpleName(monitorJob.getJobClassName());
|
|
|
|
|
|
|
|
JobDataMap jobDataMap = new JobDataMap();
|
|
JobDataMap jobDataMap = new JobDataMap();
|
|
|
jobDataMap.put("notifyService", notifyService);
|
|
jobDataMap.put("notifyService", notifyService);
|
|
@@ -115,7 +109,7 @@ public class MonitorScheduler {
|
|
|
jobDataMap.put("appId", appMonitor.getAppId());
|
|
jobDataMap.put("appId", appMonitor.getAppId());
|
|
|
jobDataMap.put("machineId", appMonitor.getMachineId());
|
|
jobDataMap.put("machineId", appMonitor.getMachineId());
|
|
|
jobDataMap.put("runningRepository", runningRepository);
|
|
jobDataMap.put("runningRepository", runningRepository);
|
|
|
- addAndStart(AppHealthCheckJob.class, jobId, cronExp, jobDataMap);*/
|
|
|
|
|
|
|
+ addAndStart(jobClass, jobId, cronExp, jobDataMap);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private void addAndStart(Class<? extends Job> clazz, String jobId, String cronExp, JobDataMap jobDataMap)
|
|
private void addAndStart(Class<? extends Job> clazz, String jobId, String cronExp, JobDataMap jobDataMap)
|
|
@@ -147,4 +141,16 @@ public class MonitorScheduler {
|
|
|
|
|
|
|
|
public void remove(String jobId) {
|
|
public void remove(String jobId) {
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ private Class findClassBySimpleName(String simpleName) throws IOException {
|
|
|
|
|
+ String jobPkg = "cn.reghao.autodop.dmaster.monitor.service.job";
|
|
|
|
|
+ List<Class<?>> classList = packageScanner.doScan(DmasterApplication.class, jobPkg);
|
|
|
|
|
+
|
|
|
|
|
+ for (Class<?> clazz : classList) {
|
|
|
|
|
+ if (clazz.getSimpleName().equals(simpleName)) {
|
|
|
|
|
+ return clazz;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|