From 7e9bf8049d0bbeec096f563ca93b2162990e5554 Mon Sep 17 00:00:00 2001 From: tomsun28 Date: Mon, 13 Dec 2021 01:16:56 +0800 Subject: [PATCH] =?UTF-8?q?[alerter,manage]=20=E5=91=8A=E8=AD=A6=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E6=8E=A5=E5=8F=A3=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AlertDefineController.java | 18 ++++++++++++++---- .../usthe/alert/dao/AlertDefineBindDao.java | 9 +++++++++ .../alert/service/AlertDefineService.java | 12 ++++++++++-- .../service/impl/AlertDefineServiceImpl.java | 11 ++++++----- .../manager/controller/MonitorsController.java | 10 ++++++++++ .../java/com/usthe/manager/dao/MonitorDao.java | 9 ++++++++- .../usthe/manager/service/MonitorService.java | 7 +++++++ .../service/impl/MonitorServiceImpl.java | 5 +++++ 8 files changed, 69 insertions(+), 12 deletions(-) diff --git a/alerter/src/main/java/com/usthe/alert/controller/AlertDefineController.java b/alerter/src/main/java/com/usthe/alert/controller/AlertDefineController.java index e277182..7587990 100644 --- a/alerter/src/main/java/com/usthe/alert/controller/AlertDefineController.java +++ b/alerter/src/main/java/com/usthe/alert/controller/AlertDefineController.java @@ -1,6 +1,7 @@ package com.usthe.alert.controller; import com.usthe.alert.pojo.entity.AlertDefine; +import com.usthe.alert.pojo.entity.AlertDefineBind; import com.usthe.alert.service.AlertDefineService; import com.usthe.common.entity.dto.Message; import io.swagger.annotations.Api; @@ -19,6 +20,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; +import java.util.List; import java.util.Map; import static com.usthe.common.util.CommonConstants.MONITOR_NOT_EXIST_CODE; @@ -79,13 +81,21 @@ public class AlertDefineController { return ResponseEntity.ok(new Message<>("Delete success")); } - @PostMapping(path = "/{alertId}/monitors") + @PostMapping(path = "/{alertDefineId}/monitors") @ApiOperation(value = "应用告警定义与监控关联", notes = "应用指定告警定义与监控关联关系") public ResponseEntity> applyAlertDefineMonitorsBind( - @ApiParam(value = "告警定义ID", example = "6565463543") @PathVariable("alertId") long alertId, - @RequestBody Map monitorMap) { - alertDefineService.applyBindAlertDefineMonitors(alertId, monitorMap); + @ApiParam(value = "告警定义ID", example = "6565463543") @PathVariable("alertDefineId") long alertDefineId, + @RequestBody List alertDefineBinds) { + alertDefineService.applyBindAlertDefineMonitors(alertDefineId, alertDefineBinds); return ResponseEntity.ok(new Message<>("Apply success")); } + @GetMapping(path = "/{alertDefineId}/monitors") + @ApiOperation(value = "应用告警定义与监控关联", notes = "应用指定告警定义与监控关联关系") + public ResponseEntity>> getAlertDefineMonitorsBind( + @ApiParam(value = "告警定义ID", example = "6565463543") @PathVariable("alertDefineId") long alertDefineId) { + List defineBinds = alertDefineService.getBindAlertDefineMonitors(alertDefineId); + return ResponseEntity.ok(new Message<>(defineBinds)); + } + } diff --git a/alerter/src/main/java/com/usthe/alert/dao/AlertDefineBindDao.java b/alerter/src/main/java/com/usthe/alert/dao/AlertDefineBindDao.java index 95c5df4..812b517 100644 --- a/alerter/src/main/java/com/usthe/alert/dao/AlertDefineBindDao.java +++ b/alerter/src/main/java/com/usthe/alert/dao/AlertDefineBindDao.java @@ -4,6 +4,8 @@ import com.usthe.alert.pojo.entity.AlertDefineBind; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import java.util.List; + /** * AlertDefineBind 数据库操作 * @author tom @@ -16,4 +18,11 @@ public interface AlertDefineBindDao extends JpaRepository * @param alertDefineId 告警定义ID */ void deleteAlertDefineBindsByAlertDefineIdEquals(Long alertDefineId); + + /** + * 根据告警定义ID查询监控关联信息 + * @param alertDefineId 告警定义ID + * @return 关联监控信息 + */ + List getAlertDefineBindsByAlertDefineIdEquals(Long alertDefineId); } diff --git a/alerter/src/main/java/com/usthe/alert/service/AlertDefineService.java b/alerter/src/main/java/com/usthe/alert/service/AlertDefineService.java index b01b768..790cbf4 100644 --- a/alerter/src/main/java/com/usthe/alert/service/AlertDefineService.java +++ b/alerter/src/main/java/com/usthe/alert/service/AlertDefineService.java @@ -1,6 +1,7 @@ package com.usthe.alert.service; import com.usthe.alert.pojo.entity.AlertDefine; +import com.usthe.alert.pojo.entity.AlertDefineBind; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.jpa.domain.Specification; @@ -72,9 +73,9 @@ public interface AlertDefineService { /** * 应用告警定于与监控关联关系 * @param alertId 告警定义ID - * @param monitorMap 监控ID-名称 MAP + * @param alertDefineBinds 关联关系 */ - void applyBindAlertDefineMonitors(Long alertId, Map monitorMap); + void applyBindAlertDefineMonitors(Long alertId, List alertDefineBinds); /** * 查询与此监控ID关联的指定指标组匹配的告警定义 @@ -92,4 +93,11 @@ public interface AlertDefineService { * @return 查询结果 */ Page getAlertDefines(Specification specification, PageRequest pageRequest); + + /** + * 根据告警定义ID查询其关联的监控列表关联信息 + * @param alertDefineId 告警定义ID + * @return 监控列表关联信息 + */ + List getBindAlertDefineMonitors(long alertDefineId); } diff --git a/alerter/src/main/java/com/usthe/alert/service/impl/AlertDefineServiceImpl.java b/alerter/src/main/java/com/usthe/alert/service/impl/AlertDefineServiceImpl.java index 3082ccf..a819e56 100644 --- a/alerter/src/main/java/com/usthe/alert/service/impl/AlertDefineServiceImpl.java +++ b/alerter/src/main/java/com/usthe/alert/service/impl/AlertDefineServiceImpl.java @@ -73,16 +73,12 @@ public class AlertDefineServiceImpl implements AlertDefineService { } @Override - public void applyBindAlertDefineMonitors(Long alertId, Map monitorMap) { + public void applyBindAlertDefineMonitors(Long alertId, List alertDefineBinds) { // todo 校验此告警定义和监控是否存在 // 先删除此告警的所有关联 alertDefineBindDao.deleteAlertDefineBindsByAlertDefineIdEquals(alertId); // 保存关联 - List alertDefineBinds = monitorMap.entrySet().stream().map(entry -> - AlertDefineBind.builder().alertDefineId(alertId).monitorId(entry.getKey()) - .monitorName(entry.getValue()).build()) - .collect(Collectors.toList()); alertDefineBindDao.saveAll(alertDefineBinds); } @@ -101,4 +97,9 @@ public class AlertDefineServiceImpl implements AlertDefineService { public Page getAlertDefines(Specification specification, PageRequest pageRequest) { return alertDefineDao.findAll(specification, pageRequest); } + + @Override + public List getBindAlertDefineMonitors(long alertDefineId) { + return alertDefineBindDao.getAlertDefineBindsByAlertDefineIdEquals(alertDefineId); + } } diff --git a/manager/src/main/java/com/usthe/manager/controller/MonitorsController.java b/manager/src/main/java/com/usthe/manager/controller/MonitorsController.java index f5fa312..fa6d442 100644 --- a/manager/src/main/java/com/usthe/manager/controller/MonitorsController.java +++ b/manager/src/main/java/com/usthe/manager/controller/MonitorsController.java @@ -14,6 +14,7 @@ import org.springframework.data.jpa.domain.Specification; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @@ -82,6 +83,15 @@ public class MonitorsController { return ResponseEntity.ok(message); } + @GetMapping(path = "/{app}") + @ApiOperation(value = "查询指定监控类型的监控列表", notes = "根据查询过滤指定监控类型的所有获取监控信息列表") + public ResponseEntity>> getAppMonitors( + @ApiParam(value = "监控类型", example = "linux") @PathVariable(required = false) String app) { + List monitors = monitorService.getAppMonitors(app); + Message> message = new Message<>(monitors); + return ResponseEntity.ok(message); + } + @DeleteMapping @ApiOperation(value = "批量删除监控", notes = "根据监控ID列表批量删除监控项") public ResponseEntity> deleteMonitors( diff --git a/manager/src/main/java/com/usthe/manager/dao/MonitorDao.java b/manager/src/main/java/com/usthe/manager/dao/MonitorDao.java index da42527..df9bd8a 100644 --- a/manager/src/main/java/com/usthe/manager/dao/MonitorDao.java +++ b/manager/src/main/java/com/usthe/manager/dao/MonitorDao.java @@ -25,12 +25,19 @@ public interface MonitorDao extends JpaRepository, JpaSpecificati void deleteAllByIdIn(Set monitorIds); /** - * 根据监控ID列表查询监控 + * 根据监控ID列表查询监控 * @param monitorIds 监控ID列表 * @return 监控列表 */ List findMonitorsByIdIn(Set monitorIds); + /** + * 根据监控类型查询监控 + * @param app 监控类型 + * @return 监控列表 + */ + List findMonitorsByAppEquals(String app); + /** * 查询监控类别及其对应的监控数量 * @return 监控类别与监控数量映射 diff --git a/manager/src/main/java/com/usthe/manager/service/MonitorService.java b/manager/src/main/java/com/usthe/manager/service/MonitorService.java index 15cc1a6..5a80c53 100644 --- a/manager/src/main/java/com/usthe/manager/service/MonitorService.java +++ b/manager/src/main/java/com/usthe/manager/service/MonitorService.java @@ -114,4 +114,11 @@ public interface MonitorService { * @param status 监控状态 */ void updateMonitorStatus(Long monitorId, byte status); + + /** + * 查询指定监控类型下的所有监控信息列表 + * @param app 监控类型 + * @return 监控列表 + */ + List getAppMonitors(String app); } diff --git a/manager/src/main/java/com/usthe/manager/service/impl/MonitorServiceImpl.java b/manager/src/main/java/com/usthe/manager/service/impl/MonitorServiceImpl.java index c3c985c..410e020 100644 --- a/manager/src/main/java/com/usthe/manager/service/impl/MonitorServiceImpl.java +++ b/manager/src/main/java/com/usthe/manager/service/impl/MonitorServiceImpl.java @@ -345,4 +345,9 @@ public class MonitorServiceImpl implements MonitorService { public void updateMonitorStatus(Long monitorId, byte status) { monitorDao.updateMonitorStatus(monitorId, status); } + + @Override + public List getAppMonitors(String app) { + return monitorDao.findMonitorsByAppEquals(app); + } }