agent接收数据类型调整匹配,完善资源模板管理、资源监控策略逻辑。
This commit is contained in:
@@ -80,5 +80,13 @@ public interface RemoteRevenueConfigService
|
||||
*/
|
||||
@PostMapping("/registration/list")
|
||||
public R<TableDataInfo> getRegistrationList(@RequestBody RmResourceRegistrationRemote rmResourceRegistrationRemote, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
|
||||
/**
|
||||
* 根据硬件SN查询资源信息
|
||||
* @param rmResourceRegistrationRemote
|
||||
* @param source
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/registration/getListByHardwareSn")
|
||||
public R<RmResourceRegistrationRemote> getListByHardwareSn(@RequestBody RmResourceRegistrationRemote rmResourceRegistrationRemote, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
|
||||
|
||||
}
|
||||
|
||||
@@ -61,6 +61,11 @@ public class RemoteRevenueConfigFallbackFactory implements FallbackFactory<Remot
|
||||
public R<TableDataInfo> getRegistrationList(RmResourceRegistrationRemote rmResourceRegistrationRemote, String source) {
|
||||
return R.fail("获取资源注册列表信息失败" + throwable.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public R<RmResourceRegistrationRemote> getListByHardwareSn(RmResourceRegistrationRemote rmResourceRegistrationRemote, String source) {
|
||||
return R.fail("根据SN获取资源注册列表信息失败" + throwable.getMessage());
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.ruoyi.system.controller;
|
||||
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.ruoyi.common.core.web.controller.BaseController;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.web.page.PageDomain;
|
||||
import com.ruoyi.common.core.web.page.TableDataInfo;
|
||||
import com.ruoyi.system.domain.RmResourceGroup;
|
||||
import com.ruoyi.system.domain.RmResourceRegistration;
|
||||
@@ -12,8 +12,6 @@ import com.ruoyi.system.service.IRmResourceRegistrationService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 资源监控API
|
||||
*
|
||||
@@ -35,7 +33,7 @@ public class ResourceMonitorController extends BaseController
|
||||
* 获取资源分组列表
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("resourceGroupList")
|
||||
@GetMapping("/resourceGroupList")
|
||||
public AjaxResult resourceGroupList(){
|
||||
RmResourceGroup rmResourceGroup = new RmResourceGroup();
|
||||
return success(rmResourceGroupService.selectRmResourceGroupList(rmResourceGroup));
|
||||
@@ -45,7 +43,7 @@ public class ResourceMonitorController extends BaseController
|
||||
* 服务器整体发送带宽利用率
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("trafficRateByServer")
|
||||
@GetMapping("/trafficRateByServer")
|
||||
public AjaxResult trafficRateByServer(){
|
||||
return success(epsInitialTrafficDataService.trafficRateByServer());
|
||||
}
|
||||
@@ -54,14 +52,10 @@ public class ResourceMonitorController extends BaseController
|
||||
* 获取资源列表
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("getRegisterListByGroupId")
|
||||
@PostMapping("/getRegisterListByGroupId")
|
||||
public TableDataInfo getRegisterListByGroupId(@RequestBody RmResourceGroup rmResourceGroup){
|
||||
// 拿到注册信息
|
||||
PageDomain pageDomain = new PageDomain();
|
||||
pageDomain.setPageNum(rmResourceGroup.getPageNum());
|
||||
pageDomain.setPageSize(rmResourceGroup.getPageSize());
|
||||
startPage(pageDomain);
|
||||
List<RmResourceRegistration> list = rmResourceGroupService.getRegisterList(rmResourceGroup);
|
||||
return getDataTable(list);
|
||||
PageInfo<RmResourceRegistration> pageInfo = rmResourceGroupService.getRegisterList(rmResourceGroup);
|
||||
return getDataTable(pageInfo.getList(), pageInfo.getTotal());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -155,6 +155,15 @@ public class RmResourceRegistrationController extends BaseController
|
||||
List<RmResourceRegistration> list = rmResourceRegistrationService.getRegistrationByIds(ids);
|
||||
return R.ok(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询资源注册列表
|
||||
*/
|
||||
@InnerAuth
|
||||
@PostMapping("/getListByHardwareSn")
|
||||
public R<RmResourceRegistration> getListByHardwareSn(@RequestBody RmResourceRegistration rmResourceRegistration)
|
||||
{
|
||||
List<RmResourceRegistration> list = rmResourceRegistrationService.selectRmResourceRegistrationList(rmResourceRegistration);
|
||||
return R.ok(list.get(0));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -68,4 +68,8 @@ public interface RmResourceGroupMapper
|
||||
public RmResourceGroup selectMonitorMsgAndGroupMsg(Long id);
|
||||
|
||||
int exitsResourceById(RmResourceGroup rmResourceGroup);
|
||||
|
||||
int updateRmPolicyStatus(Long resourceGroupId);
|
||||
|
||||
int updateScriptPolicyStatus(Long resourceGroupId);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.ruoyi.system.service;
|
||||
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.ruoyi.system.domain.RmResourceGroup;
|
||||
import com.ruoyi.system.domain.RmResourceRegistration;
|
||||
|
||||
@@ -61,7 +62,7 @@ public interface IRmResourceGroupService
|
||||
*/
|
||||
public int deleteRmResourceGroupById(Long id);
|
||||
|
||||
List<RmResourceRegistration> getRegisterList(RmResourceGroup rmResourceGroup);
|
||||
PageInfo<RmResourceRegistration> getRegisterList(RmResourceGroup rmResourceGroup);
|
||||
|
||||
String exitsResourceById(RmResourceGroup rmResourceGroup);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.ruoyi.system.service.impl;
|
||||
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.ruoyi.common.core.utils.DateUtils;
|
||||
import com.ruoyi.common.core.web.page.PageDomain;
|
||||
import com.ruoyi.system.domain.RmResourceGroup;
|
||||
import com.ruoyi.system.domain.RmResourceRegistration;
|
||||
import com.ruoyi.system.mapper.RmResourceGroupMapper;
|
||||
@@ -11,6 +13,8 @@ import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static com.ruoyi.common.core.utils.PageUtils.startPage;
|
||||
|
||||
/**
|
||||
* 资源分组Service业务层处理
|
||||
*
|
||||
@@ -72,9 +76,22 @@ public class RmResourceGroupServiceImpl implements IRmResourceGroupService
|
||||
public int updateRmResourceGroup(RmResourceGroup rmResourceGroup)
|
||||
{
|
||||
rmResourceGroup.setUpdateTime(DateUtils.getNowDate());
|
||||
return rmResourceGroupMapper.updateRmResourceGroup(rmResourceGroup);
|
||||
rmResourceGroupMapper.updateRmResourceGroup(rmResourceGroup);
|
||||
// 资源组修改,相关策略状态改为待下发
|
||||
updatePolicyStatus(rmResourceGroup.getId());
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* 相关策略状态改为待下发
|
||||
* @param resourceGroupId
|
||||
*/
|
||||
public void updatePolicyStatus(Long resourceGroupId){
|
||||
// 资源监控策略状态修改
|
||||
rmResourceGroupMapper.updateRmPolicyStatus(resourceGroupId);
|
||||
// 脚本策略状态修改
|
||||
rmResourceGroupMapper.updateScriptPolicyStatus(resourceGroupId);
|
||||
}
|
||||
/**
|
||||
* 批量删除资源分组
|
||||
*
|
||||
@@ -99,29 +116,54 @@ public class RmResourceGroupServiceImpl implements IRmResourceGroupService
|
||||
return rmResourceGroupMapper.deleteRmResourceGroupById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据资源分组获取资源列表
|
||||
* @param rmResourceGroup
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<RmResourceRegistration> getRegisterList(RmResourceGroup rmResourceGroup) {
|
||||
public PageInfo<RmResourceRegistration> getRegisterList(RmResourceGroup rmResourceGroup) {
|
||||
// 配置分页参数
|
||||
PageDomain pageDomain = new PageDomain();
|
||||
pageDomain.setPageNum(rmResourceGroup.getPageNum());
|
||||
pageDomain.setPageSize(rmResourceGroup.getPageSize());
|
||||
if(rmResourceGroup.getId() == null){
|
||||
RmResourceRegistration queryParam = new RmResourceRegistration();
|
||||
// 开启分页
|
||||
startPage(pageDomain);
|
||||
List<RmResourceRegistration> rmResourceRegistrationList = rmResourceRegistrationMapper.selectRmResourceRegistrationList(queryParam);
|
||||
// 监控项赋值-暂时不需要
|
||||
for (RmResourceRegistration rmResourceRegistration : rmResourceRegistrationList) {
|
||||
RmResourceGroup item = rmResourceGroupMapper.selectMonitorMsgAndGroupMsg(rmResourceRegistration.getId());
|
||||
rmResourceRegistration.setMonitorItems(item.getMonitorItems());
|
||||
rmResourceRegistration.setDiscoveryRules(item.getDiscoveryRules());
|
||||
if(item != null){
|
||||
rmResourceRegistration.setMonitorItems(item.getMonitorItems());
|
||||
rmResourceRegistration.setDiscoveryRules(item.getDiscoveryRules());
|
||||
}else{
|
||||
rmResourceRegistration.setMonitorItems("0");
|
||||
rmResourceRegistration.setDiscoveryRules("0");
|
||||
}
|
||||
}
|
||||
return rmResourceRegistrationList;
|
||||
return new PageInfo<>(rmResourceRegistrationList);
|
||||
}else{
|
||||
RmResourceGroup group = rmResourceGroupMapper.selectRmResourceGroupById(rmResourceGroup.getId());
|
||||
String ids = group.getIncludedDevicesId();
|
||||
String[] resourceIds = ids.split(",");
|
||||
// 开启分页
|
||||
startPage(pageDomain);
|
||||
// 拿到资源信息
|
||||
List<RmResourceRegistration> rmResourceRegistrationList = rmResourceRegistrationMapper.getRegistrationByIds(resourceIds);
|
||||
// 监控项赋值-暂时不需要
|
||||
for (RmResourceRegistration rmResourceRegistration : rmResourceRegistrationList) {
|
||||
RmResourceGroup item = rmResourceGroupMapper.selectMonitorMsgAndGroupMsg(rmResourceRegistration.getId());
|
||||
rmResourceRegistration.setMonitorItems(item.getMonitorItems());
|
||||
rmResourceRegistration.setDiscoveryRules(item.getDiscoveryRules());
|
||||
if(item != null){
|
||||
rmResourceRegistration.setMonitorItems(item.getMonitorItems());
|
||||
rmResourceRegistration.setDiscoveryRules(item.getDiscoveryRules());
|
||||
}else{
|
||||
rmResourceRegistration.setMonitorItems("0");
|
||||
rmResourceRegistration.setDiscoveryRules("0");
|
||||
}
|
||||
}
|
||||
return rmResourceRegistrationList;
|
||||
return new PageInfo<>(rmResourceRegistrationList);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -100,10 +100,20 @@
|
||||
<select id="selectMonitorMsgAndGroupMsg" parameterType="Long" resultType="RmResourceGroup">
|
||||
select b.monitor_items monitorItems,b.discovery_rules discoveryRules from rm_resource_group a left join rm_monitor_template b on a.id=b.resource_group_id
|
||||
where FIND_IN_SET(#{id}, a.included_devices_id) > 0
|
||||
limit 1
|
||||
</select>
|
||||
|
||||
<select id="exitsResourceById" parameterType="RmResourceGroup" resultType="java.lang.Integer">
|
||||
select count(1) from rm_resource_group
|
||||
where FIND_IN_SET(#{resourceIds}, included_devices_id) > 0
|
||||
</select>
|
||||
|
||||
<update id="updateRmPolicyStatus" parameterType="Long">
|
||||
update rm_monitor_policy set status = '0'
|
||||
where resource_group_id = #{resourceGroupId}
|
||||
</update>
|
||||
<update id="updateScriptPolicyStatus" parameterType="Long">
|
||||
update rm_deployment_policy set policy_status = '0'
|
||||
where resource_group_id = #{resourceGroupId}
|
||||
</update>
|
||||
</mapper>
|
||||
@@ -3,6 +3,7 @@ package com.ruoyi.rocketmq.controller;
|
||||
import com.ruoyi.common.core.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.common.core.web.controller.BaseController;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.web.page.PageDomain;
|
||||
import com.ruoyi.common.core.web.page.TableDataInfo;
|
||||
import com.ruoyi.common.log.annotation.Log;
|
||||
import com.ruoyi.common.log.enums.BusinessType;
|
||||
@@ -32,10 +33,13 @@ public class RmMonitorPolicyController extends BaseController
|
||||
* 查询资源监控策略列表
|
||||
*/
|
||||
@RequiresPermissions("rocketmq:policy:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(RmMonitorPolicy rmMonitorPolicy)
|
||||
@PostMapping("/list")
|
||||
public TableDataInfo list(@RequestBody RmMonitorPolicy rmMonitorPolicy)
|
||||
{
|
||||
startPage();
|
||||
PageDomain pageDomain = new PageDomain();
|
||||
pageDomain.setPageNum(rmMonitorPolicy.getPageNum());
|
||||
pageDomain.setPageSize(rmMonitorPolicy.getPageSize());
|
||||
startPage(pageDomain);
|
||||
List<RmMonitorPolicy> list = rmMonitorPolicyService.selectRmMonitorPolicyList(rmMonitorPolicy);
|
||||
return getDataTable(list);
|
||||
}
|
||||
@@ -71,7 +75,12 @@ public class RmMonitorPolicyController extends BaseController
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody RmMonitorPolicy rmMonitorPolicy)
|
||||
{
|
||||
return toAjax(rmMonitorPolicyService.addRmMonitorPolicy(rmMonitorPolicy));
|
||||
int rows = rmMonitorPolicyService.addRmMonitorPolicy(rmMonitorPolicy);
|
||||
if(rows>0){
|
||||
return toAjax(rows);
|
||||
}else{
|
||||
return AjaxResult.error("资源监控策略新增失败,该资源组已绑定其他策略");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 监控模板Controller
|
||||
@@ -85,9 +86,9 @@ public class RmMonitorTemplateController extends BaseController
|
||||
@RequiresPermissions("rocketmq:template:edit")
|
||||
@Log(title = "监控模板", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody RmMonitorTemplate rmMonitorTemplate)
|
||||
public AjaxResult edit(@RequestBody RmMonitorTemplateVo rmMonitorTemplateVo)
|
||||
{
|
||||
return toAjax(rmMonitorTemplateService.updateRmMonitorTemplate(rmMonitorTemplate));
|
||||
return toAjax(rmMonitorTemplateService.updateRmMonitorTemplate(rmMonitorTemplateVo));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -100,4 +101,14 @@ public class RmMonitorTemplateController extends BaseController
|
||||
{
|
||||
return toAjax(rmMonitorTemplateService.deleteRmMonitorTemplateByIds(ids));
|
||||
}
|
||||
/**
|
||||
* 关联监控模板查询
|
||||
*/
|
||||
@RequiresPermissions("rocketmq:template:list")
|
||||
@GetMapping("/getAllTemplate")
|
||||
public AjaxResult getAllTemplate()
|
||||
{
|
||||
List<Map> list = rmMonitorTemplateService.getAllTemplate();
|
||||
return success(list);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.ruoyi.rocketmq.handler;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.ruoyi.common.core.constant.SecurityConstants;
|
||||
@@ -85,6 +86,8 @@ public class DeviceMessageHandler {
|
||||
private IInitialSwitchOtherCollectDataService insertInitialSwitchOtherInfo;
|
||||
@Autowired
|
||||
private IInitialSystemOtherCollectDataService iInitialSystemOtherCollectDataService;
|
||||
@Autowired
|
||||
private IRmResourceRemoteService rmResourceRemoteService;
|
||||
// 在类中添加
|
||||
private static final ObjectMapper objectMapper = new ObjectMapper();
|
||||
|
||||
@@ -102,7 +105,7 @@ public class DeviceMessageHandler {
|
||||
registerHandler(MsgEnum.开启交换机采集应答.getValue(), this::handleResponseMessage);
|
||||
registerHandler(MsgEnum.关闭交换机采集应答.getValue(), this::handleResponseMessage);
|
||||
registerHandler(MsgEnum.告警设置应答.getValue(), this::handleResponseMessage);
|
||||
registerHandler(MsgEnum.执行脚本策略应答.getValue(), this::handleResponseMessage);
|
||||
registerHandler(MsgEnum.执行脚本策略应答.getValue(), this::handleScriptRspMessage);
|
||||
registerHandler(MsgEnum.Agent版本更新应答.getValue(), this::handleResponseMessage);
|
||||
|
||||
// 其他类型消息可以单独注册处理器
|
||||
@@ -798,14 +801,39 @@ public class DeviceMessageHandler {
|
||||
* 脚本策略应答信息
|
||||
* @param message
|
||||
*/
|
||||
private RspVo handleScriptRspMessage(DeviceMessage message) {
|
||||
private void handleScriptRspMessage(DeviceMessage message) {
|
||||
List<RspVo> rspVoList = JsonDataParser.parseJsonData(message.getData(), RspVo.class);
|
||||
if (!rspVoList.isEmpty()) {
|
||||
RspVo rsp = rspVoList.get(0);
|
||||
log.info("应答信息:{}",rsp);
|
||||
return rsp;
|
||||
// 时间戳转换
|
||||
long timestamp = rsp.getTimestamp();
|
||||
long millis = timestamp * 1000;
|
||||
Date createTime = new Date(millis / 1000 * 1000); // 去除毫秒
|
||||
// 查询资源信息
|
||||
RmResourceRegistrationRemote queryParam = new RmResourceRegistrationRemote();
|
||||
queryParam.setHardwareSn(message.getClientId());
|
||||
R<RmResourceRegistrationRemote> resourceMsg = remoteRevenueConfigService.getListByHardwareSn(queryParam, SecurityConstants.INNER);
|
||||
RmResourceRegistrationRemote resourceMsgData = resourceMsg.getData();
|
||||
if(rsp.getResCode() == 1){
|
||||
if(rsp.getResult() != null){
|
||||
// 构建脚本执行结果实体类
|
||||
RmResourceRemote insertData = new RmResourceRemote();
|
||||
insertData.setHardwareSn(message.getClientId());
|
||||
insertData.setResourceName(resourceMsgData.getResourceName());
|
||||
insertData.setExternalIp(resourceMsgData.getIpAddress());
|
||||
insertData.setManagementPort(22);
|
||||
insertData.setConnectionMethod("1");
|
||||
insertData.setResourceType(resourceMsgData.getResourceType());
|
||||
insertData.setDescription(rsp.getResult());
|
||||
insertData.setCreateTime(createTime);
|
||||
// 执行插入sql
|
||||
rmResourceRemoteService.insertRmResourceRemote(insertData);
|
||||
log.info("脚本执行结果入库成功:{}",rsp);
|
||||
}
|
||||
}else{
|
||||
log.error("脚本执行失败:{}", rsp);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
/**
|
||||
* 注册应答处理
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
package com.ruoyi.rocketmq.mapper;
|
||||
|
||||
import java.util.List;
|
||||
import com.ruoyi.rocketmq.domain.RmMonitorTemplate;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 监控模板Mapper接口
|
||||
*
|
||||
@@ -58,4 +60,6 @@ public interface RmMonitorTemplateMapper
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteRmMonitorTemplateByIds(Long[] ids);
|
||||
|
||||
List<Map> getAllTemplate();
|
||||
}
|
||||
|
||||
@@ -62,4 +62,6 @@ public interface RmTemplateLinuxMapper
|
||||
public int deleteRmTemplateLinuxByIds(Long[] ids);
|
||||
|
||||
void batchInsertRmTemplateLinux(@Param("list") List<RmTemplateLinux> linuxItems);
|
||||
|
||||
int deleteByTemplateId(Long templateId);
|
||||
}
|
||||
|
||||
@@ -66,4 +66,6 @@ public interface RmTemplateSwitchMapper
|
||||
* @param switchItems
|
||||
*/
|
||||
void batchInsertRmTemplateSwitch(@Param("list") List<RmTemplateSwitch> switchItems);
|
||||
|
||||
int deleteByTemplateId(Long templateId);
|
||||
}
|
||||
|
||||
@@ -41,10 +41,10 @@ public interface IRmMonitorTemplateService
|
||||
/**
|
||||
* 修改监控模板
|
||||
*
|
||||
* @param rmMonitorTemplate 监控模板
|
||||
* @param rmMonitorTemplateVo 监控模板
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateRmMonitorTemplate(RmMonitorTemplate rmMonitorTemplate);
|
||||
public int updateRmMonitorTemplate(RmMonitorTemplateVo rmMonitorTemplateVo);
|
||||
|
||||
/**
|
||||
* 批量删除监控模板
|
||||
@@ -76,4 +76,5 @@ public interface IRmMonitorTemplateService
|
||||
*/
|
||||
Map<String, Object> getTemplateMsgById(Long id);
|
||||
|
||||
List<Map> getAllTemplate();
|
||||
}
|
||||
|
||||
@@ -103,8 +103,46 @@ public class RmMonitorPolicyServiceImpl implements IRmMonitorPolicyService
|
||||
@Override
|
||||
public int updateRmMonitorPolicy(RmMonitorPolicy rmMonitorPolicy)
|
||||
{
|
||||
// 绑定资源组之前判断该资源组是否已经绑定其他模板
|
||||
Long resourceGroupId = rmMonitorPolicy.getResourceGroupId();
|
||||
// 查询资源组是否已绑定
|
||||
RmMonitorPolicy queryParam = new RmMonitorPolicy();
|
||||
queryParam.setResourceGroupId(resourceGroupId);
|
||||
List<RmMonitorPolicy> exits = rmMonitorPolicyMapper.selectRmMonitorPolicyList(queryParam);
|
||||
if(!exits.isEmpty()){
|
||||
return -1;
|
||||
}
|
||||
rmMonitorPolicy.setUpdateTime(DateUtils.getNowDate());
|
||||
return rmMonitorPolicyMapper.updateRmMonitorPolicy(rmMonitorPolicy);
|
||||
rmMonitorPolicyMapper.updateRmMonitorPolicy(rmMonitorPolicy);
|
||||
// 模板绑定资源组信息
|
||||
RmMonitorTemplate rmMonitorTemplate = new RmMonitorTemplate();
|
||||
rmMonitorTemplate.setId(rmMonitorPolicy.getTemplateId());
|
||||
rmMonitorTemplate.setResourceGroupId(rmMonitorPolicy.getResourceGroupId());
|
||||
rmMonitorTemplateMapper.updateRmMonitorTemplate(rmMonitorTemplate);
|
||||
// 拿到采集周期
|
||||
List<RmMonitorPolicyVo> collectionAndIdList = rmMonitorPolicy.getCollectionAndIdList();
|
||||
if(!collectionAndIdList.isEmpty()){
|
||||
if("linux".equals(rmMonitorPolicy.getResourceType())){
|
||||
for (RmMonitorPolicyVo rmMonitorPolicyVo : collectionAndIdList) {
|
||||
// 添加采集周期
|
||||
RmTemplateLinux rmTemplateLinux = new RmTemplateLinux();
|
||||
rmTemplateLinux.setId(rmMonitorPolicyVo.getId());
|
||||
rmTemplateLinux.setCollectionCycle(rmMonitorPolicyVo.getCollectionCycle());
|
||||
rmTemplateLinuxMapper.updateRmTemplateLinux(rmTemplateLinux);
|
||||
}
|
||||
}else if("switch".equals(rmMonitorPolicy.getResourceType())){
|
||||
for (RmMonitorPolicyVo rmMonitorPolicyVo : collectionAndIdList) {
|
||||
// 添加采集周期
|
||||
RmTemplateSwitch rmTemplateSwitch = new RmTemplateSwitch();
|
||||
rmTemplateSwitch.setId(rmMonitorPolicyVo.getId());
|
||||
rmTemplateSwitch.setCollectionCycle(rmMonitorPolicyVo.getCollectionCycle());
|
||||
rmTemplateSwitchMapper.updateRmTemplateSwitch(rmTemplateSwitch);
|
||||
}
|
||||
}else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -133,6 +171,15 @@ public class RmMonitorPolicyServiceImpl implements IRmMonitorPolicyService
|
||||
|
||||
@Override
|
||||
public int addRmMonitorPolicy(RmMonitorPolicy rmMonitorPolicy) {
|
||||
// 绑定资源组之前判断该资源组是否已经绑定其他模板
|
||||
Long resourceGroupId = rmMonitorPolicy.getResourceGroupId();
|
||||
// 查询资源组是否已绑定
|
||||
RmMonitorPolicy queryParam = new RmMonitorPolicy();
|
||||
queryParam.setResourceGroupId(resourceGroupId);
|
||||
List<RmMonitorPolicy> exits = rmMonitorPolicyMapper.selectRmMonitorPolicyList(queryParam);
|
||||
if(!exits.isEmpty()){
|
||||
return -1;
|
||||
}
|
||||
rmMonitorPolicyMapper.insertRmMonitorPolicy(rmMonitorPolicy);
|
||||
// 模板绑定资源组信息
|
||||
RmMonitorTemplate rmMonitorTemplate = new RmMonitorTemplate();
|
||||
|
||||
@@ -17,9 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
/**
|
||||
* 监控模板Service业务层处理
|
||||
@@ -80,16 +78,36 @@ public class RmMonitorTemplateServiceImpl implements IRmMonitorTemplateService
|
||||
/**
|
||||
* 修改监控模板
|
||||
*
|
||||
* @param rmMonitorTemplate 监控模板
|
||||
* @param rmMonitorTemplateVo 监控模板
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateRmMonitorTemplate(RmMonitorTemplate rmMonitorTemplate)
|
||||
public int updateRmMonitorTemplate(RmMonitorTemplateVo rmMonitorTemplateVo)
|
||||
{
|
||||
RmMonitorTemplate rmMonitorTemplate = new RmMonitorTemplate();
|
||||
BeanUtils.copyProperties(rmMonitorTemplateVo, rmMonitorTemplate);
|
||||
rmMonitorTemplate.setUpdateTime(DateUtils.getNowDate());
|
||||
return rmMonitorTemplateMapper.updateRmMonitorTemplate(rmMonitorTemplate);
|
||||
}
|
||||
rmMonitorTemplateMapper.updateRmMonitorTemplate(rmMonitorTemplate);
|
||||
Long templateId = rmMonitorTemplate.getId();
|
||||
// 检查监控项是否有变动
|
||||
boolean hasMonitorChanges = checkMonitorChanges(rmMonitorTemplateVo, templateId);
|
||||
|
||||
if (!hasMonitorChanges) {
|
||||
// 如果没有变动,直接返回
|
||||
return 1;
|
||||
}
|
||||
// 先删除旧的监控项
|
||||
deleteExistingMonitorItems(templateId, rmMonitorTemplateVo.getResourceType());
|
||||
// linux系统信息
|
||||
if ("linux".equals(rmMonitorTemplateVo.getResourceType())) {
|
||||
processLinuxItems(rmMonitorTemplateVo, templateId);
|
||||
}
|
||||
// 华为交换机信息
|
||||
else if ("switch".equals(rmMonitorTemplateVo.getResourceType())) {
|
||||
processSwitchItems(rmMonitorTemplateVo, templateId);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
/**
|
||||
* 批量删除监控模板
|
||||
*
|
||||
@@ -123,65 +141,12 @@ public class RmMonitorTemplateServiceImpl implements IRmMonitorTemplateService
|
||||
Long templateId = rmMonitorTemplate.getId();
|
||||
|
||||
// linux系统信息
|
||||
if("linux".equals(rmMonitorTemplateVo.getResourceType())){
|
||||
// 根据监控信息id查询详细信息
|
||||
List<RmInitialMonitorItem> monitorItems = rmInitialMonitorItemMapper.selectRmInitialMonitorItemByIds(rmMonitorTemplateVo.getMonitorIds());
|
||||
// 批量准备插入数据
|
||||
List<RmTemplateLinux> linuxItems = monitorItems.stream()
|
||||
.map(item -> {
|
||||
RmTemplateLinux linuxItem = new RmTemplateLinux();
|
||||
linuxItem.setTemplateId(templateId);
|
||||
linuxItem.setMetricKey(item.getMetricKey());
|
||||
linuxItem.setMetricName(item.getMetricName());
|
||||
linuxItem.setDataType(item.getDataType());
|
||||
linuxItem.setItemType(item.getItemType());
|
||||
return linuxItem;
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
// 批量插入
|
||||
if(!linuxItems.isEmpty()) {
|
||||
rmTemplateLinuxMapper.batchInsertRmTemplateLinux(linuxItems);
|
||||
int monitorCount = (int) linuxItems.stream().filter(r -> "monitorItem".equals(r.getItemType())).count();
|
||||
int autoDiscoverCount = (int) linuxItems.stream().filter(r -> "autoDiscoverItem".equals(r.getItemType())).count();
|
||||
RmMonitorTemplate monitorTemplate = new RmMonitorTemplate();
|
||||
monitorTemplate.setId(templateId);
|
||||
monitorTemplate.setMonitorItems(monitorCount + "");
|
||||
monitorTemplate.setDiscoveryRules(autoDiscoverCount + "");
|
||||
monitorTemplate.setResourcyType("linux");
|
||||
rmMonitorTemplateMapper.updateRmMonitorTemplate(monitorTemplate);
|
||||
}
|
||||
if ("linux".equals(rmMonitorTemplateVo.getResourceType())) {
|
||||
processLinuxItems(rmMonitorTemplateVo, templateId);
|
||||
}
|
||||
// 华为交换机信息
|
||||
if("switch".equals(rmMonitorTemplateVo.getResourceType())){
|
||||
// 根据监控信息id查询详细信息
|
||||
List<RmInitialMonitorItem> monitorItems = rmInitialMonitorItemMapper.selectRmInitialMonitorItemByIds(rmMonitorTemplateVo.getMonitorIds());
|
||||
// 批量准备插入数据
|
||||
List<RmTemplateSwitch> switchItems = monitorItems.stream()
|
||||
.map(item -> {
|
||||
RmTemplateSwitch switchItem = new RmTemplateSwitch();
|
||||
switchItem.setTemplateId(templateId);
|
||||
switchItem.setMetricKey(item.getMetricKey());
|
||||
switchItem.setMetricName(item.getMetricName());
|
||||
switchItem.setOid(item.getOid());
|
||||
switchItem.setFilterValue(item.getFilterValue());
|
||||
switchItem.setSwitchDescription(item.getMonitorDescription());
|
||||
switchItem.setDataType(item.getDataType());
|
||||
switchItem.setItemType(item.getItemType());
|
||||
return switchItem;
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
// 批量插入
|
||||
if(!switchItems.isEmpty()) {
|
||||
rmTemplateSwitchMapper.batchInsertRmTemplateSwitch(switchItems);
|
||||
int monitorCount = (int) switchItems.stream().filter(r -> "monitorItem".equals(r.getItemType())).count();
|
||||
int autoDiscoverCount = (int) switchItems.stream().filter(r -> "autoDiscoverItem".equals(r.getItemType())).count();
|
||||
RmMonitorTemplate monitorTemplate = new RmMonitorTemplate();
|
||||
monitorTemplate.setId(templateId);
|
||||
monitorTemplate.setMonitorItems(monitorCount + "");
|
||||
monitorTemplate.setDiscoveryRules(autoDiscoverCount + "");
|
||||
monitorTemplate.setResourcyType("switch");
|
||||
rmMonitorTemplateMapper.updateRmMonitorTemplate(monitorTemplate);
|
||||
}
|
||||
else if ("switch".equals(rmMonitorTemplateVo.getResourceType())) {
|
||||
processSwitchItems(rmMonitorTemplateVo, templateId);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
@@ -211,4 +176,168 @@ public class RmMonitorTemplateServiceImpl implements IRmMonitorTemplateService
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map> getAllTemplate() {
|
||||
return rmMonitorTemplateMapper.getAllTemplate();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除现有的监控项
|
||||
*/
|
||||
private void deleteExistingMonitorItems(Long templateId, String resourceType) {
|
||||
if ("linux".equals(resourceType)) {
|
||||
rmTemplateLinuxMapper.deleteByTemplateId(templateId);
|
||||
} else if ("switch".equals(resourceType)) {
|
||||
rmTemplateSwitchMapper.deleteByTemplateId(templateId);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 检查监控项是否有变动
|
||||
*/
|
||||
private boolean checkMonitorChanges(RmMonitorTemplateVo rmMonitorTemplateVo, Long templateId) {
|
||||
if (rmMonitorTemplateVo.getMonitorIds() == null || rmMonitorTemplateVo.getMonitorIds().length == 0) {
|
||||
return hasExistingMonitorItems(templateId, rmMonitorTemplateVo.getResourceType());
|
||||
}
|
||||
// 获取现有的监控项ID
|
||||
List<Long> existingMonitorIds = new ArrayList<>();
|
||||
if ("linux".equals(rmMonitorTemplateVo.getResourceType())) {
|
||||
RmTemplateLinux queryParam = new RmTemplateLinux();
|
||||
queryParam.setTemplateId(templateId);
|
||||
List<RmTemplateLinux> existingItems = rmTemplateLinuxMapper.selectRmTemplateLinuxList(queryParam);
|
||||
for (RmTemplateLinux existingItem : existingItems) {
|
||||
Long id = existingItem.getId();
|
||||
existingMonitorIds.add(id);
|
||||
}
|
||||
// 这里需要根据实际情况获取监控项ID,可能需要关联查询
|
||||
} else if ("switch".equals(rmMonitorTemplateVo.getResourceType())) {
|
||||
RmTemplateSwitch queryParam = new RmTemplateSwitch();
|
||||
queryParam.setTemplateId(templateId);
|
||||
List<RmTemplateSwitch> existingItems = rmTemplateSwitchMapper.selectRmTemplateSwitchList(queryParam);
|
||||
List<Long> idList = new ArrayList<>();
|
||||
for (RmTemplateSwitch existingItem : existingItems) {
|
||||
Long id = existingItem.getId();
|
||||
existingMonitorIds.add(id);
|
||||
}
|
||||
}
|
||||
Long[] nowIds = rmMonitorTemplateVo.getMonitorIds();
|
||||
if(isEqualIgnoreOrder(existingMonitorIds, nowIds)){
|
||||
return false;
|
||||
}
|
||||
// 简化处理:只要有监控项就认为有变动
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
* 检查是否存在现有的监控项
|
||||
*/
|
||||
private boolean hasExistingMonitorItems(Long templateId, String resourceType) {
|
||||
int count = 0;
|
||||
if ("linux".equals(resourceType)) {
|
||||
RmTemplateLinux queryParam = new RmTemplateLinux();
|
||||
queryParam.setTemplateId(templateId);
|
||||
count = rmTemplateLinuxMapper.selectRmTemplateLinuxList(queryParam).size();
|
||||
} else if ("switch".equals(resourceType)) {
|
||||
RmTemplateSwitch queryParam = new RmTemplateSwitch();
|
||||
queryParam.setTemplateId(templateId);
|
||||
count = rmTemplateSwitchMapper.selectRmTemplateSwitchList(queryParam).size();
|
||||
}
|
||||
return count > 0;
|
||||
}
|
||||
/**
|
||||
* 比较List和数组内容是否一致(忽略顺序)
|
||||
*/
|
||||
private boolean isEqualIgnoreOrder(List<Long> list, Long[] array) {
|
||||
if (list == null && array == null) return true;
|
||||
if (list == null || array == null) return false;
|
||||
if (list.size() != array.length) return false;
|
||||
|
||||
// 使用Set进行快速比较(如果允许重复元素,需要改用频率统计)
|
||||
Set<Long> set1 = new HashSet<>(list);
|
||||
Set<Long> set2 = new HashSet<>(Arrays.asList(array));
|
||||
|
||||
return set1.equals(set2);
|
||||
}
|
||||
/**
|
||||
* 处理Linux监控项
|
||||
*/
|
||||
private void processLinuxItems(RmMonitorTemplateVo rmMonitorTemplateVo, Long templateId) {
|
||||
if (rmMonitorTemplateVo.getMonitorIds() == null || rmMonitorTemplateVo.getMonitorIds().length == 0) {
|
||||
// 如果没有监控项,更新计数为0
|
||||
updateTemplateCounts(templateId, 0, 0, "linux");
|
||||
return;
|
||||
}
|
||||
|
||||
// 根据监控信息id查询详细信息
|
||||
List<RmInitialMonitorItem> monitorItems = rmInitialMonitorItemMapper.selectRmInitialMonitorItemByIds(rmMonitorTemplateVo.getMonitorIds());
|
||||
|
||||
// 批量准备插入数据
|
||||
List<RmTemplateLinux> linuxItems = monitorItems.stream()
|
||||
.map(item -> {
|
||||
RmTemplateLinux linuxItem = new RmTemplateLinux();
|
||||
linuxItem.setTemplateId(templateId);
|
||||
linuxItem.setMetricKey(item.getMetricKey());
|
||||
linuxItem.setMetricName(item.getMetricName());
|
||||
linuxItem.setDataType(item.getDataType());
|
||||
linuxItem.setItemType(item.getItemType());
|
||||
return linuxItem;
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 批量插入
|
||||
if (!linuxItems.isEmpty()) {
|
||||
rmTemplateLinuxMapper.batchInsertRmTemplateLinux(linuxItems);
|
||||
int monitorCount = (int) linuxItems.stream().filter(r -> "monitorItem".equals(r.getItemType())).count();
|
||||
int autoDiscoverCount = (int) linuxItems.stream().filter(r -> "autoDiscoverItem".equals(r.getItemType())).count();
|
||||
updateTemplateCounts(templateId, monitorCount, autoDiscoverCount, "linux");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理交换机监控项
|
||||
*/
|
||||
private void processSwitchItems(RmMonitorTemplateVo rmMonitorTemplateVo, Long templateId) {
|
||||
if (rmMonitorTemplateVo.getMonitorIds() == null || rmMonitorTemplateVo.getMonitorIds().length == 0) {
|
||||
// 如果没有监控项,更新计数为0
|
||||
updateTemplateCounts(templateId, 0, 0, "switch");
|
||||
return;
|
||||
}
|
||||
|
||||
// 根据监控信息id查询详细信息
|
||||
List<RmInitialMonitorItem> monitorItems = rmInitialMonitorItemMapper.selectRmInitialMonitorItemByIds(rmMonitorTemplateVo.getMonitorIds());
|
||||
|
||||
// 批量准备插入数据
|
||||
List<RmTemplateSwitch> switchItems = monitorItems.stream()
|
||||
.map(item -> {
|
||||
RmTemplateSwitch switchItem = new RmTemplateSwitch();
|
||||
switchItem.setTemplateId(templateId);
|
||||
switchItem.setMetricKey(item.getMetricKey());
|
||||
switchItem.setMetricName(item.getMetricName());
|
||||
switchItem.setOid(item.getOid());
|
||||
switchItem.setFilterValue(item.getFilterValue());
|
||||
switchItem.setSwitchDescription(item.getMonitorDescription());
|
||||
switchItem.setDataType(item.getDataType());
|
||||
switchItem.setItemType(item.getItemType());
|
||||
return switchItem;
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 批量插入
|
||||
if (!switchItems.isEmpty()) {
|
||||
rmTemplateSwitchMapper.batchInsertRmTemplateSwitch(switchItems);
|
||||
int monitorCount = (int) switchItems.stream().filter(r -> "monitorItem".equals(r.getItemType())).count();
|
||||
int autoDiscoverCount = (int) switchItems.stream().filter(r -> "autoDiscoverItem".equals(r.getItemType())).count();
|
||||
updateTemplateCounts(templateId, monitorCount, autoDiscoverCount, "switch");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新模板计数信息
|
||||
*/
|
||||
private void updateTemplateCounts(Long templateId, int monitorCount, int autoDiscoverCount, String resourceType) {
|
||||
RmMonitorTemplate monitorTemplate = new RmMonitorTemplate();
|
||||
monitorTemplate.setId(templateId);
|
||||
monitorTemplate.setMonitorItems(String.valueOf(monitorCount));
|
||||
monitorTemplate.setDiscoveryRules(String.valueOf(autoDiscoverCount));
|
||||
monitorTemplate.setResourcyType(resourceType);
|
||||
rmMonitorTemplateMapper.updateRmMonitorTemplate(monitorTemplate);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,4 +94,8 @@
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
<select id="getAllTemplate" resultType="java.util.Map">
|
||||
select id, template_name templateName,resourcy_type resourceType from rm_monitor_template
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -125,4 +125,8 @@
|
||||
)
|
||||
</foreach>
|
||||
</insert>
|
||||
|
||||
<delete id="deleteByTemplateId" parameterType="Long">
|
||||
delete from rm_template_linux where template_id = #{templateId}
|
||||
</delete>
|
||||
</mapper>
|
||||
@@ -157,4 +157,8 @@
|
||||
)
|
||||
</foreach>
|
||||
</insert>
|
||||
|
||||
<delete id="deleteByTemplateId" parameterType="Long">
|
||||
delete from rm_template_switch where template_id = #{templateId}
|
||||
</delete>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user