From 37eff51e48f24f13e4517ff930d2fcb92d96e6c9 Mon Sep 17 00:00:00 2001 From: gaoyutao Date: Fri, 24 Oct 2025 09:34:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=99=A8=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=20=20agent=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/RemoteRevenueConfigService.java | 2 +- .../RemoteRevenueConfigFallbackFactory.java | 2 +- .../java/com/ruoyi/system/ReviewEnum.java | 15 -- .../system/domain/RmResourceRegistration.java | 180 +++++++++++++++--- .../com/ruoyi/system/enums/ReviewEnum.java | 15 ++ .../impl/EpsBusinessDeployServiceImpl.java | 74 +++---- .../RmResourceRegistrationServiceImpl.java | 173 ++++++++++++++++- .../system/RmResourceRegistrationMapper.xml | 38 ++-- ...itialSystemOtherCollectDataController.java | 2 +- .../RmAgentManagementController.java | 8 +- .../RmNetworkInterfaceController.java | 2 +- .../rocketmq/domain/RmAgentManagement.java | 2 + .../rocketmq/handler/MessageHandler.java | 10 +- .../service/IRmAgentManagementService.java | 4 +- .../service/IRmMonitorPolicyService.java | 7 + .../impl/InitialDiskInfoServiceImpl.java | 3 - .../impl/RmAgentManagementServiceImpl.java | 38 +++- .../impl/RmMonitorPolicyServiceImpl.java | 59 ++++-- .../mapper/rocketmq/InitialDiskInfoMapper.xml | 1 + .../rocketmq/InitialDockerInfoMapper.xml | 1 + .../rocketmq/RmAgentManagementMapper.xml | 35 +++- 21 files changed, 536 insertions(+), 135 deletions(-) delete mode 100644 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/ReviewEnum.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/enums/ReviewEnum.java diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteRevenueConfigService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteRevenueConfigService.java index 807722a..b3c6d28 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteRevenueConfigService.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteRevenueConfigService.java @@ -113,6 +113,6 @@ public interface RemoteRevenueConfigService * @return */ @PostMapping("/registration/innerupdateRegist") - public R innerupdateRegist(@RequestBody RmResourceRegistrationRemote rmResourceRegistrationRemote, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + public R innerUpdateRegist(@RequestBody RmResourceRegistrationRemote rmResourceRegistrationRemote, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteRevenueConfigFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteRevenueConfigFallbackFactory.java index d810eae..2f89dab 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteRevenueConfigFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteRevenueConfigFallbackFactory.java @@ -78,7 +78,7 @@ public class RemoteRevenueConfigFallbackFactory implements FallbackFactory innerupdateRegist(RmResourceRegistrationRemote rmResourceRegistrationRemote, String source) { + public R innerUpdateRegist(RmResourceRegistrationRemote rmResourceRegistrationRemote, String source) { return R.fail("修改服务器注册信息失败:" + throwable.getMessage()); } }; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/ReviewEnum.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/ReviewEnum.java deleted file mode 100644 index b90446d..0000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/ReviewEnum.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.ruoyi.system; - -import lombok.Getter; - -@Getter -public enum ReviewEnum { - 未提交(0), - 待审核(1), - 通过(2), - 驳回(3); - private Integer code; - ReviewEnum(Integer code){ - this.code = code; - } -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/RmResourceRegistration.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/RmResourceRegistration.java index 6b9c6df..6322044 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/RmResourceRegistration.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/RmResourceRegistration.java @@ -1,15 +1,17 @@ package com.ruoyi.system.domain; +import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.annotation.Excel; import com.ruoyi.common.core.web.domain.BaseEntity; import lombok.Data; +import java.util.Date; import java.util.List; import java.util.Map; /** * 资源注册对象 rm_resource_registration - * + * * @author gyt * @date 2025-08-12 */ @@ -21,25 +23,25 @@ public class RmResourceRegistration extends BaseEntity /** id */ private Long id; + /** clientID */ + @Excel(name = "clientID") + private String clientId; + /** 硬件SN */ - @Excel(name = "硬件SN") + @Excel(name = "设备SN") private String hardwareSn; /** 资源类型 * 1 服务器,2 交换机*/ - @Excel(name = "资源类型",readConverterExp = "1=服务器,2=交换机") private String resourceType; /** 资源名称 */ - @Excel(name = "资源名称") private String resourceName; /** IP地址 */ - @Excel(name = "IP地址") private String ipAddress; /** 端口1.162(SNMP),2.其他 */ - @Excel(name = "端口") private String resourcePort; /**其他端口名称 */ @@ -49,70 +51,58 @@ public class RmResourceRegistration extends BaseEntity @Excel(name = "agent版本") private String agentVersion; - /** 协议 1.TCP,2.UDP */ - @Excel(name = "协议",readConverterExp = "1=TCP,2=UDP") private String protocol; /** SNMP探测 0=否,1=是 */ - @Excel(name = "",readConverterExp = "0=否,1=是") private String snmpDetect; + /** 版本(1.SNMPv2,2.SNMPv3) */ - @Excel(name = "SNMP版本",readConverterExp = "1=华为SNMPv2c,2=华为SNMPv3") private String resourceVersion; /** 读写权限(1.RW,2.ReadOnly) */ - @Excel(name = "读写权限",readConverterExp = "1=只读,2=可读可写") private String rwPermission; + /** 团体名称 */ - @Excel(name = "团体名称") private String teamName; /** SNMP采集地址 */ - @Excel(name = "SNMP采集地址") private String snmpCollectAddr; + /** SNMP采集端口 */ - @Excel(name = "SNMP采集端口") private String snmpCollectPort; /** 安全级别(1.authPriv、2.authNoPriv,3.noAuthNoPriv) */ - @Excel(name = "安全级别",readConverterExp = "1=authPriv,2=authNoPriv,3=noAuthNoPriv") private String securityLevel; /** 加密方式 1.md5,2.SHA */ - @Excel(name = "加密方式",readConverterExp = "1=MD5,2=SHA") private String encryption; /** 用户名 */ - @Excel(name = "用户名") private String resourceUserName; - /** 密码 */ - @Excel(name = "密码") + + /** 密码 */ private String resourcePwd; /** 注册状态 0-未注册,1-已注册 */ - @Excel(name = "注册状态",readConverterExp = "0=未注册,1=已注册") private String registrationStatus; /** 在线状态 0-离线,1-在线 */ - @Excel(name = "在线状态",readConverterExp = "0=离线,1=在线") + @Excel(name = "在线状态") private String onlineStatus; - @Excel(name = "交换机在线状态",readConverterExp = "0=离线,1=在线") + private String switchOnlineStatus; /** 描述 */ - @Excel(name = "描述") private String description; /** 设备业务客户id */ private Long customerId; /** 设备业务客户名称 */ - @Excel(name = "设备业务客户") private String customerName; /** 业务号 */ - @Excel(name = "业务号") private String serviceNumber; /** 创建人id */ @@ -126,16 +116,15 @@ public class RmResourceRegistration extends BaseEntity /** 修改人名称 */ private String updaterName; + /** 监控项 */ private String monitorItems; + /** 自动发现项 */ private String discoveryRules; + /** 查询名称 */ private String queryName; - /** - * 客户端ID - */ - private String clientId; /** * 运营商 @@ -155,11 +144,13 @@ public class RmResourceRegistration extends BaseEntity /** * 业务名称 */ + @Excel(name = "业务名称") private String businessName; /** * 逻辑节点标识 */ + @Excel(name = "逻辑节点标识") private String logicalNodeId; /** @@ -170,12 +161,141 @@ public class RmResourceRegistration extends BaseEntity /** * 心跳次数 */ + @Excel(name = "心跳次数") private Integer heartbeatCount; /** * 心跳周期(单位:秒) */ + @Excel(name = "心跳时间间隔") private Integer heartbeatInterval; + /** 需要绑定的网卡信息 */ private List bindNetworkMsg; -} + + // IP1 相关字段 + @Excel(name = "IP1-运营商") + private String ip1Isp; // IP1-运营商 + + @Excel(name = "IP1-省") + private String ip1Province; // IP1-省 + + @Excel(name = "IP1-市") + private String ip1City; // IP1-市 + + @Excel(name = "IP1-业务公网") + private String ip1PublicIp; // IP1-业务公网 + + @Excel(name = "IP1-接口名称") + private String ip1InterfaceName; // IP1-接口名称 + + @Excel(name = "IP1-mac地址") + private String ip1MacAddress; // IP1-mac地址 + + @Excel(name = "IP1-接口类型") + private String ip1InterfaceType; // IP1-接口类型 + + @Excel(name = "IP1-IPv4地址") + private String ip1Ipv4Address; // IP1-IPv4地址 + + @Excel(name = "IP1-网关") + private String ip1Gateway; // IP1-网关 + + // IP2 相关字段 + @Excel(name = "IP2-运营商") + private String ip2Isp; + + @Excel(name = "IP2-省") + private String ip2Province; + + @Excel(name = "IP2-市") + private String ip2City; + + @Excel(name = "IP2-业务公网") + private String ip2PublicIp; + + @Excel(name = "IP2-接口名称") + private String ip2InterfaceName; + + @Excel(name = "IP2-mac地址") + private String ip2MacAddress; + + @Excel(name = "IP2-接口类型") + private String ip2InterfaceType; + + @Excel(name = "IP2-IPv4地址") + private String ip2Ipv4Address; + + @Excel(name = "IP2-网关") + private String ip2Gateway; + + // IP3 相关字段 + @Excel(name = "IP3-运营商") + private String ip3Isp; + + @Excel(name = "IP3-省") + private String ip3Province; + + @Excel(name = "IP3-市") + private String ip3City; + + @Excel(name = "IP3-业务公网") + private String ip3PublicIp; + + @Excel(name = "IP3-接口名称") + private String ip3InterfaceName; + + @Excel(name = "IP3-mac地址") + private String ip3MacAddress; + + @Excel(name = "IP3-接口类型") + private String ip3InterfaceType; + + @Excel(name = "IP3-IPv4地址") + private String ip3Ipv4Address; + + @Excel(name = "IP3-网关") + private String ip3Gateway; + + // 管理网相关字段 + @Excel(name = "管理网-运营商") + private String mgmtIsp; // 管理网-运营商 + + @Excel(name = "管理网-省") + private String mgmtProvince; // 管理网-省 + + @Excel(name = "管理网-市") + private String mgmtCity; // 管理网-市 + + @Excel(name = "管理网-公网IP") + private String mgmtPublicIp; // 管理网-公网IP + + @Excel(name = "管理网-接口名称") + private String mgmtInterfaceName; // 管理网-接口名称 + + @Excel(name = "管理网-mac地址") + private String mgmtMacAddress; // 管理网-mac地址 + + @Excel(name = "管理网-接口类型") + private String mgmtInterfaceType; // 管理网-接口类型 + + @Excel(name = "管理网-IPv4地址") + private String mgmtIpv4Address; // 管理网-IPv4地址 + + /** 多条件查询 */ + private String queryParam; + + /** 金山machineCode */ + @Excel(name = "金山machineCode") + private String machineCode; + + /** 注册时间 */ + @Excel(name = "注册时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** 上机时间 */ + @Excel(name = "上机时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date onboardTime; +} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/enums/ReviewEnum.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/enums/ReviewEnum.java new file mode 100644 index 0000000..cbd5408 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/enums/ReviewEnum.java @@ -0,0 +1,15 @@ +package com.ruoyi.system.enums; + +import lombok.Getter; + +@Getter +public enum ReviewEnum { + 未提交("0"), + 待审核("1"), + 通过("2"), + 驳回("3"); + private String code; + ReviewEnum(String code){ + this.code = code; + } +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsBusinessDeployServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsBusinessDeployServiceImpl.java index d67cc3c..86aedfa 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsBusinessDeployServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsBusinessDeployServiceImpl.java @@ -4,6 +4,7 @@ import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.system.enums.ReviewEnum; import com.ruoyi.system.api.RemoteRocketMqService; import com.ruoyi.system.api.domain.RmNetworkInterfaceRemote; import com.ruoyi.system.domain.EpsBusinessDeploy; @@ -63,9 +64,9 @@ public class EpsBusinessDeployServiceImpl implements IEpsBusinessDeployService RmResourceRegistration publicIpVo = rmResourceRegistrationMapper.selectRegistMsgByClientId(rmResourceRegistration); String processedClientId; - if (publicIpVo != null && StringUtils.isNotBlank(publicIpVo.getPublicIp())) { + if (publicIpVo != null && StringUtils.isNotBlank(publicIpVo.getIp1PublicIp())) { // 如果有公网IP,格式为:公网IP + 空格 + 原clientId - processedClientId = publicIpVo.getPublicIp() + " " + clientId.trim(); + processedClientId = publicIpVo.getIp1PublicIp() + " " + clientId.trim(); } else { // 如果没有公网IP,保持原样 processedClientId = clientId.trim(); @@ -158,38 +159,45 @@ public class EpsBusinessDeployServiceImpl implements IEpsBusinessDeployService epsBusinessDeploy.setReviewBy(SecurityUtils.getUsername()); epsBusinessDeploy.setReviewTime(DateUtils.getNowDate()); int rows = epsBusinessDeployMapper.updateEpsBusinessDeploy(epsBusinessDeploy); - // 根据id查询业务信息 - EpsBusinessDeploy businessMsg = epsBusinessDeployMapper.selectEpsBusinessDeployById(epsBusinessDeploy.getId()); - String businessCode = businessMsg.getBusinessCode(); - String businessName = businessMsg.getBusinessName(); - String clientIdStr = businessMsg.getDeployDevice(); - String[] clientIds = clientIdStr.split("\n"); - // 保存业务修改记录 - for (String clientId : clientIds) { - // 根据clientId查询网卡接口名称 - RmNetworkInterfaceRemote queryParam = new RmNetworkInterfaceRemote(); - queryParam.setClientId(clientId); - List interfaceList = remoteRocketMqService.getNetworkInterfaceList(queryParam, SecurityConstants.INNER).getData(); - String interfaceName = ""; - if (interfaceList != null && !interfaceList.isEmpty()) { - interfaceName = interfaceList.stream() - .filter(interfaceRemote -> "1".equals(interfaceRemote.getBindIp())) - .map(RmNetworkInterfaceRemote::getInterfaceName) - .filter(name -> name != null && !name.trim().isEmpty()) - .collect(Collectors.joining(",")); + if(StringUtils.equals(ReviewEnum.通过.getCode(), epsBusinessDeploy.getReviewStatus())){ + // 根据id查询业务信息 + EpsBusinessDeploy businessMsg = epsBusinessDeployMapper.selectEpsBusinessDeployById(epsBusinessDeploy.getId()); + String businessCode = businessMsg.getBusinessCode(); + String businessName = businessMsg.getBusinessName(); + String clientIdStr = businessMsg.getDeployDevice(); + String[] clientIds = clientIdStr.split("\n"); + // 保存业务修改记录 + for (String clientId : clientIds) { + // 根据clientId查询网卡接口名称 + RmNetworkInterfaceRemote queryParam = new RmNetworkInterfaceRemote(); + queryParam.setClientId(clientId); + List interfaceList = remoteRocketMqService.getNetworkInterfaceList(queryParam, SecurityConstants.INNER).getData(); + String interfaceName = ""; + if (interfaceList != null && !interfaceList.isEmpty()) { + interfaceName = interfaceList.stream() + .filter(interfaceRemote -> "1".equals(interfaceRemote.getBindIp())) + .map(RmNetworkInterfaceRemote::getInterfaceName) + .filter(name -> name != null && !name.trim().isEmpty()) + .collect(Collectors.joining(",")); + } + EpsMethodChangeRecord changeRecord = new EpsMethodChangeRecord(); + // 设置基本信息 + changeRecord.setClientId(clientId); + changeRecord.setTrafficPort(interfaceName); + changeRecord.setBusinessCode(businessCode); + changeRecord.setBusinessName(businessName); + changeRecord.setCreateTime(DateUtils.getNowDate()); + changeRecord.setCreatBy(SecurityUtils.getUsername()); + // 修改内容 + String content = "流量网口设置为" + interfaceName + ",业务为" + businessName; + // 保存数据 + epsMethodChangeRecordMapper.insertEpsMethodChangeRecord(changeRecord); + // 绑定业务名称 + RmResourceRegistration updateData = new RmResourceRegistration(); + updateData.setBusinessName(businessName); + updateData.setClientId(clientId); + rmResourceRegistrationMapper.updateStatusByResource(updateData); } - EpsMethodChangeRecord changeRecord = new EpsMethodChangeRecord(); - // 设置基本信息 - changeRecord.setClientId(clientId); - changeRecord.setTrafficPort(interfaceName); - changeRecord.setBusinessCode(businessCode); - changeRecord.setBusinessName(businessName); - changeRecord.setCreateTime(DateUtils.getNowDate()); - changeRecord.setCreatBy(SecurityUtils.getUsername()); - // 修改内容 - String content = "流量网口设置为" + interfaceName + ",业务为" + businessName; - // 保存数据 - epsMethodChangeRecordMapper.insertEpsMethodChangeRecord(changeRecord); } return 1; } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RmResourceRegistrationServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RmResourceRegistrationServiceImpl.java index 7c69a58..31436d9 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RmResourceRegistrationServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RmResourceRegistrationServiceImpl.java @@ -13,17 +13,11 @@ import com.ruoyi.system.api.domain.NetworkInfo; import com.ruoyi.system.api.domain.RmNetworkInterfaceRemote; import com.ruoyi.system.api.domain.RmRegisterMsgRemote; import com.ruoyi.system.api.domain.RmResourceRegistrationRemote; -import com.ruoyi.system.domain.EpsNodeBandwidth; -import com.ruoyi.system.domain.EpsServerRevenueConfig; -import com.ruoyi.system.domain.RmEpsTopologyManagement; -import com.ruoyi.system.domain.RmResourceRegistration; +import com.ruoyi.system.domain.*; import com.ruoyi.system.domain.vo.MessageVo; import com.ruoyi.system.domain.vo.ResourceVo; import com.ruoyi.system.domain.vo.RspVo; -import com.ruoyi.system.mapper.EpsNodeBandwidthMapper; -import com.ruoyi.system.mapper.EpsServerRevenueConfigMapper; -import com.ruoyi.system.mapper.RmEpsTopologyManagementMapper; -import com.ruoyi.system.mapper.RmResourceRegistrationMapper; +import com.ruoyi.system.mapper.*; import com.ruoyi.system.service.IRmResourceRegistrationService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -35,6 +29,7 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 资源注册Service业务层处理 @@ -56,6 +51,10 @@ public class RmResourceRegistrationServiceImpl implements IRmResourceRegistratio private EpsNodeBandwidthMapper epsNodeBandwidthMapper; @Autowired private RemoteRocketMqService remoteRocketMqService; + @Autowired + private EpsMethodChangeRecordMapper epsMethodChangeRecordMapper; + @Autowired + private RmRegistrationMachineMapper rmRegistrationMachineMapper; /** * 查询资源注册 @@ -66,7 +65,12 @@ public class RmResourceRegistrationServiceImpl implements IRmResourceRegistratio @Override public RmResourceRegistration selectRmResourceRegistrationById(Long id) { - return rmResourceRegistrationMapper.selectRmResourceRegistrationById(id); + RmResourceRegistration rmResourceRegistration = rmResourceRegistrationMapper.selectRmResourceRegistrationById(id); + if(rmResourceRegistration.getClientId()!= null){ + // set网卡信息 + setNetWorkMsg(rmResourceRegistration); + } + return rmResourceRegistration; } /** @@ -79,9 +83,132 @@ public class RmResourceRegistrationServiceImpl implements IRmResourceRegistratio public List selectRmResourceRegistrationList(RmResourceRegistration rmResourceRegistration) { List rmResourceRegistrationList = rmResourceRegistrationMapper.selectRmResourceRegistrationList(rmResourceRegistration); + for (RmResourceRegistration resourceRegistration : rmResourceRegistrationList) { + if(resourceRegistration.getClientId() != null){ + // 网卡信息 + setNetWorkMsg(resourceRegistration); + } + } + if(rmResourceRegistration.getQueryParam() != null){ + String queryValue = rmResourceRegistration.getQueryParam().trim(); + // 筛选公网IP私网IP设备SN相等的数据 + // 从rmResourceRegistrationList列表中筛选符合条件的数据 + List filteredList = rmResourceRegistrationList.stream() + .filter(item -> item != null) + .filter(item -> + // 检查公网IP (IP1-3和管理网) + queryValue.equals(item.getIp1PublicIp()) || + queryValue.equals(item.getIp2PublicIp()) || + queryValue.equals(item.getIp3PublicIp()) || + queryValue.equals(item.getMgmtPublicIp()) || + + // 检查私网IP (IP1-3和管理网) + queryValue.equals(item.getIp1Ipv4Address()) || + queryValue.equals(item.getIp2Ipv4Address()) || + queryValue.equals(item.getIp3Ipv4Address()) || + queryValue.equals(item.getMgmtIpv4Address()) || + + // 检查设备SN + queryValue.equals(item.getHardwareSn())) + .collect(Collectors.toList()); + return filteredList; + } return rmResourceRegistrationList; } + /** + * 网卡信息赋值 + * @param registration + */ + public void setNetWorkMsg(RmResourceRegistration registration) { + String clientId = registration.getClientId(); + // 根据clientId查询网卡信息 + RmNetworkInterfaceRemote queryParam = new RmNetworkInterfaceRemote(); + queryParam.setClientId(clientId); + // 安全获取网络接口列表 + R> result = remoteRocketMqService.getNetworkInterfaceList(queryParam, SecurityConstants.INNER); + // 多层安全判断 + if (result == null || result.getData() == null) { + log.warn("获取网络接口列表为空,clientId: {}", clientId); + return; + } + + List networkList = result.getData(); + + if (networkList == null || networkList.isEmpty()) { + return; + } + + // 初始化业务IP计数器 + int businessIpCount = 1; + + for (RmNetworkInterfaceRemote network : networkList) { + if ("1".equals(network.getBindIp())) { + // 业务IP处理 + if (businessIpCount > 3) { + continue; // 最多只处理3个业务IP + } + + // 设置业务IP字段 + switch (businessIpCount) { + case 1: + registration.setIp1Isp(network.getIsp()); + registration.setIp1Province(network.getProvince()); + registration.setIp1City(network.getCity()); + registration.setIp1PublicIp(network.getPublicIp()); + registration.setIp1InterfaceName(network.getInterfaceName()); + registration.setIp1MacAddress(network.getMacAddress()); + registration.setIp1InterfaceType(network.getInterfaceType()); + registration.setIp1Ipv4Address(network.getIpv4Address()); + registration.setIp1Gateway(network.getGateway()); + break; + case 2: + registration.setIp2Isp(network.getIsp()); + registration.setIp2Province(network.getProvince()); + registration.setIp2City(network.getCity()); + registration.setIp2PublicIp(network.getPublicIp()); + registration.setIp2InterfaceName(network.getInterfaceName()); + registration.setIp2MacAddress(network.getMacAddress()); + registration.setIp2InterfaceType(network.getInterfaceType()); + registration.setIp2Ipv4Address(network.getIpv4Address()); + registration.setIp2Gateway(network.getGateway()); + break; + case 3: + registration.setIp3Isp(network.getIsp()); + registration.setIp3Province(network.getProvince()); + registration.setIp3City(network.getCity()); + registration.setIp3PublicIp(network.getPublicIp()); + registration.setIp3InterfaceName(network.getInterfaceName()); + registration.setIp3MacAddress(network.getMacAddress()); + registration.setIp3InterfaceType(network.getInterfaceType()); + registration.setIp3Ipv4Address(network.getIpv4Address()); + registration.setIp3Gateway(network.getGateway()); + break; + } + + businessIpCount++; + } else if ("2".equals(network.getBindIp())) { + // 管理网IP处理 + registration.setMgmtIsp(network.getIsp()); + registration.setMgmtProvince(network.getProvince()); + registration.setMgmtCity(network.getCity()); + registration.setMgmtPublicIp(network.getPublicIp()); + registration.setMgmtInterfaceName(network.getInterfaceName()); + registration.setMgmtMacAddress(network.getMacAddress()); + registration.setMgmtInterfaceType(network.getInterfaceType()); + registration.setMgmtIpv4Address(network.getIpv4Address()); + } + } + // 设置金山machineCode + RmRegistrationMachine rmRegistrationMachine = new RmRegistrationMachine(); + rmRegistrationMachine.setClientId(clientId); + List machineList = rmRegistrationMachineMapper.selectRmRegistrationMachineList(rmRegistrationMachine); + if(!machineList.isEmpty()){ + RmRegistrationMachine machineMsg = machineList.get(0); + registration.setMachineCode(machineMsg.getMachineCode()); + } + + } /** * 新增资源注册 * @@ -384,6 +511,7 @@ public class RmResourceRegistrationServiceImpl implements IRmResourceRegistratio try { // 如果网卡信息只有1条,自动绑定多公网IP if(networkInfoList.size()==1){ + NetworkInfo networkInfo = networkInfoList.get(0); insertData.setClientId(registerMsg.getClientId()); insertData.setHardwareSn(registerMsg.getSn()); insertData.setRegistrationStatus("1"); @@ -391,6 +519,17 @@ public class RmResourceRegistrationServiceImpl implements IRmResourceRegistratio insertData.setResourceType("1"); insertData.setCreateTime(createTime); rmResourceRegistrationMapper.insertRmResourceRegistration(insertData); + // 添加业务变更记录 + EpsMethodChangeRecord recordAddData = new EpsMethodChangeRecord(); + recordAddData.setClientId(registerMsg.getClientId()); + recordAddData.setTrafficPort(networkInfo.getName()); + recordAddData.setUpdateTime(DateUtils.getNowDate()); + recordAddData.setUpdateBy(SecurityUtils.getUsername()); + recordAddData.setCreatBy(SecurityUtils.getUsername()); + StringBuilder content = new StringBuilder(); + content.append("流量网口设置为").append(networkInfo.getName()); + recordAddData.setChangeContent(content.toString()); + epsMethodChangeRecordMapper.insertEpsMethodChangeRecord(recordAddData); }else{ insertData.setClientId(registerMsg.getClientId()); insertData.setHardwareSn(registerMsg.getSn()); @@ -411,6 +550,8 @@ public class RmResourceRegistrationServiceImpl implements IRmResourceRegistratio remoteRocketMqService.sendAsyncProducerMessage( "tr_agent_down", "", "", JSONObject.toJSONString(messageVo), SecurityConstants.INNER ); + // 第一次注册 + return 2; }catch (Exception e){ log.error("注册服务器失败:{}",e.getMessage()); // 构建注册应答信息 @@ -424,6 +565,7 @@ public class RmResourceRegistrationServiceImpl implements IRmResourceRegistratio remoteRocketMqService.sendAsyncProducerMessage( "tr_agent_down", "", "", JSONObject.toJSONString(messageVo), SecurityConstants.INNER ); + return 0; } } } @@ -449,6 +591,7 @@ public class RmResourceRegistrationServiceImpl implements IRmResourceRegistratio RmResourceRegistration updateData = new RmResourceRegistration(); updateData.setId(exits.getId()); updateData.setLogicalNodeId(rmResourceRegistration.getLogicalNodeId()); + updateData.setOnboardTime(DateUtils.getNowDate()); rmResourceRegistrationMapper.updateRmResourceRegistration(updateData); log.info("设备:{},逻辑节点增加成功",rmResourceRegistration.getClientId()); return 1; @@ -464,11 +607,23 @@ public class RmResourceRegistrationServiceImpl implements IRmResourceRegistratio // id Long id = (Long) map.get("id"); String status = map.get("status").toString(); + String interfaceName = map.get("interfaceName").toString(); // 绑定ip RmNetworkInterfaceRemote rmNetworkInterfaceRemote = new RmNetworkInterfaceRemote(); rmNetworkInterfaceRemote.setId(id); rmNetworkInterfaceRemote.setBindIp(status); remoteRocketMqService.bindPublicIp(rmNetworkInterfaceRemote, SecurityConstants.INNER); + // 添加业务变更记录 + EpsMethodChangeRecord recordAddData = new EpsMethodChangeRecord(); + recordAddData.setClientId(rmResourceRegistration.getClientId()); + recordAddData.setTrafficPort(interfaceName); + recordAddData.setUpdateTime(DateUtils.getNowDate()); + recordAddData.setUpdateBy(SecurityUtils.getUsername()); + recordAddData.setCreatBy(SecurityUtils.getUsername()); + StringBuilder content = new StringBuilder(); + content.append("流量网口设置为").append(interfaceName); + recordAddData.setChangeContent(content.toString()); + epsMethodChangeRecordMapper.insertEpsMethodChangeRecord(recordAddData); } // 修改多公网IP状态为已绑定 RmResourceRegistration updateData = new RmResourceRegistration(); diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RmResourceRegistrationMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RmResourceRegistrationMapper.xml index b8e0c4d..866b91d 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RmResourceRegistrationMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RmResourceRegistrationMapper.xml @@ -46,10 +46,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + - select id, hardware_sn, resource_type, resource_name, ip_address, resource_port, other_port_name, agent_version, protocol, resource_version, rw_permission, snmp_detect, team_name, snmp_collect_addr, snmp_collect_port, security_level, encryption, resource_user_name, resource_pwd, registration_status, online_status, switch_online_status, description, customer_id, customer_name, service_number, create_time, update_time, creator_id, creator_name, updater_id, updater_name, client_id, operator, province, public_ip, business_name, logical_node_id, multi_public_ip_status, heartbeat_count, heartbeat_interval from rm_resource_registration + select id, hardware_sn, resource_type, resource_name, ip_address, resource_port, other_port_name, + agent_version, protocol, resource_version, rw_permission, snmp_detect, team_name, snmp_collect_addr, + snmp_collect_port, security_level, encryption, resource_user_name, resource_pwd, registration_status, + online_status, switch_online_status, description, customer_id, customer_name, service_number, + create_time, update_time, creator_id, creator_name, updater_id, updater_name, client_id, operator, + province, public_ip, business_name, logical_node_id, multi_public_ip_status, heartbeat_count, + heartbeat_interval, onboard_time from rm_resource_registration diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/InitialSystemOtherCollectDataController.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/InitialSystemOtherCollectDataController.java index 86656b7..8de50e0 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/InitialSystemOtherCollectDataController.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/InitialSystemOtherCollectDataController.java @@ -97,7 +97,7 @@ public class InitialSystemOtherCollectDataController extends BaseController return toAjax(initialSystemOtherCollectDataService.deleteInitialSystemOtherCollectDataByIds(ids)); } /** - * 查询交换机系统其他信息采集数据列表 + * 查询系统其他信息基础数据 */ @RequiresPermissions("rocketmq:systemOtherCollectData:list") @PostMapping("/getMontiorMsg") diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmAgentManagementController.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmAgentManagementController.java index a600447..e2562f3 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmAgentManagementController.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmAgentManagementController.java @@ -76,13 +76,13 @@ public class RmAgentManagementController extends BaseController /** * 手动立即更新 - * @param id + * @param rmAgentManagement * @return */ @RequiresPermissions("rocketmq:management:edit") - @GetMapping("/updateAgentNow") - public AjaxResult updateAgentNow(Long id){ - rmAgentManagementService.updateAgentNow(id); + @PostMapping("/updateAgentNow") + public AjaxResult updateAgentNow(@RequestBody RmAgentManagement rmAgentManagement){ + rmAgentManagementService.updateAgentNow(rmAgentManagement); return success(); } diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmNetworkInterfaceController.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmNetworkInterfaceController.java index a64a33b..888ea8d 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmNetworkInterfaceController.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/controller/RmNetworkInterfaceController.java @@ -34,7 +34,7 @@ public class RmNetworkInterfaceController extends BaseController */ @RequiresPermissions("rocketmq:networkInterface:list") @PostMapping("/list") - public AjaxResult list(RmNetworkInterface rmNetworkInterface) + public AjaxResult list(@RequestBody RmNetworkInterface rmNetworkInterface) { List list = rmNetworkInterfaceService.selectRmNetworkInterfaceList(rmNetworkInterface); return success(list); diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmAgentManagement.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmAgentManagement.java index 1e2365a..73039c6 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmAgentManagement.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmAgentManagement.java @@ -80,5 +80,7 @@ public class RmAgentManagement extends BaseEntity private String clientId; /** 部署设备 */ private String deployDevice; + /** 管理网公网Ip */ + private String managePublicIp; } diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/handler/MessageHandler.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/handler/MessageHandler.java index 8ff80b5..9365688 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/handler/MessageHandler.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/handler/MessageHandler.java @@ -95,7 +95,7 @@ public class MessageHandler { // 其他类型消息可以单独注册处理器 registerHandler(MsgEnum.注册.getValue(), this::handleRegisterMessage); - registerHandler(MsgEnum.获取最新策略.getValue(), this::handleNewPolicyMessage); +// registerHandler(MsgEnum.获取最新策略.getValue(), this::handleNewPolicyMessage); // registerHandler(MsgEnum.CPU上报.getValue(), this::handleCpuMessage); // registerHandler(MsgEnum.磁盘上报.getValue(), this::handleDiskMessage); // registerHandler(MsgEnum.容器上报.getValue(), this::handleDockerMessage); @@ -133,7 +133,11 @@ public class MessageHandler { // 自动注册服务器信息 RmRegisterMsgRemote rmRegisterMsgRemote = new RmRegisterMsgRemote(); BeanUtils.copyProperties(registerMsg, rmRegisterMsgRemote); - remoteRevenueConfigService.innerAddRegist(rmRegisterMsgRemote, SecurityConstants.INNER); + int rows = remoteRevenueConfigService.innerAddRegist(rmRegisterMsgRemote, SecurityConstants.INNER).getData(); + if(rows == 2){ + // 注册成功,下发优先级为0的策略 + rmMonitorPolicyService.issueDefaultPolicyByClientId(message.getClientId()); + } // 时间戳转换 long timestamp = registerMsg.getTimestamp(); long millis = timestamp * 1000; @@ -463,7 +467,7 @@ public class MessageHandler { RmResourceRegistrationRemote updateData = new RmResourceRegistrationRemote(); updateData.setClientId(message.getClientId()); updateData.setLogicalNodeId(heartbeat.getLogicalNode()); - remoteRevenueConfigService.innerupdateRegist(updateData, SecurityConstants.INNER); + remoteRevenueConfigService.innerUpdateRegist(updateData, SecurityConstants.INNER); // 使用Redis存储状态 String statusKey = HEARTBEAT_STATUS_PREFIX + clientId; String timeKey = HEARTBEAT_TIME_PREFIX + clientId; diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmAgentManagementService.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmAgentManagementService.java index 50e7b0e..301a9bf 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmAgentManagementService.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmAgentManagementService.java @@ -77,10 +77,10 @@ public interface IRmAgentManagementService /** * 手动立即更新agent - * @param id + * @param rmAgentManagement * @return */ - int updateAgentNow(Long id); + int updateAgentNow(RmAgentManagement rmAgentManagement); /** * 配置更新策略 diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmMonitorPolicyService.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmMonitorPolicyService.java index 2a65d24..9066ffd 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmMonitorPolicyService.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/IRmMonitorPolicyService.java @@ -90,4 +90,11 @@ public interface IRmMonitorPolicyService * @return */ public int issuePolicyMsgByClientId(String clientId); + + /** + * 根据clientId下发优先级为0的监控策略信息 + * @param clientId + * @return + */ + public int issueDefaultPolicyByClientId(String clientId); } diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/InitialDiskInfoServiceImpl.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/InitialDiskInfoServiceImpl.java index 30890c3..3ed5097 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/InitialDiskInfoServiceImpl.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/InitialDiskInfoServiceImpl.java @@ -134,7 +134,6 @@ public class InitialDiskInfoServiceImpl implements IInitialDiskInfoService */ @Override public Map rwSpeedEcharts(InitialDiskInfo initialDiskInfo) { - initialDiskInfo.setName("/dev/sda"); List list = initialDiskInfoMapper.selectInitialDiskInfoList(initialDiskInfo); Map> extractors = new LinkedHashMap<>(); extractors.put("readSpeedData", info -> info.getReadSpeed() / 1024.0); @@ -148,7 +147,6 @@ public class InitialDiskInfoServiceImpl implements IInitialDiskInfoService */ @Override public Map rwTimesEcharts(InitialDiskInfo initialDiskInfo) { - initialDiskInfo.setName("/dev/sda"); List list = initialDiskInfoMapper.selectInitialDiskInfoList(initialDiskInfo); Map> extractors = new LinkedHashMap<>(); extractors.put("readTimesData", info -> info.getReadTimes()); @@ -162,7 +160,6 @@ public class InitialDiskInfoServiceImpl implements IInitialDiskInfoService */ @Override public Map rwBytesEcharts(InitialDiskInfo initialDiskInfo) { - initialDiskInfo.setName("/dev/sda"); List list = initialDiskInfoMapper.selectInitialDiskInfoList(initialDiskInfo); Map> extractors = new LinkedHashMap<>(); extractors.put("readBytesData", info -> info.getReadBytes()); diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmAgentManagementServiceImpl.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmAgentManagementServiceImpl.java index 760b136..807b05b 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmAgentManagementServiceImpl.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmAgentManagementServiceImpl.java @@ -5,8 +5,13 @@ import com.ruoyi.common.core.enums.MsgEnum; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.rocketmq.domain.DeviceMessage; import com.ruoyi.rocketmq.domain.RmAgentManagement; -import com.ruoyi.rocketmq.domain.vo.*; +import com.ruoyi.rocketmq.domain.RmNetworkInterface; +import com.ruoyi.rocketmq.domain.vo.AgentUpdateMsgVo; +import com.ruoyi.rocketmq.domain.vo.AgentUpdateVo; +import com.ruoyi.rocketmq.domain.vo.PolicyTypeVo; +import com.ruoyi.rocketmq.domain.vo.PolicyVo; import com.ruoyi.rocketmq.mapper.RmAgentManagementMapper; +import com.ruoyi.rocketmq.mapper.RmNetworkInterfaceMapper; import com.ruoyi.rocketmq.model.ProducerMode; import com.ruoyi.rocketmq.producer.MessageProducer; import com.ruoyi.rocketmq.service.IRmAgentManagementService; @@ -19,6 +24,7 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Optional; /** * Agent管理Service业务层处理 @@ -32,6 +38,8 @@ public class RmAgentManagementServiceImpl implements IRmAgentManagementService { @Autowired private RmAgentManagementMapper rmAgentManagementMapper; + @Autowired + private RmNetworkInterfaceMapper rmNetworkInterfaceMapper; @Value("${fileDictory.filePath}") private String filePath; @@ -61,7 +69,25 @@ public class RmAgentManagementServiceImpl implements IRmAgentManagementService @Override public List selectRmAgentManagementList(RmAgentManagement rmAgentManagement) { - return rmAgentManagementMapper.selectRmAgentManagementList(rmAgentManagement); + List managementList = rmAgentManagementMapper.selectRmAgentManagementList(rmAgentManagement); + for (RmAgentManagement agentManagement : managementList) { + if(agentManagement.getClientId()!=null){ + // 设置管理网公网ip + RmNetworkInterface queryParam = new RmNetworkInterface(); + queryParam.setClientId(agentManagement.getClientId()); + // 使用Optional处理可能的NPE,并筛选bindIp为2或3的接口 + RmNetworkInterface networkInterface = Optional.ofNullable(rmNetworkInterfaceMapper.selectRmNetworkInterfaceList(queryParam)) + .map(list -> list.stream() + .filter(ni -> "2".equals(ni.getBindIp()) || "3".equals(ni.getBindIp())) + .findFirst() + .orElse(null)) + .orElseGet(() -> { + return new RmNetworkInterface(); // 返回空对象避免NPE + }); + agentManagement.setManagePublicIp(networkInterface.getPublicIp()); + } + } + return managementList; } /** @@ -146,13 +172,11 @@ public class RmAgentManagementServiceImpl implements IRmAgentManagementService /** * 手动立即更新 - * @param id + * @param rmAgentManagement 更新信息 * @return */ @Override - public int updateAgentNow(Long id) { - // 根据id查询agent更新信息 - RmAgentManagement rmAgentManagement = rmAgentManagementMapper.selectRmAgentManagementById(id); + public int updateAgentNow(RmAgentManagement rmAgentManagement) { processAgentData(rmAgentManagement); return 1; } @@ -236,7 +260,7 @@ public class RmAgentManagementServiceImpl implements IRmAgentManagementService if("0".equals(rmAgentManagement.getMethod())){ currentAgent.setScheduledUpdateTime(null); } - rmAgentManagementMapper.updateRmAgentManagementBySn(currentAgent); + rmAgentManagementMapper.updateRmAgentManagement(currentAgent); }else{ // 如果不存在,添加 currentAgent.setLastUpdateTime(DateUtils.getNowDate()); diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmMonitorPolicyServiceImpl.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmMonitorPolicyServiceImpl.java index 9000c02..07e95ae 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmMonitorPolicyServiceImpl.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmMonitorPolicyServiceImpl.java @@ -24,10 +24,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.time.Instant; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -289,6 +286,8 @@ public class RmMonitorPolicyServiceImpl implements IRmMonitorPolicyService switchItem.setCollectionCycle(rmMonitorPolicyVo.getCollectionCycle()); rmTemplateSwitchMapper.insertRmTemplateSwitch(switchItem); } + // 添加交换机策略完成 下发该策略 + issueSwitchPolicy(rmMonitorPolicy.getId()); }else { return 0; } @@ -421,8 +420,6 @@ public class RmMonitorPolicyServiceImpl implements IRmMonitorPolicyService log.error("策略不存在,id: {}", id); return 0; } - - // 构建并发送采集配置 Map policyDetails = getRmMonitorPolicyMsgById(id); boolean isSwitch = false; @@ -437,11 +434,12 @@ public class RmMonitorPolicyServiceImpl implements IRmMonitorPolicyService startCollectSwitchMsgToDevices(policy.getDeployDevice(), uniqueList, switchOidVo); } // 更新策略状态为已下发 -// RmMonitorPolicy policyUpdate = new RmMonitorPolicy(); -// policyUpdate.setId(id); -// policyUpdate.setStatus("1"); -// rmMonitorPolicyMapper.updateRmMonitorPolicy(policyUpdate); - + if("1".equals(policy.getPriority())){ + RmMonitorPolicy policyUpdate = new RmMonitorPolicy(); + policyUpdate.setId(id); + policyUpdate.setStatus("1"); + rmMonitorPolicyMapper.updateRmMonitorPolicy(policyUpdate); + } return 1; } catch (Exception e) { log.error("下发策略失败,id: {}", id, e); @@ -496,6 +494,45 @@ public class RmMonitorPolicyServiceImpl implements IRmMonitorPolicyService return 0; } } + /** + * 根据clientId下发优先级为0的监控策略信息 + * @param clientId + * @return + */ + @Override + public int issueDefaultPolicyByClientId(String clientId) { + try { + // 根据clientId查询未下发的策略信息 + RmMonitorPolicy queryParam = new RmMonitorPolicy(); + queryParam.setPriority("0"); + queryParam.setResourceType("linux"); + + // 添加NPE保护 + List policies = Optional.ofNullable(rmMonitorPolicyMapper.selectRmMonitorPolicyList(queryParam)) + .orElse(Collections.emptyList()); + + if (policies.isEmpty()) { + log.warn("未设置默认策略,clientId: {}", clientId); + return 0; + } + + // 构建并发送采集配置 + Map policyDetails = Optional.ofNullable(getRmMonitorPolicyMsgById(policies.get(0).getId())) + .orElse(Collections.emptyMap()); + + List collectVos = Optional.ofNullable(buildCollectConfigurations(policyDetails)) + .orElse(Collections.emptyList()); + + // 去重 + List uniqueList = collectVos.stream().distinct().collect(Collectors.toList()); + String[] clientIdArr = new String[]{clientId}; + sendMonitorPolicy(clientIdArr, uniqueList); + return 1; + } catch (Exception e) { + log.error("下发策略失败,clientId: {}", clientId, e); + return 0; + } + } /** * 根据clientId下发监控策略信息 * @param clientId diff --git a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/InitialDiskInfoMapper.xml b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/InitialDiskInfoMapper.xml index 92752d5..f8fbec9 100644 --- a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/InitialDiskInfoMapper.xml +++ b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/InitialDiskInfoMapper.xml @@ -30,6 +30,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and client_id = #{clientId} + and name = #{name} and create_time >= #{startTime} and create_time <= #{endTime} diff --git a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/InitialDockerInfoMapper.xml b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/InitialDockerInfoMapper.xml index 1b6c3b0..60bc71a 100644 --- a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/InitialDockerInfoMapper.xml +++ b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/InitialDockerInfoMapper.xml @@ -27,6 +27,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"