优化mtr探测策略下发
This commit is contained in:
+4
@@ -6,6 +6,8 @@ import com.ruoyi.common.core.web.domain.BaseEntity;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mtr探测策略配置对象 rm_mtr_policy_config
|
* mtr探测策略配置对象 rm_mtr_policy_config
|
||||||
@@ -56,4 +58,6 @@ public class RmMtrPolicyConfig extends BaseEntity
|
|||||||
/** 探测频率(秒) */
|
/** 探测频率(秒) */
|
||||||
@Excel(name = "探测频率(秒)")
|
@Excel(name = "探测频率(秒)")
|
||||||
private Long probeFrequency;
|
private Long probeFrequency;
|
||||||
|
/** clientId和ip对应集合 */
|
||||||
|
private Map<String, List<String>> clientIdToIpsMap;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -5,6 +5,7 @@ import lombok.Data;
|
|||||||
@Data
|
@Data
|
||||||
public class MtrResultVo {
|
public class MtrResultVo {
|
||||||
private String targetIp; // 目标IP
|
private String targetIp; // 目标IP
|
||||||
|
private String clientId; // 目标IP
|
||||||
private Long policyId; // 策略ID
|
private Long policyId; // 策略ID
|
||||||
private double firstLossPercent; // 第一次探测丢包率
|
private double firstLossPercent; // 第一次探测丢包率
|
||||||
private double finalLossPercent; // 最终丢包率
|
private double finalLossPercent; // 最终丢包率
|
||||||
|
|||||||
+2
-12
@@ -98,19 +98,9 @@ public class MessageHandler {
|
|||||||
Date createTime = new Date(millis / 1000 * 1000); // 去除毫秒
|
Date createTime = new Date(millis / 1000 * 1000); // 去除毫秒
|
||||||
RmMtrProbeResult rmMtrProbeResult = new RmMtrProbeResult();
|
RmMtrProbeResult rmMtrProbeResult = new RmMtrProbeResult();
|
||||||
rmMtrProbeResult.setCreateTime(createTime);
|
rmMtrProbeResult.setCreateTime(createTime);
|
||||||
// 拿到ip
|
rmMtrProbeResult.setClientId(mtrResultVo.getClientId());
|
||||||
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.setMtrClientId(mtrClientId);
|
rmMtrProbeResult.setMtrClientId(mtrClientId);
|
||||||
rmMtrProbeResult.setPublicIp(ip);
|
rmMtrProbeResult.setPublicIp(mtrResultVo.getTargetIp());
|
||||||
rmMtrProbeResult.setPacketLossRate(new BigDecimal(mtrResultVo.getFinalLossPercent()));
|
rmMtrProbeResult.setPacketLossRate(new BigDecimal(mtrResultVo.getFinalLossPercent()));
|
||||||
rmMtrProbeResultList.add(rmMtrProbeResult);
|
rmMtrProbeResultList.add(rmMtrProbeResult);
|
||||||
}else{
|
}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.constant.SecurityConstants;
|
||||||
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.common.core.domain.R;
|
||||||
import com.ruoyi.common.core.utils.DateUtils;
|
import com.ruoyi.common.core.utils.DateUtils;
|
||||||
|
import com.ruoyi.common.core.utils.StringUtils;
|
||||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||||
import com.ruoyi.mtragent.domain.RmMtrPolicyConfig;
|
import com.ruoyi.mtragent.domain.RmMtrPolicyConfig;
|
||||||
import com.ruoyi.mtragent.mapper.RmMtrPolicyConfigMapper;
|
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探测策略配置
|
* 新增mtr探测策略配置
|
||||||
*
|
*
|
||||||
@@ -218,7 +257,7 @@ public class RmMtrPolicyConfigServiceImpl implements IRmMtrPolicyConfigService
|
|||||||
// 创建策略副本返回
|
// 创建策略副本返回
|
||||||
for (Map.Entry<RmMtrPolicyConfig, List<String>> entry : policyServersMap.entrySet()) {
|
for (Map.Entry<RmMtrPolicyConfig, List<String>> entry : policyServersMap.entrySet()) {
|
||||||
RmMtrPolicyConfig newPolicy = createPolicyCopy(entry.getKey(), entry.getValue());
|
RmMtrPolicyConfig newPolicy = createPolicyCopy(entry.getKey(), entry.getValue());
|
||||||
setServerip(newPolicy);
|
setServeripToClientId(newPolicy);
|
||||||
result.add(newPolicy);
|
result.add(newPolicy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ spring:
|
|||||||
server-addr: 172.16.15.52:8848
|
server-addr: 172.16.15.52:8848
|
||||||
# 配置中心地址
|
# 配置中心地址
|
||||||
# server-addr: 172.16.15.103:8848
|
# server-addr: 172.16.15.103:8848
|
||||||
|
# namespace: public
|
||||||
namespace: saas-local
|
namespace: saas-local
|
||||||
username: nacos
|
username: nacos
|
||||||
password: nacos
|
password: nacos
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ spring:
|
|||||||
server-addr: 172.16.15.52:8848
|
server-addr: 172.16.15.52:8848
|
||||||
# server-addr: 172.16.15.103:8848
|
# server-addr: 172.16.15.103:8848
|
||||||
namespace: saas-local
|
namespace: saas-local
|
||||||
|
# namespace: public
|
||||||
username: nacos
|
username: nacos
|
||||||
password: nacos
|
password: nacos
|
||||||
# 配置文件格式
|
# 配置文件格式
|
||||||
|
|||||||
Reference in New Issue
Block a user