优化mtr探测策略下发
This commit is contained in:
+4
@@ -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<String, List<String>> clientIdToIpsMap;
|
||||
}
|
||||
|
||||
+1
@@ -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; // 最终丢包率
|
||||
|
||||
+2
-12
@@ -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<RmNetworkInterface> 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{
|
||||
|
||||
+41
-2
@@ -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<String> allIpsSet = new HashSet<>();
|
||||
String[] clientIds = serverGroupStr.split("\n");
|
||||
Map<String, List<String>> clientIdToIpsMap = new HashMap<>();
|
||||
for (String clientId : clientIds) {
|
||||
RmNetworkInterfaceRemote query = new RmNetworkInterfaceRemote();
|
||||
query.setClientIds(clientId);
|
||||
R<List<RmNetworkInterfaceRemote>> networkList = remoteRocketMqService.getNetworkInterfaceList(query, SecurityConstants.INNER);
|
||||
if(networkList != null && networkList.getData() != null){
|
||||
List<RmNetworkInterfaceRemote> rmNetworkInterfaceRemoteList = networkList.getData();
|
||||
if(!rmNetworkInterfaceRemoteList.isEmpty()){
|
||||
for (RmNetworkInterfaceRemote rmNetworkInterfaceRemote : rmNetworkInterfaceRemoteList) {
|
||||
List<String> 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<RmMtrPolicyConfig, List<String>> entry : policyServersMap.entrySet()) {
|
||||
RmMtrPolicyConfig newPolicy = createPolicyCopy(entry.getKey(), entry.getValue());
|
||||
setServerip(newPolicy);
|
||||
setServeripToClientId(newPolicy);
|
||||
result.add(newPolicy);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user