Browse Source

处理机器和应用的监控

reghao 4 years ago
parent
commit
91cc15d1ea
59 changed files with 230 additions and 210 deletions
  1. 1 1
      common/src/main/java/cn/reghao/autodop/common/dagent/app/AppIdArgs.java
  2. 1 1
      common/src/main/java/cn/reghao/autodop/common/dagent/app/AppStatus.java
  3. 1 1
      common/src/main/java/cn/reghao/autodop/common/dagent/app/DeployResult.java
  4. 1 1
      common/src/main/java/cn/reghao/autodop/common/dagent/app/deploy/AppDeployArgs.java
  5. 1 1
      common/src/main/java/cn/reghao/autodop/common/dagent/app/deploy/PackType.java
  6. 1 1
      common/src/main/java/cn/reghao/autodop/common/dagent/app/log/AppLogArgs.java
  7. 1 1
      common/src/main/java/cn/reghao/autodop/common/dagent/app/log/LogConfig.java
  8. 1 1
      common/src/main/java/cn/reghao/autodop/common/dagent/app/log/LogFile.java
  9. 1 1
      common/src/main/java/cn/reghao/autodop/common/dagent/app/log/LogLevel.java
  10. 1 1
      common/src/main/java/cn/reghao/autodop/common/dagent/app/log/LogType.java
  11. 1 1
      common/src/main/java/cn/reghao/autodop/common/docker/Docker.java
  12. 8 8
      dagent/src/main/java/cn/reghao/autodop/dagent/app/App.java
  13. 4 4
      dagent/src/main/java/cn/reghao/autodop/dagent/app/AppService.java
  14. 6 6
      dagent/src/main/java/cn/reghao/autodop/dagent/app/DockerAppServiceImpl.java
  15. 4 4
      dagent/src/main/java/cn/reghao/autodop/dagent/app/ZipAppServiceImpl.java
  16. 13 6
      dagent/src/main/java/cn/reghao/autodop/dagent/utils/DagentLifecycle.java
  17. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/AppStatusController.java
  18. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/view/AppConfigPageController.java
  19. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/view/BuildConfigPageController.java
  20. 1 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/db/crud/config/AppCrudService.java
  21. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/AppDeploying.java
  22. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/AppRunning.java
  23. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/build/PackerConfig.java
  24. 2 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/DeployLog.java
  25. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/AppOpsResultService.java
  26. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/AppStatusService.java
  27. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/bd/AppDeployer.java
  28. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/bd/AppIntegrate.java
  29. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/bd/DeployNotifyMsg.java
  30. 3 6
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/controller/MachinePageController.java
  31. 39 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/db/crud/MachineHostCrudService.java
  32. 5 11
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/db/crud/MachineInfoCrudService.java
  33. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/db/crud/MachineStatCrudService.java
  34. 2 12
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/db/query/MachineInfoQuery.java
  35. 8 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/po/MachineHost.java
  36. 5 10
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/po/MachineStat.java
  37. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/po/StatusType.java
  38. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/po/info/CpuInfo.java
  39. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/po/info/MachineInfo.java
  40. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/po/info/NetworkInfo.java
  41. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/po/info/OsInfo.java
  42. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/vo/DiskUsage.java
  43. 4 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/vo/HostInfo.java
  44. 1 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/vo/MachineStatus.java
  45. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/vo/MemoryUsage.java
  46. 16 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/repository/MachineHostRepository.java
  47. 1 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/repository/MachineInfoRepository.java
  48. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/repository/MachineStatRepository.java
  49. 29 30
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/service/DagentOpsService.java
  50. 3 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/service/MachineService.java
  51. 4 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/monitor/controller/MonitorController.java
  52. 0 11
      dmaster/src/main/java/cn/reghao/autodop/dmaster/monitor/controller/MonitorPageController.java
  53. 1 8
      dmaster/src/main/java/cn/reghao/autodop/dmaster/monitor/entity/MonitorJob.java
  54. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/monitor/service/MonitorListService.java
  55. 2 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/monitor/service/MonitorService.java
  56. 17 23
      dmaster/src/main/java/cn/reghao/autodop/dmaster/monitor/service/MonitorServiceImpl.java
  57. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/monitor/service/job/MachineHeartbeatCheckJob.java
  58. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/mqttsub/processor/AppOpsProcessor.java
  59. 11 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/mqttsub/processor/DagentOpsProcessor.java

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/dagent/app/api/data/AppIdArgs.java → common/src/main/java/cn/reghao/autodop/common/dagent/app/AppIdArgs.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.dagent.app.api.data;
+package cn.reghao.autodop.common.dagent.app;
 
 import lombok.AllArgsConstructor;
 import lombok.Data;

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/dagent/app/api/data/AppStatus.java → common/src/main/java/cn/reghao/autodop/common/dagent/app/AppStatus.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.dagent.app.api.data;
+package cn.reghao.autodop.common.dagent.app;
 
 import lombok.Data;
 

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/dagent/app/api/data/DeployResult.java → common/src/main/java/cn/reghao/autodop/common/dagent/app/DeployResult.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.dagent.app.api.data;
+package cn.reghao.autodop.common.dagent.app;
 
 import cn.reghao.autodop.common.result.Result;
 import lombok.Data;

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/dagent/app/api/data/deploy/AppDeployArgs.java → common/src/main/java/cn/reghao/autodop/common/dagent/app/deploy/AppDeployArgs.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.dagent.app.api.data.deploy;
+package cn.reghao.autodop.common.dagent.app.deploy;
 
 import lombok.Data;
 

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/dagent/app/api/data/deploy/PackType.java → common/src/main/java/cn/reghao/autodop/common/dagent/app/deploy/PackType.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.dagent.app.api.data.deploy;
+package cn.reghao.autodop.common.dagent.app.deploy;
 
 /**
  * 打包方式类型

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/dagent/app/api/data/log/AppLogArgs.java → common/src/main/java/cn/reghao/autodop/common/dagent/app/log/AppLogArgs.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.dagent.app.api.data.log;
+package cn.reghao.autodop.common.dagent.app.log;
 
 import lombok.Data;
 

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/dagent/app/api/data/log/LogConfig.java → common/src/main/java/cn/reghao/autodop/common/dagent/app/log/LogConfig.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.dagent.app.api.data.log;
+package cn.reghao.autodop.common.dagent.app.log;
 
 import lombok.AllArgsConstructor;
 import lombok.Data;

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/dagent/app/api/data/log/LogFile.java → common/src/main/java/cn/reghao/autodop/common/dagent/app/log/LogFile.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.dagent.app.api.data.log;
+package cn.reghao.autodop.common.dagent.app.log;
 
 import lombok.Data;
 

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/dagent/app/api/data/log/LogLevel.java → common/src/main/java/cn/reghao/autodop/common/dagent/app/log/LogLevel.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.dagent.app.api.data.log;
+package cn.reghao.autodop.common.dagent.app.log;
 
 /**
  * 应用日志等级

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/dagent/app/api/data/log/LogType.java → common/src/main/java/cn/reghao/autodop/common/dagent/app/log/LogType.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.dagent.app.api.data.log;
+package cn.reghao.autodop.common.dagent.app.log;
 
 /**
  * 应用日志类型

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/docker/Docker.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.common.docker;
 
-import cn.reghao.autodop.common.dagent.app.api.data.log.LogLevel;
+import cn.reghao.autodop.common.dagent.app.log.LogLevel;
 import cn.reghao.autodop.common.docker.api.ContainerOps;
 import cn.reghao.autodop.common.docker.api.DockerApi;
 import cn.reghao.autodop.common.docker.api.ImageOps;

+ 8 - 8
dagent/src/main/java/cn/reghao/autodop/dagent/app/App.java

@@ -1,13 +1,13 @@
 package cn.reghao.autodop.dagent.app;
 
-import cn.reghao.autodop.common.dagent.app.api.data.AppIdArgs;
-import cn.reghao.autodop.common.dagent.app.api.data.AppStatus;
-import cn.reghao.autodop.common.dagent.app.api.data.DeployResult;
-import cn.reghao.autodop.common.dagent.app.api.data.deploy.AppDeployArgs;
-import cn.reghao.autodop.common.dagent.app.api.data.deploy.PackType;
-import cn.reghao.autodop.common.dagent.app.api.data.log.AppLogArgs;
-import cn.reghao.autodop.common.dagent.app.api.data.log.LogConfig;
-import cn.reghao.autodop.common.dagent.app.api.data.log.LogFile;
+import cn.reghao.autodop.common.dagent.app.AppIdArgs;
+import cn.reghao.autodop.common.dagent.app.AppStatus;
+import cn.reghao.autodop.common.dagent.app.DeployResult;
+import cn.reghao.autodop.common.dagent.app.deploy.AppDeployArgs;
+import cn.reghao.autodop.common.dagent.app.deploy.PackType;
+import cn.reghao.autodop.common.dagent.app.log.AppLogArgs;
+import cn.reghao.autodop.common.dagent.app.log.LogConfig;
+import cn.reghao.autodop.common.dagent.app.log.LogFile;
 import cn.reghao.autodop.common.docker.exception.DockerException;
 import cn.reghao.autodop.common.message.CallResult;
 import cn.reghao.autodop.common.result.Result;

+ 4 - 4
dagent/src/main/java/cn/reghao/autodop/dagent/app/AppService.java

@@ -1,9 +1,9 @@
 package cn.reghao.autodop.dagent.app;
 
-import cn.reghao.autodop.common.dagent.app.api.data.AppStatus;
-import cn.reghao.autodop.common.dagent.app.api.data.deploy.AppDeployArgs;
-import cn.reghao.autodop.common.dagent.app.api.data.log.AppLogArgs;
-import cn.reghao.autodop.common.dagent.app.api.data.log.LogFile;
+import cn.reghao.autodop.common.dagent.app.AppStatus;
+import cn.reghao.autodop.common.dagent.app.deploy.AppDeployArgs;
+import cn.reghao.autodop.common.dagent.app.log.AppLogArgs;
+import cn.reghao.autodop.common.dagent.app.log.LogFile;
 import cn.reghao.autodop.common.docker.exception.DockerException;
 
 import java.util.List;

+ 6 - 6
dagent/src/main/java/cn/reghao/autodop/dagent/app/DockerAppServiceImpl.java

@@ -1,11 +1,11 @@
 package cn.reghao.autodop.dagent.app;
 
-import cn.reghao.autodop.common.dagent.app.api.data.AppStatus;
-import cn.reghao.autodop.common.dagent.app.api.data.deploy.AppDeployArgs;
-import cn.reghao.autodop.common.dagent.app.api.data.log.AppLogArgs;
-import cn.reghao.autodop.common.dagent.app.api.data.log.LogConfig;
-import cn.reghao.autodop.common.dagent.app.api.data.log.LogFile;
-import cn.reghao.autodop.common.dagent.app.api.data.log.LogType;
+import cn.reghao.autodop.common.dagent.app.AppStatus;
+import cn.reghao.autodop.common.dagent.app.deploy.AppDeployArgs;
+import cn.reghao.autodop.common.dagent.app.log.AppLogArgs;
+import cn.reghao.autodop.common.dagent.app.log.LogConfig;
+import cn.reghao.autodop.common.dagent.app.log.LogFile;
+import cn.reghao.autodop.common.dagent.app.log.LogType;
 import cn.reghao.autodop.common.docker.Docker;
 import cn.reghao.autodop.common.docker.exception.DockerException;
 import cn.reghao.autodop.common.docker.pojo.Config;

+ 4 - 4
dagent/src/main/java/cn/reghao/autodop/dagent/app/ZipAppServiceImpl.java

@@ -1,9 +1,9 @@
 package cn.reghao.autodop.dagent.app;
 
-import cn.reghao.autodop.common.dagent.app.api.data.AppStatus;
-import cn.reghao.autodop.common.dagent.app.api.data.deploy.AppDeployArgs;
-import cn.reghao.autodop.common.dagent.app.api.data.log.AppLogArgs;
-import cn.reghao.autodop.common.dagent.app.api.data.log.LogFile;
+import cn.reghao.autodop.common.dagent.app.AppStatus;
+import cn.reghao.autodop.common.dagent.app.deploy.AppDeployArgs;
+import cn.reghao.autodop.common.dagent.app.log.AppLogArgs;
+import cn.reghao.autodop.common.dagent.app.log.LogFile;
 import lombok.extern.slf4j.Slf4j;
 
 import java.util.Collections;

+ 13 - 6
dagent/src/main/java/cn/reghao/autodop/dagent/utils/DagentLifecycle.java

@@ -38,10 +38,10 @@ public class DagentLifecycle implements ApplicationRunner, DisposableBean {
     public static String MACHINE_ID;
     public static String MACHINE_IPV4;
 
-    private DmasterMsgDispatcher dmasterMsgDispatcher;
-    private DefaultMqttClient mqttClient;
-    private MachineScheduler machineScheduler;
-    private Machine machine;
+    private final DmasterMsgDispatcher dmasterMsgDispatcher;
+    private final DefaultMqttClient mqttClient;
+    private final MachineScheduler machineScheduler;
+    private final Machine machine;
 
     public DagentLifecycle(MachineIdentity machineIdentity,
                            DmasterMsgDispatcher dmasterMsgDispatcher,
@@ -85,15 +85,22 @@ public class DagentLifecycle implements ApplicationRunner, DisposableBean {
         AsyncMsg asyncMsg = AsyncMsg.asyncMsg(MACHINE_ID, MessageType.dagentType.name(),
                 DagentOps.dagentStart.name(), payload);
         mqttClient.pub("dmaster", 1, JsonConverter.objectToJson(asyncMsg));
+
+        payload = JsonConverter.objectToJson(machine.heartbeat());
+        asyncMsg = AsyncMsg.asyncMsg(MACHINE_ID, MessageType.dagentType.name(),
+                DagentOps.dagentHeartbeat.name(), payload);
+        mqttClient.pub("dmaster", 1, JsonConverter.objectToJson(asyncMsg));
     }
 
     private void pubDagentHeartbeat() throws SchedulerException {
-        machineScheduler.add(DagentHeartbeatJob.class, "machine-heartbeat", "0/10 * * * * ?");
+        String jobId = DagentHeartbeatJob.class.getSimpleName();
+        String cronExp = "0/10 * * * * ?";
+        machineScheduler.add(DagentHeartbeatJob.class, jobId, cronExp);
         machineScheduler.start();
     }
 
     private void pubDagentShutdown() throws MqttException {
-        String payload = MACHINE_ID;
+        String payload = JsonConverter.objectToJson(machine.heartbeat());
         AsyncMsg asyncMsg = AsyncMsg.asyncMsg(MACHINE_ID, MessageType.dagentType.name(),
                 DagentOps.dagnetShutdown.name(), payload);
         mqttClient.pub("dmaster", 1, JsonConverter.objectToJson(asyncMsg));

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/AppStatusController.java

@@ -3,7 +3,7 @@ package cn.reghao.autodop.dmaster.app.controller;
 import cn.reghao.autodop.dmaster.app.constant.StatusOps;
 import cn.reghao.autodop.dmaster.app.service.AppStatusService;
 import cn.reghao.autodop.dmaster.utils.WebBody;
-import cn.reghao.autodop.common.dagent.app.api.data.log.LogFile;
+import cn.reghao.autodop.common.dagent.app.log.LogFile;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/view/AppConfigPageController.java

@@ -1,8 +1,9 @@
 package cn.reghao.autodop.dmaster.app.controller.view;
 
-import cn.reghao.autodop.common.dagent.app.api.data.deploy.PackType;
+import cn.reghao.autodop.common.dagent.app.deploy.PackType;
 import cn.reghao.autodop.dmaster.app.constant.AppType;
 import cn.reghao.autodop.dmaster.app.constant.EnvType;
+import cn.reghao.autodop.dmaster.machine.entity.po.info.NetworkInfo;
 import cn.reghao.autodop.dmaster.notification.entity.NotifyGroup;
 import cn.reghao.autodop.dmaster.notification.entity.NotifyType;
 import cn.reghao.autodop.dmaster.app.db.query.config.AppQuery;
@@ -14,7 +15,6 @@ import cn.reghao.autodop.dmaster.app.entity.config.AppOrchestration;
 import cn.reghao.autodop.dmaster.app.entity.config.ProjOrchestration;
 import cn.reghao.autodop.dmaster.app.vo.KeyValue;
 import cn.reghao.autodop.dmaster.machine.db.query.MachineInfoQuery;
-import cn.reghao.autodop.dmaster.machine.entity.info.NetworkInfo;
 import cn.reghao.autodop.dmaster.notification.repository.NotifyGroupRepository;
 import cn.reghao.autodop.dmaster.utils.db.PageList;
 import cn.reghao.autodop.dmaster.utils.db.PageSort;

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/view/BuildConfigPageController.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.controller.view;
 
-import cn.reghao.autodop.common.dagent.app.api.data.deploy.PackType;
+import cn.reghao.autodop.common.dagent.app.deploy.PackType;
 import cn.reghao.autodop.common.dagent.machine.disk.Disk;
 import cn.reghao.autodop.dmaster.app.constant.build.CompileType;
 import cn.reghao.autodop.dmaster.app.constant.build.RepoAuthType;
@@ -14,7 +14,7 @@ import cn.reghao.autodop.dmaster.app.entity.config.build.CompilerConfig;
 import cn.reghao.autodop.dmaster.app.entity.config.build.PackerConfig;
 import cn.reghao.autodop.dmaster.app.entity.config.build.RepoAuthConfig;
 import cn.reghao.autodop.dmaster.app.vo.KeyValue;
-import cn.reghao.autodop.dmaster.machine.entity.stat.DiskUsage;
+import cn.reghao.autodop.dmaster.machine.entity.vo.DiskUsage;
 import cn.reghao.autodop.dmaster.utils.db.PageList;
 import cn.reghao.autodop.dmaster.utils.db.PageSort;
 import cn.reghao.autodop.dmaster.utils.lifecycle.DmasterLifecycle;

+ 1 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/db/crud/config/AppCrudService.java

@@ -6,6 +6,7 @@ import cn.reghao.autodop.dmaster.app.constant.AppType;
 import cn.reghao.autodop.dmaster.app.constant.EnvType;
 import cn.reghao.autodop.dmaster.app.entity.config.ProjOrchestration;
 import cn.reghao.autodop.dmaster.machine.db.crud.MachineInfoCrudService;
+import cn.reghao.autodop.dmaster.machine.entity.po.info.MachineInfo;
 import cn.reghao.autodop.dmaster.notification.entity.NotifyType;
 import cn.reghao.autodop.dmaster.app.entity.AppRunning;
 import cn.reghao.autodop.dmaster.app.entity.config.deploy.DeployConfig;
@@ -14,8 +15,6 @@ import cn.reghao.autodop.dmaster.app.service.AppBuildDeployService;
 import cn.reghao.autodop.dmaster.app.vo.NewApp;
 import cn.reghao.autodop.dmaster.app.entity.config.AppOrchestration;
 import cn.reghao.autodop.dmaster.app.repository.config.AppOrchestrationRepository;
-import cn.reghao.autodop.dmaster.machine.entity.info.MachineInfo;
-import cn.reghao.autodop.dmaster.machine.repository.MachineInfoRepository;
 import org.springframework.cache.annotation.CacheConfig;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/AppDeploying.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.entity;
 
-import cn.reghao.autodop.common.dagent.app.api.data.DeployResult;
+import cn.reghao.autodop.common.dagent.app.DeployResult;
 import cn.reghao.autodop.dmaster.app.entity.config.AppOrchestration;
 import cn.reghao.autodop.dmaster.app.entity.config.deploy.DeployConfig;
 import cn.reghao.autodop.dmaster.app.entity.log.BuildLog;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/AppRunning.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.entity;
 
-import cn.reghao.autodop.common.dagent.app.api.data.AppStatus;
+import cn.reghao.autodop.common.dagent.app.AppStatus;
 import cn.reghao.autodop.dmaster.app.entity.config.AppOrchestration;
 import cn.reghao.autodop.dmaster.app.entity.config.deploy.DeployConfig;
 import cn.reghao.autodop.dmaster.app.entity.log.BuildLog;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/build/PackerConfig.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.entity.config.build;
 
-import cn.reghao.autodop.common.dagent.app.api.data.deploy.PackType;
+import cn.reghao.autodop.common.dagent.app.deploy.PackType;
 import cn.reghao.autodop.dmaster.app.validator.ValidEnum;
 import cn.reghao.autodop.dmaster.common.orm.BaseEntity;
 import lombok.Data;

+ 2 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/DeployLog.java

@@ -1,9 +1,8 @@
 package cn.reghao.autodop.dmaster.app.entity.log;
 
-import cn.reghao.autodop.common.dagent.app.api.data.AppStatus;
-import cn.reghao.autodop.common.dagent.app.api.data.DeployResult;
+import cn.reghao.autodop.common.dagent.app.AppStatus;
+import cn.reghao.autodop.common.dagent.app.DeployResult;
 import cn.reghao.autodop.common.result.Result;
-import cn.reghao.autodop.dmaster.auth.UserContext;
 import cn.reghao.autodop.dmaster.common.orm.BaseDocument;
 import lombok.Data;
 import lombok.EqualsAndHashCode;

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/AppOpsResultService.java

@@ -1,7 +1,7 @@
 package cn.reghao.autodop.dmaster.app.service;
 
-import cn.reghao.autodop.common.dagent.app.api.data.AppStatus;
-import cn.reghao.autodop.common.dagent.app.api.data.DeployResult;
+import cn.reghao.autodop.common.dagent.app.AppStatus;
+import cn.reghao.autodop.common.dagent.app.DeployResult;
 import cn.reghao.autodop.common.http.DefaultWebRequest;
 import cn.reghao.autodop.common.http.WebRequest;
 import cn.reghao.autodop.dmaster.app.db.query.config.AppQuery;

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/AppStatusService.java

@@ -3,14 +3,14 @@ package cn.reghao.autodop.dmaster.app.service;
 import cn.reghao.autodop.common.message.AsyncMsg;
 import cn.reghao.autodop.common.message.MessageType;
 import cn.reghao.autodop.common.message.ops.AppOps;
-import cn.reghao.autodop.common.dagent.app.api.data.AppIdArgs;
+import cn.reghao.autodop.common.dagent.app.AppIdArgs;
 import cn.reghao.autodop.common.mqtt.DefaultMqttClient;
 import cn.reghao.autodop.common.utils.serializer.JsonConverter;
 import cn.reghao.autodop.dmaster.app.constant.StatusOps;
 import cn.reghao.autodop.dmaster.app.db.query.config.AppQuery;
 import cn.reghao.autodop.dmaster.app.entity.AppRunning;
 import cn.reghao.autodop.dmaster.app.entity.config.AppOrchestration;
-import cn.reghao.autodop.common.dagent.app.api.data.log.LogFile;
+import cn.reghao.autodop.common.dagent.app.log.LogFile;
 import cn.reghao.autodop.dmaster.app.repository.AppRunningRepository;
 import org.eclipse.paho.client.mqttv3.MqttException;
 import org.springframework.stereotype.Service;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/bd/AppDeployer.java

@@ -3,7 +3,7 @@ package cn.reghao.autodop.dmaster.app.service.bd;
 import cn.reghao.autodop.common.message.AsyncMsg;
 import cn.reghao.autodop.common.message.MessageType;
 import cn.reghao.autodop.common.message.ops.AppOps;
-import cn.reghao.autodop.common.dagent.app.api.data.deploy.AppDeployArgs;
+import cn.reghao.autodop.common.dagent.app.deploy.AppDeployArgs;
 import cn.reghao.autodop.common.mqtt.DefaultMqttClient;
 import cn.reghao.autodop.common.utils.serializer.JsonConverter;
 import cn.reghao.autodop.dmaster.app.db.query.config.AppQuery;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/bd/AppIntegrate.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.service.bd;
 
-import cn.reghao.autodop.common.dagent.app.api.data.deploy.PackType;
+import cn.reghao.autodop.common.dagent.app.deploy.PackType;
 import cn.reghao.autodop.dmaster.app.constant.build.CompileType;
 import cn.reghao.autodop.dmaster.app.constant.build.RepoType;
 import cn.reghao.autodop.dmaster.app.entity.config.build.CompilerConfig;

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/bd/DeployNotifyMsg.java

@@ -1,7 +1,7 @@
 package cn.reghao.autodop.dmaster.app.service.bd;
 
-import cn.reghao.autodop.common.dagent.app.api.data.AppStatus;
-import cn.reghao.autodop.common.dagent.app.api.data.DeployResult;
+import cn.reghao.autodop.common.dagent.app.AppStatus;
+import cn.reghao.autodop.common.dagent.app.DeployResult;
 import cn.reghao.autodop.common.utils.DateTimeConverter;
 import cn.reghao.autodop.dmaster.app.entity.log.BuildLog;
 import cn.reghao.autodop.dmaster.notification.service.notifier.ding.DingMsg;

+ 3 - 6
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/controller/MachinePageController.java

@@ -2,12 +2,11 @@ package cn.reghao.autodop.dmaster.machine.controller;
 
 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.stat.MachineStat;
-import cn.reghao.autodop.dmaster.machine.entity.stat.MachineStat;
+import cn.reghao.autodop.dmaster.machine.entity.po.MachineStat;
+import cn.reghao.autodop.dmaster.machine.entity.po.info.MachineInfo;
 import cn.reghao.autodop.dmaster.machine.service.MachineService;
-import cn.reghao.autodop.dmaster.machine.vo.HostInfo;
+import cn.reghao.autodop.dmaster.machine.entity.vo.HostInfo;
 import cn.reghao.autodop.dmaster.utils.db.PageList;
-import cn.reghao.autodop.dmaster.machine.entity.info.MachineInfo;
 import cn.reghao.autodop.dmaster.utils.db.PageSort;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -48,8 +47,6 @@ public class MachinePageController {
                            @RequestParam(value = "machineIpv4", required = false) String machineIpv4,
                            Model model) {
         PageRequest pageRequest = PageSort.pageRequest();
-
-
         Page<MachineInfo> page = infoCrudService.selectByPage(pageRequest);
         Page<HostInfo> hostInfos = page.map(machineService::hostInfo);
         PageList<HostInfo> pageList = PageList.pageList(hostInfos);

+ 39 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/db/crud/MachineHostCrudService.java

@@ -0,0 +1,39 @@
+package cn.reghao.autodop.dmaster.machine.db.crud;
+
+import cn.reghao.autodop.dmaster.machine.entity.po.MachineHost;
+import cn.reghao.autodop.dmaster.machine.repository.MachineHostRepository;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.stereotype.Service;
+
+import java.util.Optional;
+
+/**
+ * @author reghao
+ * @date 2019-11-15 08:48:04
+ */
+@CacheConfig(cacheNames = {"caffeineCacheManager"})
+@Service
+public class MachineHostCrudService {
+    private MachineHostRepository hostRepository;
+
+    public MachineHostCrudService(MachineHostRepository hostRepository) {
+        this.hostRepository = hostRepository;
+    }
+
+    public void insertOrUpdate(MachineHost machineHost) {
+        hostRepository.save(machineHost);
+    }
+
+    public void delete(MachineHost machineHost) {
+        hostRepository.delete(machineHost);
+    }
+
+    public MachineHost selectByPk(Integer id) {
+        Optional<MachineHost> optional = hostRepository.findById(id);
+        return optional.orElse(null);
+    }
+
+    /*public MachineHost selectByUk(String machineId) {
+        return hostRepository.findByMachineId(machineId);
+    }*/
+}

