diff --git a/ruoyi-modules/ruoyi-mtragent/src/main/java/com/ruoyi/mtragent/domain/RmMtrPolicyConfig.java b/ruoyi-modules/ruoyi-mtragent/src/main/java/com/ruoyi/mtragent/domain/RmMtrPolicyConfig.java index 255255e..0990bd9 100644 --- a/ruoyi-modules/ruoyi-mtragent/src/main/java/com/ruoyi/mtragent/domain/RmMtrPolicyConfig.java +++ b/ruoyi-modules/ruoyi-mtragent/src/main/java/com/ruoyi/mtragent/domain/RmMtrPolicyConfig.java @@ -6,6 +6,8 @@ import com.ruoyi.common.core.web.domain.BaseEntity; import lombok.Data; import java.util.Date; +import java.util.List; +import java.util.Map; /** * mtr探测策略配置对象 rm_mtr_policy_config @@ -56,4 +58,6 @@ public class RmMtrPolicyConfig extends BaseEntity /** 探测频率(秒) */ @Excel(name = "探测频率(秒)") private Long probeFrequency; + /** clientId和ip对应集合 */ + private Map> clientIdToIpsMap; } diff --git a/ruoyi-modules/ruoyi-mtragent/src/main/java/com/ruoyi/mtragent/domain/vo/MtrResultVo.java b/ruoyi-modules/ruoyi-mtragent/src/main/java/com/ruoyi/mtragent/domain/vo/MtrResultVo.java index 50e6553..83cab55 100644 --- a/ruoyi-modules/ruoyi-mtragent/src/main/java/com/ruoyi/mtragent/domain/vo/MtrResultVo.java +++ b/ruoyi-modules/ruoyi-mtragent/src/main/java/com/ruoyi/mtragent/domain/vo/MtrResultVo.java @@ -5,6 +5,7 @@ import lombok.Data; @Data public class MtrResultVo { private String targetIp; // 目标IP + private String clientId; // 目标IP private Long policyId; // 策略ID private double firstLossPercent; // 第一次探测丢包率 private double finalLossPercent; // 最终丢包率 diff --git a/ruoyi-modules/ruoyi-mtragent/src/main/java/com/ruoyi/mtragent/handler/MessageHandler.java b/ruoyi-modules/ruoyi-mtragent/src/main/java/com/ruoyi/mtragent/handler/MessageHandler.java index 478bb0d..f652a1b 100644 --- a/ruoyi-modules/ruoyi-mtragent/src/main/java/com/ruoyi/mtragent/handler/MessageHandler.java +++ b/ruoyi-modules/ruoyi-mtragent/src/main/java/com/ruoyi/mtragent/handler/MessageHandler.java @@ -98,19 +98,9 @@ public class MessageHandler { Date createTime = new Date(millis / 1000 * 1000); // 去除毫秒 RmMtrProbeResult rmMtrProbeResult = new RmMtrProbeResult(); rmMtrProbeResult.setCreateTime(createTime); - // 拿到ip - String ip = mtrResultVo.getTargetIp(); - // 查询clientId - RmNetworkInterface networkInfo = new RmNetworkInterface(); - networkInfo.setPublicIp(ip); - networkInfo.setNewFlag(1); - List rmNetworkInterfaceList = rmNetworkInterfaceService.selectRmNetworkInterfaceList(networkInfo); - if(rmNetworkInterfaceList != null && !rmNetworkInterfaceList.isEmpty()){ - RmNetworkInterface rmNetworkInterface = rmNetworkInterfaceList.get(0); - rmMtrProbeResult.setClientId(rmNetworkInterface.getClientId()); - } + rmMtrProbeResult.setClientId(mtrResultVo.getClientId()); rmMtrProbeResult.setMtrClientId(mtrClientId); - rmMtrProbeResult.setPublicIp(ip); + rmMtrProbeResult.setPublicIp(mtrResultVo.getTargetIp()); rmMtrProbeResult.setPacketLossRate(new BigDecimal(mtrResultVo.getFinalLossPercent())); rmMtrProbeResultList.add(rmMtrProbeResult); }else{ diff --git a/ruoyi-modules/ruoyi-mtragent/src/main/java/com/ruoyi/mtragent/service/impl/RmMtrPolicyConfigServiceImpl.java b/ruoyi-modules/ruoyi-mtragent/src/main/java/com/ruoyi/mtragent/service/impl/RmMtrPolicyConfigServiceImpl.java index 8cbd7f3..843fe54 100644 --- a/ruoyi-modules/ruoyi-mtragent/src/main/java/com/ruoyi/mtragent/service/impl/RmMtrPolicyConfigServiceImpl.java +++ b/ruoyi-modules/ruoyi-mtragent/src/main/java/com/ruoyi/mtragent/service/impl/RmMtrPolicyConfigServiceImpl.java @@ -3,6 +3,7 @@ package com.ruoyi.mtragent.service.impl; import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.DateUtils; +import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.mtragent.domain.RmMtrPolicyConfig; import com.ruoyi.mtragent.mapper.RmMtrPolicyConfigMapper; @@ -80,7 +81,45 @@ public class RmMtrPolicyConfigServiceImpl implements IRmMtrPolicyConfigService } } } - + /** + * 辅助方法,给ip集合一一对应赋值 + * @param mtrPolicyConfig + */ + public void setServeripToClientId(RmMtrPolicyConfig mtrPolicyConfig){ + String serverGroupStr = mtrPolicyConfig.getServerGroup(); + if(serverGroupStr == null){ + return; + } + // 使用Set自动去重 + Set allIpsSet = new HashSet<>(); + String[] clientIds = serverGroupStr.split("\n"); + Map> clientIdToIpsMap = new HashMap<>(); + for (String clientId : clientIds) { + RmNetworkInterfaceRemote query = new RmNetworkInterfaceRemote(); + query.setClientIds(clientId); + R> networkList = remoteRocketMqService.getNetworkInterfaceList(query, SecurityConstants.INNER); + if(networkList != null && networkList.getData() != null){ + List rmNetworkInterfaceRemoteList = networkList.getData(); + if(!rmNetworkInterfaceRemoteList.isEmpty()){ + for (RmNetworkInterfaceRemote rmNetworkInterfaceRemote : rmNetworkInterfaceRemoteList) { + List ips = networkList.getData().stream() + .map(RmNetworkInterfaceRemote::getPublicIp) + .filter(StringUtils::isNotBlank) + .collect(Collectors.toList()); + if (!ips.isEmpty()) { + clientIdToIpsMap.put(clientId, ips); + allIpsSet.addAll(ips); // 自动去重 + } + clientIdToIpsMap.put(clientId, ips); + } + // 将Set转换为分号分隔的字符串 + String allIps = String.join(";", allIpsSet); + mtrPolicyConfig.setServeripGroup(allIps); + mtrPolicyConfig.setClientIdToIpsMap(clientIdToIpsMap); + } + } + } + } /** * 新增mtr探测策略配置 * @@ -218,7 +257,7 @@ public class RmMtrPolicyConfigServiceImpl implements IRmMtrPolicyConfigService // 创建策略副本返回 for (Map.Entry> entry : policyServersMap.entrySet()) { RmMtrPolicyConfig newPolicy = createPolicyCopy(entry.getKey(), entry.getValue()); - setServerip(newPolicy); + setServeripToClientId(newPolicy); result.add(newPolicy); } diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml index 50c0dfa..241e7a5 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml @@ -23,6 +23,7 @@ spring: server-addr: 172.16.15.52:8848 # 配置中心地址 # server-addr: 172.16.15.103:8848 +# namespace: public namespace: saas-local username: nacos password: nacos diff --git a/ruoyi-rocketmq/src/main/resources/bootstrap.yml b/ruoyi-rocketmq/src/main/resources/bootstrap.yml index f7709be..a1366de 100644 --- a/ruoyi-rocketmq/src/main/resources/bootstrap.yml +++ b/ruoyi-rocketmq/src/main/resources/bootstrap.yml @@ -24,6 +24,7 @@ spring: server-addr: 172.16.15.52:8848 # server-addr: 172.16.15.103:8848 namespace: saas-local +# namespace: public username: nacos password: nacos # 配置文件格式