From 36926f0fa2182a4cfbe66dcf52406f28e167890f Mon Sep 17 00:00:00 2001 From: tomsun28 Date: Sat, 5 Mar 2022 15:17:52 +0800 Subject: [PATCH] =?UTF-8?q?[manager,webapp]=E6=96=B0=E5=A2=9E=E7=9B=91?= =?UTF-8?q?=E6=8E=A7=E5=A4=A7=E7=B1=BB=E5=88=AB=EF=BC=8C=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E7=9B=91=E6=8E=A7=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E8=87=AA=E5=8A=A8=E6=B8=B2=E6=9F=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/usthe/common/entity/job/Job.java | 5 ++ .../manager/controller/AppController.java | 2 +- .../com/usthe/manager/pojo/dto/Hierarchy.java | 11 ++-- .../manager/service/impl/AppServiceImpl.java | 1 + .../main/resources/define/app/A-example.yml | 2 + manager/src/main/resources/define/app/api.yml | 2 + .../main/resources/define/app/fullsite.yml | 1 + .../src/main/resources/define/app/mysql.yml | 1 + .../src/main/resources/define/app/ping.yml | 2 + .../src/main/resources/define/app/port.yml | 1 + .../src/main/resources/define/app/telnet.yml | 1 + .../src/main/resources/define/app/website.yml | 1 + .../src/app/core/startup/startup.service.ts | 24 +++++++-- web-app/src/assets/app-data.json | 53 ++++++------------- web-app/src/assets/i18n/zh-CN.json | 3 +- 15 files changed, 65 insertions(+), 45 deletions(-) diff --git a/common/src/main/java/com/usthe/common/entity/job/Job.java b/common/src/main/java/com/usthe/common/entity/job/Job.java index 2c79f85..f8a4f5e 100644 --- a/common/src/main/java/com/usthe/common/entity/job/Job.java +++ b/common/src/main/java/com/usthe/common/entity/job/Job.java @@ -42,6 +42,11 @@ public class Job { * 监控ID 应用ID */ private long monitorId; + /** + * 监控的大类别 + * service-应用服务监控 db-数据库监控 custom-自定义监控 os-操作系统监控 + */ + private String category; /** * 监控的类型 eg: linux | mysql | jvm */ diff --git a/manager/src/main/java/com/usthe/manager/controller/AppController.java b/manager/src/main/java/com/usthe/manager/controller/AppController.java index 48f544b..d9fc9f3 100644 --- a/manager/src/main/java/com/usthe/manager/controller/AppController.java +++ b/manager/src/main/java/com/usthe/manager/controller/AppController.java @@ -50,7 +50,7 @@ public class AppController { } @GetMapping(path = "/hierarchy") - @ApiOperation(value = "查询全部层级的监控类型", notes = "查询所有监控类型,以层级结构输出") + @ApiOperation(value = "查询全部监控指标层级", notes = "查询所有监控的类型-指标组-指标层级,以层级结构输出") public ResponseEntity>> queryAppsHierarchy( @ApiParam(value = "语言类型", example = "zh-CN", defaultValue = "zh-CN") @RequestParam(name = "lang", required = false) String lang) { diff --git a/manager/src/main/java/com/usthe/manager/pojo/dto/Hierarchy.java b/manager/src/main/java/com/usthe/manager/pojo/dto/Hierarchy.java index f240066..05b50ca 100644 --- a/manager/src/main/java/com/usthe/manager/pojo/dto/Hierarchy.java +++ b/manager/src/main/java/com/usthe/manager/pojo/dto/Hierarchy.java @@ -21,15 +21,18 @@ import static io.swagger.annotations.ApiModelProperty.AccessMode.READ_WRITE; @Data public class Hierarchy { - @ApiModelProperty(value = "属性值", example = "linux", accessMode = READ_WRITE, position = 0) + @ApiModelProperty(value = "类别值", example = "os", accessMode = READ_WRITE, position = 0) + String category; + + @ApiModelProperty(value = "属性值", example = "linux", accessMode = READ_WRITE, position = 1) String value; - @ApiModelProperty(value = "属性国际化标签", example = "Linux系统", accessMode = READ_WRITE, position = 1) + @ApiModelProperty(value = "属性国际化标签", example = "Linux系统", accessMode = READ_WRITE, position = 2) String label; - @ApiModelProperty(value = "是否是叶子节点", example = "true", accessMode = READ_WRITE, position = 2) + @ApiModelProperty(value = "是否是叶子节点", example = "true", accessMode = READ_WRITE, position = 3) Boolean isLeaf = false; - @ApiModelProperty(value = "下一关联层级", accessMode = READ_WRITE, position = 3) + @ApiModelProperty(value = "下一关联层级", accessMode = READ_WRITE, position = 4) private List children; } diff --git a/manager/src/main/java/com/usthe/manager/service/impl/AppServiceImpl.java b/manager/src/main/java/com/usthe/manager/service/impl/AppServiceImpl.java index 8b76cde..5c8a337 100644 --- a/manager/src/main/java/com/usthe/manager/service/impl/AppServiceImpl.java +++ b/manager/src/main/java/com/usthe/manager/service/impl/AppServiceImpl.java @@ -84,6 +84,7 @@ public class AppServiceImpl implements AppService, CommandLineRunner { List hierarchies = new LinkedList<>(); for (Job job : appDefines.values()) { Hierarchy hierarchyApp = new Hierarchy(); + hierarchyApp.setCategory(job.getCategory()); hierarchyApp.setValue(job.getApp()); Map nameMap = job.getName(); if (nameMap != null) { diff --git a/manager/src/main/resources/define/app/A-example.yml b/manager/src/main/resources/define/app/A-example.yml index 31f8999..9123b53 100644 --- a/manager/src/main/resources/define/app/A-example.yml +++ b/manager/src/main/resources/define/app/A-example.yml @@ -1,3 +1,5 @@ +# 此监控类型所属类别:service-应用服务监控 db-数据库监控 custom-自定义监控 os-操作系统监控 +category: custom # 监控应用类型(与文件名保持一致) eg: linux windows tomcat mysql aws... app: example name: diff --git a/manager/src/main/resources/define/app/api.yml b/manager/src/main/resources/define/app/api.yml index 8307693..5302527 100644 --- a/manager/src/main/resources/define/app/api.yml +++ b/manager/src/main/resources/define/app/api.yml @@ -1,3 +1,5 @@ +# 此监控类型所属类别:service-应用服务监控 db-数据库监控 custom-自定义监控 os-操作系统监控 +category: service # 监控应用类型名称(与文件名保持一致) eg: linux windows tomcat mysql aws... app: api name: diff --git a/manager/src/main/resources/define/app/fullsite.yml b/manager/src/main/resources/define/app/fullsite.yml index 8422a93..31746b0 100644 --- a/manager/src/main/resources/define/app/fullsite.yml +++ b/manager/src/main/resources/define/app/fullsite.yml @@ -1,3 +1,4 @@ +category: service app: fullsite name: zh-CN: 全站监控 diff --git a/manager/src/main/resources/define/app/mysql.yml b/manager/src/main/resources/define/app/mysql.yml index bd5aa6c..bbc3784 100644 --- a/manager/src/main/resources/define/app/mysql.yml +++ b/manager/src/main/resources/define/app/mysql.yml @@ -1,3 +1,4 @@ +category: db app: mysql name: zh-CN: MYSQL数据库 diff --git a/manager/src/main/resources/define/app/ping.yml b/manager/src/main/resources/define/app/ping.yml index 20f902a..f036683 100644 --- a/manager/src/main/resources/define/app/ping.yml +++ b/manager/src/main/resources/define/app/ping.yml @@ -1,3 +1,5 @@ +# 此监控类型所属类别:service-应用服务监控 db-数据库监控 custom-自定义监控 os-操作系统监控 +category: service # 监控应用类型名称(与文件名保持一致) eg: linux windows tomcat mysql aws... app: ping name: diff --git a/manager/src/main/resources/define/app/port.yml b/manager/src/main/resources/define/app/port.yml index 3cea017..7b55a6a 100644 --- a/manager/src/main/resources/define/app/port.yml +++ b/manager/src/main/resources/define/app/port.yml @@ -1,3 +1,4 @@ +category: service app: port name: zh-CN: 端口可用性 diff --git a/manager/src/main/resources/define/app/telnet.yml b/manager/src/main/resources/define/app/telnet.yml index 2cfec94..b3bfb81 100644 --- a/manager/src/main/resources/define/app/telnet.yml +++ b/manager/src/main/resources/define/app/telnet.yml @@ -1,3 +1,4 @@ +category: service app: telnet name: zh-CN: TELNET端口可用性 diff --git a/manager/src/main/resources/define/app/website.yml b/manager/src/main/resources/define/app/website.yml index cbb278f..8896994 100644 --- a/manager/src/main/resources/define/app/website.yml +++ b/manager/src/main/resources/define/app/website.yml @@ -1,3 +1,4 @@ +category: service app: website name: zh-CN: 网站监测 diff --git a/web-app/src/app/core/startup/startup.service.ts b/web-app/src/app/core/startup/startup.service.ts index 3253575..5ef15a7 100644 --- a/web-app/src/app/core/startup/startup.service.ts +++ b/web-app/src/app/core/startup/startup.service.ts @@ -3,7 +3,7 @@ import { Injectable, Inject } from '@angular/core'; import { Router } from '@angular/router'; import { ACLService } from '@delon/acl'; import { DA_SERVICE_TOKEN, ITokenService } from '@delon/auth'; -import { ALAIN_I18N_TOKEN, MenuService, SettingsService, TitleService } from '@delon/theme'; +import { ALAIN_I18N_TOKEN, Menu, MenuService, SettingsService, TitleService } from '@delon/theme'; import type { NzSafeAny } from 'ng-zorro-antd/core/types'; import { NzIconService } from 'ng-zorro-antd/icon'; import { Observable, zip, of } from 'rxjs'; @@ -37,13 +37,17 @@ export class StartupService { private viaHttp(): Observable { const defaultLang = this.i18n.defaultLang; - return zip(this.i18n.loadLangData(defaultLang), this.httpClient.get('./assets/app-data.json')).pipe( + return zip( + this.i18n.loadLangData(defaultLang), + this.httpClient.get('./assets/app-data.json'), + this.httpClient.get('/apps/hierarchy') + ).pipe( catchError((res: NzSafeAny) => { console.warn(`StartupService.load: Network request failed`, res); setTimeout(() => this.router.navigateByUrl(`/exception/500`)); return []; }), - map(([langData, appData]: [Record, NzSafeAny]) => { + map(([langData, appData, menuData]: [Record, NzSafeAny, NzSafeAny]) => { // setting language data this.i18n.use(defaultLang, langData); @@ -56,6 +60,20 @@ export class StartupService { this.aclService.setFull(true); // Menu data, https://ng-alain.com/theme/menu this.menuService.add(appData.menu); + menuData.data.forEach((item: { category: string; value: string }) => { + let category = item.category; + let app = item.value; + let menu: Menu | null = this.menuService.getItem(category); + if (menu != null) { + menu.children?.push({ + text: app, + link: `/monitors?app=${app}`, + i18n: `monitor.app.${app}` + }); + } + }); + // 刷新菜单 + this.menuService.resume(); // Can be set page suffix title, https://ng-alain.com/theme/title this.titleService.suffix = appData.app.name; }) diff --git a/web-app/src/assets/app-data.json b/web-app/src/assets/app-data.json index 9031f39..3a2c19e 100644 --- a/web-app/src/assets/app-data.json +++ b/web-app/src/assets/app-data.json @@ -30,48 +30,29 @@ "hideInBreadcrumb": true, "children": [ { + "key": "service", "text": "应用服务", "i18n": "menu.monitor.service", - "icon": "anticon-cloud", - "children": [ - { - "text": "website", - "link": "/monitors?app=website", - "i18n": "monitor.app.website" - }, - { - "text": "api", - "link": "/monitors?app=api", - "i18n": "monitor.app.api" - }, - { - "text": "ping", - "link": "/monitors?app=ping", - "i18n": "monitor.app.ping" - }, - { - "text": "port", - "link": "/monitors?app=port", - "i18n": "monitor.app.port" - }, - { - "text": "fullsite", - "link": "/monitors?app=fullsite", - "i18n": "monitor.app.fullsite" - } - ] + "icon": "anticon-cloud" }, { + "key": "db", "text": "数据库", "i18n": "menu.monitor.db", - "icon": "anticon-database", - "children": [ - { - "text": "Mysql", - "link": "/monitors?app=mysql", - "i18n": "monitor.app.mysql" - } - ] + "icon": "anticon-database" + }, + { + "key": "os", + "text": "操作系统", + "hide": true, + "i18n": "menu.monitor.os", + "icon": "anticon-windows" + }, + { + "key": "custom", + "text": "自定义", + "i18n": "menu.monitor.custom", + "icon": "anticon-skin" } ] }, diff --git a/web-app/src/assets/i18n/zh-CN.json b/web-app/src/assets/i18n/zh-CN.json index 14a4886..127442a 100644 --- a/web-app/src/assets/i18n/zh-CN.json +++ b/web-app/src/assets/i18n/zh-CN.json @@ -12,7 +12,8 @@ "service": "应用服务监控", "db": "数据库监控", "os": "操作系统监控", - "mid": "中间件监控" + "mid": "中间件监控", + "custom": "自定义监控" }, "account": { "": "个人页",