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); + } }