+ 5 - 11
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/db/crud/MachineInfoCrudService.java

@@ -1,8 +1,8 @@
 package cn.reghao.autodop.dmaster.machine.db.crud;
 
-import cn.reghao.autodop.dmaster.machine.entity.info.MachineInfo;
+import cn.reghao.autodop.dmaster.machine.entity.po.MachineHost;
+import cn.reghao.autodop.dmaster.machine.entity.po.info.MachineInfo;
 import cn.reghao.autodop.dmaster.machine.repository.MachineInfoRepository;
-import cn.reghao.autodop.dmaster.machine.repository.MachineStatRepository;
 import cn.reghao.autodop.dmaster.monitor.service.MonitorService;
 import cn.reghao.autodop.dmaster.monitor.service.job.MachineHeartbeatCheckJob;
 import org.springframework.cache.annotation.CacheConfig;
@@ -10,7 +10,6 @@ import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 
-import java.time.LocalDateTime;
 import java.util.Optional;
 
 /**
@@ -33,14 +32,9 @@ public class MachineInfoCrudService {
     }
 
     public void insertOrUpdate(MachineInfo machineInfo) {
-        // 重复 machineId 则更新
-        MachineInfo infoEntity = infoRepository.findByMachineId(machineInfo.getMachineId());
-        if (infoEntity != null) {
-            machineInfo.setId(infoEntity.getId());
-            machineInfo.setCreateTime(infoEntity.getCreateTime());
-            machineInfo.setUpdateTime(LocalDateTime.now());
-        }
-        infoRepository.save(machineInfo);
+        MachineInfo infoEntity = infoRepository.save(machineInfo);
+        MachineHost machineHost = new MachineHost(infoEntity);
+
     }
 
     public void delete(MachineInfo machineInfo) {

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/db/crud/MachineStatCrudService.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.machine.db.crud;
 
-import cn.reghao.autodop.dmaster.machine.entity.stat.MachineStat;
+import cn.reghao.autodop.dmaster.machine.entity.po.MachineStat;
 import cn.reghao.autodop.dmaster.machine.repository.MachineStatRepository;
 import com.github.benmanes.caffeine.cache.Cache;
 import org.springframework.stereotype.Service;

+ 2 - 12
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/db/query/MachineInfoQuery.java

@@ -1,12 +1,9 @@
 package cn.reghao.autodop.dmaster.machine.db.query;
 
-import cn.reghao.autodop.dmaster.machine.entity.info.MachineInfo;
+import cn.reghao.autodop.dmaster.machine.entity.po.info.MachineInfo;
 import cn.reghao.autodop.dmaster.machine.repository.MachineInfoRepository;
-import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 
-import javax.persistence.criteria.Predicate;
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -23,13 +20,6 @@ public class MachineInfoQuery {
     }
 
     public List<MachineInfo> queryAll(Map<String, String> kv) {
-        Specification<MachineInfo> specification = (root, query, cb) -> {
-            List<Predicate> predicates = new ArrayList<>();
-            kv.forEach((name, value) -> {
-                predicates.add(cb.equal(root.get(name), value));
-            });
-            return cb.and(predicates.toArray(new Predicate[0]));
-        };
-        return infoRepository.findAll(specification);
+        return infoRepository.findAll();
     }
 }

+ 8 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/MachineHost.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/po/MachineHost.java

@@ -1,9 +1,10 @@
-package cn.reghao.autodop.dmaster.machine.entity;
+package cn.reghao.autodop.dmaster.machine.entity.po;
 
 import cn.reghao.autodop.dmaster.common.orm.BaseEntity;
-import cn.reghao.autodop.dmaster.machine.entity.info.MachineInfo;
+import cn.reghao.autodop.dmaster.machine.entity.po.info.MachineInfo;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
 
 import javax.persistence.Entity;
 import javax.persistence.OneToOne;
@@ -12,6 +13,7 @@ import javax.persistence.OneToOne;
  * @author reghao
  * @date 2021-06-29 09:36:13
  */
