Parcourir la source

机器模块和 JVM 状态页面

reghao il y a 4 ans
Parent
commit
1b9ff538b2

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


+ 7 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/vo/MachineAddress.java

@@ -0,0 +1,7 @@
+package cn.reghao.autodop.dmaster.machine.entity.vo;
+/**     
+ * @author          reghao
+ * @date            2021-07-09 17:10:47
+ */
+public class MachineAddress {
+}

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

@@ -2,12 +2,9 @@ package cn.reghao.autodop.dmaster.machine.entity.vo;
 
 import cn.reghao.autodop.common.utils.DateTimeConverter;
 import cn.reghao.autodop.dmaster.machine.entity.po.MachineHost;
-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;
 import java.util.List;
 
 /**

+ 0 - 25
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/entity/vo/MachineStatus.java

@@ -1,25 +0,0 @@
-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 lombok.Data;
-
-import java.time.LocalDateTime;
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2020-12-25 17:53:15
- */
-@Data
-public class MachineStatus {
-    private String machineId;
-    private String machineIpv4;
-    private String status;
-    private LocalDateTime lastCheck;
-    private Integer tcpConnNum;
-    private MemoryUsage memoryUsage;
-    private List<DiskUsage> diskUsages;
-    private MemoryInfo memoryInfo;
-    private List<DiskInfo> diskInfos;
-}

+ 0 - 43
dmaster/src/main/java/cn/reghao/autodop/dmaster/monitor/controller/JvmPageController.java

@@ -1,43 +0,0 @@
-package cn.reghao.autodop.dmaster.monitor.controller;
-
-import cn.reghao.autodop.common.jvm.pojo.JvmInfo;
-import cn.reghao.autodop.common.jvm.pojo.JvmStat;
-import cn.reghao.autodop.dmaster.monitor.service.JvmMonitorService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.*;
-
-/**
- * @author reghao
- * @date 2019-11-15 08:44:50
- */
-@Slf4j
-@Api(tags = "JVM 监控页面")
-@Controller
-@RequestMapping("/monitor/jvm")
-public class JvmPageController {
-    private JvmMonitorService jvmMonitorService;
-
-    public JvmPageController(JvmMonitorService jvmMonitorService) {
-        this.jvmMonitorService = jvmMonitorService;
-    }
-
-    @ApiOperation(value = "JVM 信息页面")
-    @GetMapping("/info")
-    public String jvmInfo(Model model) {
-        JvmInfo jvmInfo = jvmMonitorService.jvmInfo();
-        model.addAttribute("jvmInfo", jvmInfo);
-        return "/monitor/jvminfo";
-    }
-
-    @ApiOperation(value = "JVM 状态页面")
-    @GetMapping("/stat")
-    public String jvmStat(Model model) {
-        JvmStat jvmStat = jvmMonitorService.jvmStat();
-        model.addAttribute("jvmStat", jvmStat);
-        return "/monitor/jvmstat";
-    }
-}

+ 0 - 27
dmaster/src/main/java/cn/reghao/autodop/dmaster/monitor/service/JvmMonitorService.java

@@ -1,27 +0,0 @@
-package cn.reghao.autodop.dmaster.monitor.service;
-
-import cn.reghao.autodop.common.jvm.JVM;
-import cn.reghao.autodop.common.jvm.pojo.JvmInfo;
-import cn.reghao.autodop.common.jvm.pojo.JvmStat;
-import org.springframework.stereotype.Service;
-
-/**
- * @author reghao
- * @date 2020-10-22 17:51:56
- */
-@Service
-public class JvmMonitorService {
-    private JVM jvm;
-
-    public JvmMonitorService() {
-        this.jvm = new JVM();
-    }
-
-    public JvmInfo jvmInfo() {
-        return jvm.info();
-    }
-
-    public JvmStat jvmStat() {
-        return jvm.stat();
-    }
-}

+ 76 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/sys/controller/SysController.java

