|
|
@@ -1,34 +1,42 @@
|
|
|
package cn.reghao.autodop.dmaster.machine.service;
|
|
|
|
|
|
+import cn.reghao.autodop.dmaster.machine.db.crud.MachineHostCrudService;
|
|
|
import cn.reghao.autodop.dmaster.machine.db.crud.MachineInfoCrudService;
|
|
|
import cn.reghao.autodop.dmaster.machine.db.crud.MachineStatCrudService;
|
|
|
-import cn.reghao.autodop.dmaster.machine.entity.info.MachineInfo;
|
|
|
-import cn.reghao.autodop.dmaster.machine.entity.stat.MachineStat;
|
|
|
-import cn.reghao.autodop.dmaster.machine.entity.stat.StatusType;
|
|
|
+import cn.reghao.autodop.dmaster.machine.entity.po.MachineStat;
|
|
|
+import cn.reghao.autodop.dmaster.machine.entity.po.info.MachineInfo;
|
|
|
import cn.reghao.autodop.dmaster.monitor.entity.MonitorJob;
|
|
|
import cn.reghao.autodop.dmaster.monitor.service.MonitorService;
|
|
|
import cn.reghao.autodop.dmaster.monitor.service.job.MachineHeartbeatCheckJob;
|
|
|
import cn.reghao.autodop.dmaster.sys.db.AppRuntimeLogCrudService;
|
|
|
import cn.reghao.autodop.dmaster.sys.entity.AppRuntimeLog;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.quartz.JobDataMap;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.time.LocalDateTime;
|
|
|
+
|
|
|
/**
|
|
|
- * 对 DagentOps 的实现
|
|
|
+ * DagentOps 实现
|
|
|
*
|
|
|
* @author reghao
|
|
|
* @date 2021-07-01 19:11:54
|
|
|
*/
|
|
|
+@Slf4j
|
|
|
@Service
|
|
|
public class DagentOpsService {
|
|
|
+ private MachineHostCrudService hostCrudService;
|
|
|
private MachineInfoCrudService infoCrudService;
|
|
|
private MachineStatCrudService statCrudService;
|
|
|
private AppRuntimeLogCrudService logCrudService;
|
|
|
private MonitorService monitorService;
|
|
|
|
|
|
- public DagentOpsService(MachineInfoCrudService infoCrudService,
|
|
|
+ public DagentOpsService(MachineHostCrudService hostCrudService,
|
|
|
+ MachineInfoCrudService infoCrudService,
|
|
|
MachineStatCrudService statCrudService,
|
|
|
AppRuntimeLogCrudService logCrudService,
|
|
|
MonitorService monitorService) {
|
|
|
+ this.hostCrudService = hostCrudService;
|
|
|
this.infoCrudService = infoCrudService;
|
|
|
this.statCrudService = statCrudService;
|
|
|
this.logCrudService = logCrudService;
|
|
|
@@ -37,50 +45,41 @@ public class DagentOpsService {
|
|
|
|
|
|
public void start(MachineInfo machineInfo) {
|
|
|
String machineId = machineInfo.getMachineId();
|
|
|
- MachineStat stat = statCrudService.selectByUk(machineId);
|
|
|
- if (stat != null) {
|
|
|
- stat.setStatus(StatusType.UP.name());
|
|
|
- statCrudService.insertOrUpdate(stat);
|
|
|
- } else {
|
|
|
- stat = new MachineStat(machineInfo.getMachineId());
|
|
|
- statCrudService.insertOrUpdate(stat);
|
|
|
- }
|
|
|
-
|
|
|
MachineInfo infoEntity = infoCrudService.selectByUk(machineId);
|
|
|
if (infoEntity != null) {
|
|
|
+ machineInfo.setId(infoEntity.getId());
|
|
|
+ machineInfo.setCreateTime(infoEntity.getCreateTime());
|
|
|
+ machineInfo.setUpdateTime(LocalDateTime.now());
|
|
|
infoCrudService.insertOrUpdate(machineInfo);
|
|
|
} else {
|
|
|
// 先存储数据,然后再添加监控任务,若任务添加失败则回滚
|
|
|
infoCrudService.insertOrUpdate(machineInfo);
|
|
|
- addOrStartMonitorJob(machineId);
|
|
|
}
|
|
|
+ addOrStartMonitorJob(machineId);
|
|
|
}
|
|
|
|
|
|
private void addOrStartMonitorJob(String machineId) {
|
|
|
String jobClassName = MachineHeartbeatCheckJob.class.getSimpleName();
|
|
|
String jobId = String.format("%s-%s", machineId, jobClassName);
|
|
|
|
|
|
+ JobDataMap jobDataMap = new JobDataMap();
|
|
|
+
|
|
|
MonitorJob monitorJob = new MonitorJob(jobId, jobClassName);
|
|
|
- monitorService.addOrModifyJob(monitorJob);
|
|
|
+ try {
|
|
|
+ monitorService.addOrModifyJob(monitorJob, jobDataMap);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("添加任务失败 {}", e.getMessage());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public void heartbeat(MachineStat machineStat) {
|
|
|
- MachineStat stat = statCrudService.selectByUk(machineStat.getMachineId());
|
|
|
- if (stat != null) {
|
|
|
- if (stat.getStatus().equals(StatusType.DOWN.name())) {
|
|
|
- stat.setStatus(StatusType.UP.name());
|
|
|
- }
|
|
|
- statCrudService.insertOrUpdate(stat);
|
|
|
- }
|
|
|
+ // TODO 检测内存和磁盘使用量
|
|
|
+ statCrudService.insertOrUpdate(machineStat);
|
|
|
}
|
|
|
|
|
|
- public void shutdown(String machineId) {
|
|
|
- MachineStat machineStat = statCrudService.selectByUk(machineId);
|
|
|
- if (machineStat != null) {
|
|
|
- // TODO 停止心跳检测任务
|
|
|
- machineStat.setStatus(StatusType.DOWN.name());
|
|
|
- statCrudService.insertOrUpdate(machineStat);
|
|
|
- }
|
|
|
+ public void shutdown(MachineStat machineStat) {
|
|
|
+ // TODO 停止心跳检测任务
|
|
|
+ statCrudService.insertOrUpdate(machineStat);
|
|
|
}
|
|
|
|
|
|
public void log(AppRuntimeLog runtimeLog) {
|