+@NoArgsConstructor
 @Data
 @EqualsAndHashCode(callSuper = false)
 @Entity
@@ -21,4 +23,8 @@ public class MachineHost extends BaseEntity<Integer> {
     private String env;
     private String status;
     // TODO 根据机器所属的地区,机房等维度来分组
+
+    public MachineHost(MachineInfo machineInfo) {
+        this.machineInfo = machineInfo;
+    }
 }

+ 5 - 10
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/stat/MachineStat.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/po/MachineStat.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.machine.entity.stat;
+package cn.reghao.autodop.dmaster.machine.entity.po;
 
 import cn.reghao.autodop.common.dagent.machine.cpu.CpuStat;
 import cn.reghao.autodop.common.dagent.machine.disk.DiskInfo;
@@ -11,6 +11,8 @@ import cn.reghao.autodop.common.utils.ByteConverter;
 import cn.reghao.autodop.common.utils.ByteType;
 import cn.reghao.autodop.common.utils.PercentCalculator;
 import cn.reghao.autodop.dmaster.common.orm.BaseDocument;
+import cn.reghao.autodop.dmaster.machine.entity.vo.DiskUsage;
+import cn.reghao.autodop.dmaster.machine.entity.vo.MemoryUsage;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.extern.slf4j.Slf4j;
@@ -38,13 +40,6 @@ public class MachineStat extends BaseDocument {
     private List<DiskInfo> diskInfos;
     private String status;
     private LocalDateTime lastCheck;
-    private Integer tcpConnNum;
-
-    public MachineStat(String machineId) {
-        this.machineId = machineId;
-        this.status = StatusType.UP.name();
-        this.lastCheck = LocalDateTime.now();
-    }
 
     public MemoryUsage getMemoryUsage() {
         long total = memoryInfo.getTotal();
@@ -73,7 +68,7 @@ public class MachineStat extends BaseDocument {
         return memoryUsage;
     }
 
-    public void memoryUsage() {
+    public void memoryUsageAlert() {
         long total = memoryInfo.getTotal();
         long avail = memoryInfo.getAvailable();
 
@@ -93,7 +88,7 @@ public class MachineStat extends BaseDocument {
         return diskInfos.stream().map(DiskUsage::new).collect(Collectors.toList());
     }
 
-    public void diskUsage() {
+    public void diskUsageAlert() {
         long total = 0, avail = 0;
         for (DiskInfo diskInfo : diskInfos) {
             total += diskInfo.getSize();

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/stat/StatusType.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/po/StatusType.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.machine.entity.stat;
+package cn.reghao.autodop.dmaster.machine.entity.po;
 
 /**
  * @author reghao

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/info/CpuInfo.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/po/info/CpuInfo.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.machine.entity.info;
+package cn.reghao.autodop.dmaster.machine.entity.po.info;
 
 import lombok.Data;
 

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/info/MachineInfo.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/po/info/MachineInfo.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.machine.entity.info;
+package cn.reghao.autodop.dmaster.machine.entity.po.info;
 
 import lombok.Data;
 import lombok.EqualsAndHashCode;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/info/NetworkInfo.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/po/info/NetworkInfo.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.machine.entity.info;
+package cn.reghao.autodop.dmaster.machine.entity.po.info;
 
 import lombok.Data;
 

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/info/OsInfo.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/po/info/OsInfo.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.machine.entity.info;
+package cn.reghao.autodop.dmaster.machine.entity.po.info;
 
 import lombok.Data;
 

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/stat/DiskUsage.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/vo/DiskUsage.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.machine.entity.stat;
+package cn.reghao.autodop.dmaster.machine.entity.vo;
 
 import cn.reghao.autodop.common.dagent.machine.disk.DiskInfo;
 import cn.reghao.autodop.common.utils.ByteConverter;

+ 4 - 4
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/vo/HostInfo.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/vo/HostInfo.java

@@ -1,8 +1,8 @@
-package cn.reghao.autodop.dmaster.machine.vo;
+package cn.reghao.autodop.dmaster.machine.entity.vo;
 
-import cn.reghao.autodop.dmaster.machine.entity.info.MachineInfo;
-import cn.reghao.autodop.dmaster.machine.entity.info.NetworkInfo;
-import cn.reghao.autodop.dmaster.machine.entity.stat.MachineStat;
+import cn.reghao.autodop.dmaster.machine.entity.po.MachineStat;
+import cn.reghao.autodop.dmaster.machine.entity.po.info.MachineInfo;
+import cn.reghao.autodop.dmaster.machine.entity.po.info.NetworkInfo;
 import lombok.Data;
 
 import java.time.LocalDateTime;

+ 1 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/vo/MachineStatus.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/vo/MachineStatus.java

@@ -1,9 +1,7 @@
-package cn.reghao.autodop.dmaster.machine.vo;
+package cn.reghao.autodop.dmaster.machine.entity.vo;
 
 import cn.reghao.autodop.common.dagent.machine.disk.DiskInfo;
 import cn.reghao.autodop.common.dagent.machine.memory.MemoryInfo;
-import cn.reghao.autodop.dmaster.machine.entity.stat.DiskUsage;
-import cn.reghao.autodop.dmaster.machine.entity.stat.MemoryUsage;
 import lombok.Data;
 
 import java.time.LocalDateTime;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/stat/MemoryUsage.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/vo/MemoryUsage.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.machine.entity.stat;
+package cn.reghao.autodop.dmaster.machine.entity.vo;
 
 import lombok.Data;
 

+ 16 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/repository/MachineHostRepository.java

@@ -0,0 +1,16 @@
+package cn.reghao.autodop.dmaster.machine.repository;
+
+import cn.reghao.autodop.dmaster.machine.entity.po.MachineHost;
+import cn.reghao.autodop.dmaster.machine.entity.po.info.MachineInfo;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+/**
+ * @author reghao
+ * @date 2020-01-21 14:53:03
+ */
+public interface MachineHostRepository extends JpaRepository<MachineHost, Integer> {
+    MachineHost findByMachineInfo(MachineInfo machineInfo);
+    Page<MachineHost> findByIsDeleteFalse(Pageable pageable);
+}

+ 1 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/repository/MachineInfoRepository.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.machine.repository;
 
-import cn.reghao.autodop.dmaster.machine.entity.info.MachineInfo;
+import cn.reghao.autodop.dmaster.machine.entity.po.info.MachineInfo;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
@@ -16,5 +16,4 @@ public interface MachineInfoRepository
         extends JpaRepository<MachineInfo, Integer>, JpaSpecificationExecutor<MachineInfo> {
     MachineInfo findByMachineId(String machineId);
     Page<MachineInfo> findByIsDeleteFalse(Pageable pageable);
-    List<MachineInfo> findAllByIsDeleteFalse();
 }

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/repository/MachineStatRepository.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.machine.repository;
 
-import cn.reghao.autodop.dmaster.machine.entity.stat.MachineStat;
+import cn.reghao.autodop.dmaster.machine.entity.po.MachineStat;
 import org.springframework.data.mongodb.repository.MongoRepository;
 
 /**

+ 29 - 30
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/service/DagentOpsService.java

@@ -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) {

+ 3 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/service/MachineService.java

@@ -2,9 +2,9 @@ package cn.reghao.autodop.dmaster.machine.service;
 
 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.vo.HostInfo;
+import cn.reghao.autodop.dmaster.machine.entity.po.MachineStat;
+import cn.reghao.autodop.dmaster.machine.entity.po.info.MachineInfo;
+import cn.reghao.autodop.dmaster.machine.entity.vo.HostInfo;
 import org.springframework.stereotype.Service;
 
 /**

+ 4 - 4
dmaster/src/main/java/cn/reghao/autodop/dmaster/monitor/controller/MonitorController.java

@@ -29,19 +29,19 @@ public class MonitorController {
         this.monitorService = monitorService;
     }
 
-    @ApiOperation(value = "设置监控通知")
+    /*@ApiOperation(value = "设置监控通知")
     @PostMapping(value = "/notify/{jobId}", produces = MediaType.APPLICATION_JSON_VALUE)
     @ResponseBody
     public ResponseEntity<String> setMonitorNotify(@PathVariable("jobId") String jobId,
                                                    @RequestParam("groupId") List<NotifyGroup> notifyGroups) {
         notifyGroups.forEach(notifyGroup -> monitorService.setNotify(jobId, notifyGroup));
         return ResponseEntity.ok().body(WebBody.success());
-    }
+    }*/
 
     @ApiOperation(value = "编辑监控任务")
     @PostMapping(value = "/job", produces = MediaType.APPLICATION_JSON_VALUE)
-    public ResponseEntity<String> editMonitorJob(@Valid MonitorJob monitorJob) {
-        monitorService.addOrModifyJob(monitorJob);
+    public ResponseEntity<String> editMonitorJob(@Valid MonitorJob monitorJob) throws Exception {
+        monitorService.addOrModifyJob(monitorJob, null);
         return ResponseEntity.ok().body(WebBody.success());
     }
 

+ 0 - 11
dmaster/src/main/java/cn/reghao/autodop/dmaster/monitor/controller/MonitorPageController.java

@@ -1,9 +1,7 @@
 package cn.reghao.autodop.dmaster.monitor.controller;
 
-import cn.reghao.autodop.dmaster.app.vo.KeyValue;
 import cn.reghao.autodop.dmaster.monitor.entity.MonitorJob;
 import cn.reghao.autodop.dmaster.monitor.repository.MonitorJobRepository;
-import cn.reghao.autodop.dmaster.notification.entity.NotifyGroup;
 import cn.reghao.autodop.dmaster.notification.repository.NotifyGroupRepository;
 import cn.reghao.autodop.dmaster.utils.db.PageList;
 import cn.reghao.autodop.dmaster.utils.db.PageSort;
@@ -16,8 +14,6 @@ import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.*;
-
 /**
  * @author reghao
  * @date 2019-08-30 18:49:15
@@ -50,13 +46,6 @@ public class MonitorPageController {
     @ApiOperation(value = "监控任务通知设置页面")
     @GetMapping("/notify/{id}")
     public String monitorNotifyPage(@PathVariable("id") Integer id, Model model) {
-        MonitorJob monitorJob = monitorJobRepository.findById(id).orElse(null);
-        Set<NotifyGroup> currentSet = new HashSet<>(monitorJob.getNotifyGroups());
-        List<NotifyGroup> list = receiverRepository.findAll();
-
-        model.addAttribute("jobId", monitorJob.getJobId());
-        model.addAttribute("currentSet", currentSet);
-        model.addAttribute("list", list);
         return "/monitor/monitornotify";
     }
 

+ 1 - 8
dmaster/src/main/java/cn/reghao/autodop/dmaster/monitor/entity/MonitorJob.java

@@ -1,16 +1,12 @@
 package cn.reghao.autodop.dmaster.monitor.entity;
 
 import cn.reghao.autodop.dmaster.common.orm.BaseEntity;
-import cn.reghao.autodop.dmaster.notification.entity.NotifyGroup;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
-import org.hibernate.annotations.LazyCollection;
-import org.hibernate.annotations.LazyCollectionOption;
 
 import javax.persistence.*;
 import javax.validation.constraints.NotBlank;
-import java.util.List;
 
 /**
  * 监控任务
@@ -24,16 +20,13 @@ import java.util.List;
 @Entity
 public class MonitorJob extends BaseEntity<Integer> {
     @NotBlank(message = "任务 ID 不能为空白字符串")
+    @Column(nullable = false, unique = true)
     private String jobId;
     @NotBlank(message = "任务类名不能为空白字符串")
     private String jobClassName;
     @NotBlank(message = "CRON 表达式不能为空白字符串")
     private String cronExp;
     private Boolean enable;
-    @ManyToMany(cascade = CascadeType.REFRESH)
-    @JoinColumn(name = "notify_group_id", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT))
-    @LazyCollection(LazyCollectionOption.FALSE)
-    private List<NotifyGroup> notifyGroups;
 
     public MonitorJob(String jobId, String jobClassName) {
         this.jobId = jobId;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/monitor/service/MonitorListService.java

@@ -2,7 +2,7 @@ package cn.reghao.autodop.dmaster.monitor.service;
 
 import cn.reghao.autodop.dmaster.app.entity.AppRunning;
 import cn.reghao.autodop.dmaster.app.repository.AppRunningRepository;
-import cn.reghao.autodop.dmaster.machine.entity.info.MachineInfo;
+import cn.reghao.autodop.dmaster.machine.entity.po.info.MachineInfo;
 import cn.reghao.autodop.dmaster.machine.repository.MachineInfoRepository;
 import cn.reghao.autodop.dmaster.monitor.entity.MonitorJob;
 import cn.reghao.autodop.dmaster.monitor.repository.MonitorJobRepository;

+ 2 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/monitor/service/MonitorService.java

@@ -1,7 +1,7 @@
 package cn.reghao.autodop.dmaster.monitor.service;
 
 import cn.reghao.autodop.dmaster.monitor.entity.MonitorJob;
-import cn.reghao.autodop.dmaster.notification.entity.NotifyGroup;
+import org.quartz.JobDataMap;
 
 /**
  * 监控任务管理接口
@@ -10,8 +10,7 @@ import cn.reghao.autodop.dmaster.notification.entity.NotifyGroup;
  * @date 2020-10-22 17:51:56
  */
 public interface MonitorService {
-    void setNotify(String jobId, NotifyGroup notifyGroup);
-    void addOrModifyJob(MonitorJob monitorJob);
+    void addOrModifyJob(MonitorJob monitorJob, JobDataMap jobDataMap) throws Exception;
     void deleteJob(String jobId);
     void startJob(String jobId);
     void pauseJob(String jobId);

+ 17 - 23
dmaster/src/main/java/cn/reghao/autodop/dmaster/monitor/service/MonitorServiceImpl.java

@@ -4,8 +4,12 @@ import cn.reghao.autodop.dmaster.monitor.entity.MonitorJob;
 import cn.reghao.autodop.dmaster.monitor.repository.MonitorJobRepository;
 import cn.reghao.autodop.dmaster.notification.entity.NotifyGroup;
 import lombok.extern.slf4j.Slf4j;
+import org.quartz.JobDataMap;
 import org.quartz.SchedulerException;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.io.IOException;
 
 /**
  * @author reghao
@@ -23,29 +27,19 @@ public class MonitorServiceImpl implements MonitorService {
     }
 
     @Override
-    public void setNotify(String jobId, NotifyGroup notifyGroup) {
-        MonitorJob monitorJob = monitorJobRepository.findByJobId(jobId);
-        monitorJob.getNotifyGroups().add(notifyGroup);
-        monitorJobRepository.save(monitorJob);
-    }
-
-    @Override
-    public synchronized void addOrModifyJob(MonitorJob monitorJob) {
+    @Transactional(rollbackFor = Exception.class)
+    public synchronized void addOrModifyJob(MonitorJob monitorJob, JobDataMap jobDataMap) throws Exception {
         String jobId = monitorJob.getJobId();
-        Integer id = monitorJob.getId();
-        try {
-            if (id == null) {
-                // 添加任务
-                //monitorScheduler.addJob(monitor, jobId);
-            } else {
-                // 修改任务
-                monitorScheduler.modifyJob(jobId, monitorJob.getCronExp());
-            }
-            // TODO 数据库和 Scheduler 中的数据应该总是保持一致
-            monitorJobRepository.save(monitorJob);
-        } catch (SchedulerException e) {
-            log.error("{}", e.getMessage());
+        MonitorJob jobEntity = monitorJobRepository.findByJobId(jobId);
+        if (jobEntity == null) {
+            // 添加任务
+            monitorScheduler.addJob(monitorJob, jobDataMap);
+        } else {
+            // 修改任务
+            monitorScheduler.modifyJob(jobId, monitorJob.getCronExp());
         }
+        // TODO 数据库和 Scheduler 中的数据应该总是保持一致
+        monitorJobRepository.save(monitorJob);
     }
 
     @Override
@@ -61,10 +55,10 @@ public class MonitorServiceImpl implements MonitorService {
     @Override
     public synchronized void startJob(String jobId) {
         MonitorJob monitorJob = monitorJobRepository.findByJobId(jobId);
-        if (monitorJob.getNotifyGroups().isEmpty()) {
+        /*if (monitorJob.getNotifyGroups().isEmpty()) {
             log.error("{} 没有通知组,添加通知组后再启用", jobId);
             return;
-        }
+        }*/
 
         boolean isEnable = monitorJob.getEnable();
         if (!isEnable) {

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/monitor/service/job/MachineHeartbeatCheckJob.java

@@ -2,8 +2,8 @@ package cn.reghao.autodop.dmaster.monitor.service.job;
 
 import cn.reghao.autodop.common.utils.DateTimeConverter;
 import cn.reghao.autodop.dmaster.machine.db.crud.MachineStatCrudService;
-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.StatusType;
 import cn.reghao.autodop.dmaster.notification.entity.NotifyGroup;
 import cn.reghao.autodop.dmaster.notification.service.NotifyService;
 import cn.reghao.autodop.dmaster.notification.service.notifier.ding.DingMsg;

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/mqttsub/processor/AppOpsProcessor.java

@@ -1,7 +1,7 @@
 package cn.reghao.autodop.dmaster.mqttsub.processor;
 
-import cn.reghao.autodop.common.dagent.app.api.data.AppStatus;
-import cn.reghao.autodop.common.dagent.app.api.data.DeployResult;
+import cn.reghao.autodop.common.dagent.app.AppStatus;
+import cn.reghao.autodop.common.dagent.app.DeployResult;
 import cn.reghao.autodop.common.message.CallResult;
 import cn.reghao.autodop.common.message.ops.AppOps;
 import cn.reghao.autodop.common.mqtt.DefaultMqttClient;

+ 11 - 4
dmaster/src/main/java/cn/reghao/autodop/dmaster/mqttsub/processor/DagentOpsProcessor.java

@@ -3,13 +3,16 @@ package cn.reghao.autodop.dmaster.mqttsub.processor;
 import cn.reghao.autodop.common.message.ops.DagentOps;
 import cn.reghao.autodop.common.utils.serializer.JsonConverter;
 import cn.reghao.autodop.common.message.ops.OpsProcessor;
-import cn.reghao.autodop.dmaster.machine.entity.info.MachineInfo;
-import cn.reghao.autodop.dmaster.machine.entity.stat.*;
+import cn.reghao.autodop.dmaster.machine.entity.po.MachineStat;
+import cn.reghao.autodop.dmaster.machine.entity.po.StatusType;
+import cn.reghao.autodop.dmaster.machine.entity.po.info.MachineInfo;
 import cn.reghao.autodop.dmaster.machine.service.DagentOpsService;
 import cn.reghao.autodop.dmaster.sys.entity.AppRuntimeLog;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 
+import java.time.LocalDateTime;
+
 /**
  * 分发处理 Dagent 相关的消息
  *
@@ -53,12 +56,16 @@ public class DagentOpsProcessor implements OpsProcessor {
 
     private void processDagentHeartbeat(String payload) {
         MachineStat machineStat = JsonConverter.jsonToObject(payload, MachineStat.class);
+        machineStat.setStatus(StatusType.UP.name());
+        machineStat.setLastCheck(LocalDateTime.now());
         dagentOpsService.heartbeat(machineStat);
     }
 
     private void processDagentShutdown(String payload) {
-        String machineId = JsonConverter.jsonToObject(payload, String.class);
-        dagentOpsService.shutdown(machineId);
+        MachineStat machineStat = JsonConverter.jsonToObject(payload, MachineStat.class);
+        machineStat.setStatus(StatusType.DOWN.name());
+        machineStat.setLastCheck(LocalDateTime.now());
+        dagentOpsService.shutdown(machineStat);
     }
 
     private void processDagentLog(String payload) {