@@ -0,0 +1,76 @@
+package cn.reghao.autodop.dmaster.sys.controller;
+
+import cn.reghao.autodop.common.utils.serializer.JsonConverter;
+import cn.reghao.autodop.dmaster.auth.entity.Role;
+import cn.reghao.autodop.dmaster.auth.repository.RoleRepository;
+import cn.reghao.autodop.dmaster.sys.service.BakService;
+import cn.reghao.autodop.dmaster.sys.service.SysConfig;
+import cn.reghao.autodop.dmaster.utils.UploadDownload;
+import cn.reghao.autodop.dmaster.utils.WebBody;
+import cn.reghao.autodop.dmaster.utils.db.PageList;
+import cn.reghao.autodop.dmaster.utils.db.PageSort;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.nio.charset.StandardCharsets;
+
+/**
+ * @author reghao
+ * @date 2021-04-04 21:24:18
+ */
+@Api(tags = "用户页面")
+@RequestMapping("/sys")
+@Controller
+public class SysPageController {
+    private BakService bakService;
+    private UploadDownload uploadDownload;
+    private RoleRepository roleRepository;
+
+    public SysPageController(BakService bakService,
+                             UploadDownload uploadDownload,
+                             RoleRepository roleRepository) {
+        this.bakService = bakService;
+        this.uploadDownload = uploadDownload;
+        this.roleRepository = roleRepository;
+    }
+
+    @ApiOperation(value = "系统备份还原页面")
+    @GetMapping("/bak")
+    public String sysBakPage(Model model) {
+        PageRequest pageRequest = PageSort.pageRequest();
+        Page<Role> rolePage = roleRepository.findAll(pageRequest);
+        PageList<Role> pageList = PageList.pageList(rolePage);
+
+        model.addAttribute("page", rolePage);
+        model.addAttribute("list", pageList.getList());
+        return "/sys/bak";
+    }
+
+    @ApiOperation(value = "数据备份")
+    @GetMapping("/bak/export")
+    @ResponseBody
+    public void dataBackup(HttpServletResponse response) throws IOException {
+        String json = bakService.bakSysConfig();
+        ByteArrayInputStream bytesIn = new ByteArrayInputStream(json.getBytes());
+        BufferedInputStream bis = new BufferedInputStream(bytesIn);
+        uploadDownload.download(bis, response);
+    }
+
+    @ApiOperation(value = "数据还原")
+    @PostMapping("/bak/import")
+    @ResponseBody
+    public String dataRestore(@RequestParam("file") MultipartFile file) throws IOException {
+        byte[] bytes = file.getBytes();
+        String json = new String(bytes, StandardCharsets.UTF_8);
+        SysConfig sysConfig = JsonConverter.jsonToObject(json, SysConfig.class);
+        return WebBody.success();
+    }
+}

+ 0 - 53
dmaster/src/main/resources/templates/monitor/jvminfo.html

@@ -1,53 +0,0 @@
-<!DOCTYPE html>
-<html xmlns:th="http://www.thymeleaf.org">
-<head th:replace="/common/template :: header(~{::title},~{::link},~{::style})"></head>
-
-<body>
-    <div class="timo-detail-page">
-        <div class="timo-detail-title">系统信息</div>
-        <table class="layui-table timo-detail-table">
-            <tbody>
-            <tr>
-                <th>系统名字</th>
-                <td th:text="${jvmInfo.osName}"></td>
-                <th>系统架构</th>
-                <td th:text="${jvmInfo.osArch}"></td>
-                <th>系统版本</th>
-                <td th:text="${jvmInfo.osVersion}"></td>
-            </tr>
-            </tbody>
-        </table>
-        <div class="timo-detail-title">Java 信息</div>
-        <table class="layui-table timo-detail-table">
-            <tbody>
-            <tr>
-                <th>Java Runtime 名字</th>
-                <td th:text="${jvmInfo.javaRuntimeName}"></td>
-                <th>Java Runtime 版本</th>
-                <td th:text="${jvmInfo.javaRuntimeVersion}"></td>
-                <th>Java Class 版本</th>
-                <td th:text="${jvmInfo.javaClassVersion}"></td>
-            </tr>
-            </tbody>
-        </table>
-        <div class="timo-detail-title">JVM 信息</div>
-        <table class="layui-table timo-detail-table">
-            <tbody>
-            <tr>
-                <th>JVM 名字</th>
-                <td th:text="${jvmInfo.jvmName}"></td>
-                <th>JVM 版本</th>
-                <td th:text="${jvmInfo.jvmVersion}"></td>
-                <th>JVM Vendor</th>
-                <td th:text="${jvmInfo.jvmVendor}"></td>
-                <th>JVM 进程 ID</th>
-                <td th:text="${jvmInfo.jvmPid}"></td>
-                <th>JVM 启动时间</th>
-                <td th:text="${jvmInfo.jvmStartTime}"></td>
-            </tr>
-            </tbody>
-        </table>
-    </div>
-    <script th:replace="/common/template :: script"></script>
-</body>
-</html>

+ 0 - 51
dmaster/src/main/resources/templates/monitor/jvmstat.html

@@ -1,51 +0,0 @@
-<!DOCTYPE html>
-<html xmlns:th="http://www.thymeleaf.org">
-<head th:replace="/common/template :: header(~{::title},~{::link},~{::style})"></head>
-
-<body>
-    <div class="timo-detail-page">
-        <div class="timo-detail-title">类加载详情</div>
-        <table class="layui-table timo-detail-table">
-            <tbody>
-            <tr>
-                <th>已加载类数量</th>
-                <td th:text="${jvmStat.jvmClassesLoaded}"></td>
-                <th>未加载类数量</th>
-                <td th:text="${jvmStat.jvmClassesUnloaded}"></td>
-                <th>JVM 总的类总量</th>
-                <td th:text="${jvmStat.jvmClassesTotal}"></td>
-            </tr>
-            </tbody>
-        </table>
-        <div class="timo-detail-title">堆区和非堆区内存详情</div>
-        <table class="layui-table timo-detail-table">
-            <tbody>
-            <tr>
-                <th>初始化堆大小</th>
-                <td th:text="${jvmStat.jvmMemoryHeapInit}"></td>
-                <th>堆最大值</th>
-                <td th:text="${jvmStat.jvmMemoryHeapMax}"></td>
-                <th>已使用堆大小</th>
-                <td th:text="${jvmStat.jvmMemoryHeapUsed}"></td>
-                <th>已提交堆大小</th>
-                <td th:text="${jvmStat.jvmMemoryHeapCommitted}"></td>
-            </tr>
-            </tbody>
-        </table>
-        <div class="timo-detail-title">线程详情</div>
-        <table class="layui-table timo-detail-table">
-            <tbody>
-            <tr>
-                <th>活动线程数</th>
-                <td th:text="${jvmStat.jvmThreadsLive}"></td>
-                <th>守护线程数</th>
-                <td th:text="${jvmStat.jvmThreadsDaemon}"></td>
-                <th>线程最大数</th>
-                <td th:text="${jvmStat.jvmThreadsPeak}"></td>
-            </tr>
-            </tbody>
-        </table>
-    </div>
-    <script th:replace="/common/template :: script"></script>
-</body>
-</html>

+ 56 - 0
dmaster/src/main/resources/templates/sys/jvmstatus.html

@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<html xmlns:th="http://www.thymeleaf.org">
+<head th:replace="/common/template :: header(~{::title},~{::link},~{::style})"></head>
+
+<body class="timo-layout-page">
+<div class="layui-card" th:attr="data-url=@{/sys/bak}">
+    <div class="layui-card-header timo-card-header">
+        <span><i class="fa fa-bars"></i> 备份还原</span>
+        <i class="layui-icon layui-icon-refresh refresh-btn"></i>
+    </div>
+    <div class="layui-card-body">
+        <div class="timo-table-wrap">
+            <table class="layui-table timo-table">
+                <thead>
+                <tr>
+                    <th class="timo-table-checkbox">
+                        <label class="timo-checkbox"><input type="checkbox">
+                            <i class="layui-icon layui-icon-ok"></i></label>
+                    </th>
+                    <th class="sortable" data-field="title">数据源</th>
+                    <th class="sortable" data-field="name">角色名</th>
+                    <th class="sortable" data-field="createTime">最近一次备份</th>
+                    <th class="sortable" data-field="updateTime">最近一次还原</th>
+                    <th>备份</th>
+                    <th>还原</th>
+                </tr>
+                </thead>
+                <tbody>
+                <tr th:each="item:${list}">
+                    <td><label class="timo-checkbox"><input type="checkbox" th:value="${item.id}">
+                        <i class="layui-icon layui-icon-ok"></i></label></td>
+                    <td th:text="${item.title}">数据源</td>
+                    <td th:text="${item.name}">角色名</td>
+                    <td th:text="${item.createTime}">最近一次备份</td>
+                    <td th:text="${item.updateTime}">最近一次还原</td>
+                    <td>
+                        <a th:href="@{/sys/bak/export}"><i class="fa fa-download"></i></a>
+                    </td>
+                    <td>
+                        <button type="button" class="layui-btn upload-image" name="file[]"
+                                th:attr="up-url=@{/sys/bak/import}" up-field="path">
+                            <i class="fa fa-upload"></i>
+                        </button>
+                    </td>
+                </tr>
+                </tbody>
+            </table>
+        </div>
+    </div>
+</div>
+
+<script th:replace="/common/template :: script"></script>
+<script type="text/javascript">
+</script>
+</body>
+</html>