snmp采集工具优化,采集数据入库优化。
This commit is contained in:
@@ -4,6 +4,7 @@ import com.ruoyi.common.core.constant.SecurityConstants;
|
|||||||
import com.ruoyi.common.core.constant.ServiceNameConstants;
|
import com.ruoyi.common.core.constant.ServiceNameConstants;
|
||||||
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.common.core.domain.R;
|
||||||
import com.ruoyi.system.api.domain.RmAlarmRecordRemote;
|
import com.ruoyi.system.api.domain.RmAlarmRecordRemote;
|
||||||
|
import com.ruoyi.system.api.domain.RmMonitorPolicyRemote;
|
||||||
import com.ruoyi.system.api.domain.RmNetworkInterfaceRemote;
|
import com.ruoyi.system.api.domain.RmNetworkInterfaceRemote;
|
||||||
import com.ruoyi.system.api.factory.RemoteRocketMqFallbackFactory;
|
import com.ruoyi.system.api.factory.RemoteRocketMqFallbackFactory;
|
||||||
import org.springframework.cloud.openfeign.FeignClient;
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
@@ -52,4 +53,29 @@ public interface RemoteRocketMqService {
|
|||||||
*/
|
*/
|
||||||
@PostMapping("/networkInterface/getNetworkInterfaceList")
|
@PostMapping("/networkInterface/getNetworkInterfaceList")
|
||||||
public R<List<RmNetworkInterfaceRemote>> getNetworkInterfaceList(@RequestBody RmNetworkInterfaceRemote rmNetworkInterfaceRemote, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
|
public R<List<RmNetworkInterfaceRemote>> getNetworkInterfaceList(@RequestBody RmNetworkInterfaceRemote rmNetworkInterfaceRemote, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 下发策略
|
||||||
|
* @param id
|
||||||
|
* @param source
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping("/monitorPolicy/innerIssueSwitchPolicy")
|
||||||
|
public R<String> innerIssueSwitchPolicy(Long id, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
|
||||||
|
/**
|
||||||
|
* 查询策略信息
|
||||||
|
* @param rmMonitorPolicyRemote
|
||||||
|
* @param source
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping("/monitorPolicy/getPolicyMsgInner")
|
||||||
|
public R<List<RmMonitorPolicyRemote>> getPolicyMsgInner(@RequestBody RmMonitorPolicyRemote rmMonitorPolicyRemote, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
|
||||||
|
/**
|
||||||
|
* 策略添加新设备
|
||||||
|
* @param rmMonitorPolicyRemote
|
||||||
|
* @param source
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping("/monitorPolicy/updatePolicyMsgInner")
|
||||||
|
public R<Integer> updatePolicyMsgInner(@RequestBody RmMonitorPolicyRemote rmMonitorPolicyRemote, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,61 @@
|
|||||||
|
package com.ruoyi.system.api.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;
|
||||||
|
@Data
|
||||||
|
public class RmMonitorPolicyRemote extends BaseEntity {
|
||||||
|
|
||||||
|
/** 主键ID */
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
|
||||||
|
/** 策略名称 */
|
||||||
|
@Excel(name = "策略名称")
|
||||||
|
private String policyName;
|
||||||
|
|
||||||
|
/** 描述 */
|
||||||
|
@Excel(name = "描述")
|
||||||
|
private String description;
|
||||||
|
|
||||||
|
/** 资源组ID */
|
||||||
|
private Long resourceGroupId;
|
||||||
|
/** 资源组名称 */
|
||||||
|
@Excel(name = "关联资源组")
|
||||||
|
private String resourceGroupName;
|
||||||
|
/** 模板ID */
|
||||||
|
private Long templateId;
|
||||||
|
/** 模板名称 */
|
||||||
|
@Excel(name = "关联监控模板")
|
||||||
|
private String templateName;
|
||||||
|
|
||||||
|
/** 状态:0-待下发,1-已下发 */
|
||||||
|
@Excel(name = "策略状态", readConverterExp = "0=待下发,1=已下发")
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
/** 下发策略时间 */
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@Excel(name = "下发策略时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private Date deployTime;
|
||||||
|
/** 资源类型,linux switch */
|
||||||
|
private String resourceType;
|
||||||
|
/** 查询条件名称 */
|
||||||
|
private String queryName;
|
||||||
|
/** 创建时间 */
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@Excel(name = "创建时间")
|
||||||
|
private Date createTime;
|
||||||
|
/** 修改时间 */
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@Excel(name = "修改时间")
|
||||||
|
private Date updateTime;
|
||||||
|
/** 交换机类型 */
|
||||||
|
private String switchType;
|
||||||
|
/** 部署设备 */
|
||||||
|
private String deployDevice;
|
||||||
|
/** 优先级 */
|
||||||
|
private String priority;
|
||||||
|
}
|
||||||
@@ -3,6 +3,7 @@ package com.ruoyi.system.api.factory;
|
|||||||
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.common.core.domain.R;
|
||||||
import com.ruoyi.system.api.RemoteRocketMqService;
|
import com.ruoyi.system.api.RemoteRocketMqService;
|
||||||
import com.ruoyi.system.api.domain.RmAlarmRecordRemote;
|
import com.ruoyi.system.api.domain.RmAlarmRecordRemote;
|
||||||
|
import com.ruoyi.system.api.domain.RmMonitorPolicyRemote;
|
||||||
import com.ruoyi.system.api.domain.RmNetworkInterfaceRemote;
|
import com.ruoyi.system.api.domain.RmNetworkInterfaceRemote;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@@ -51,6 +52,21 @@ public class RemoteRocketMqFallbackFactory implements FallbackFactory<RemoteRock
|
|||||||
public R<List<RmNetworkInterfaceRemote>> getNetworkInterfaceList(RmNetworkInterfaceRemote rmNetworkInterfaceRemote, String source) {
|
public R<List<RmNetworkInterfaceRemote>> getNetworkInterfaceList(RmNetworkInterfaceRemote rmNetworkInterfaceRemote, String source) {
|
||||||
return R.fail(throwable.getMessage());
|
return R.fail(throwable.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<String> innerIssueSwitchPolicy(Long id, String source) {
|
||||||
|
return R.fail(throwable.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<List<RmMonitorPolicyRemote>> getPolicyMsgInner(RmMonitorPolicyRemote rmMonitorPolicyRemote, String source) {
|
||||||
|
return R.fail(throwable.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<Integer> updatePolicyMsgInner(RmMonitorPolicyRemote rmMonitorPolicyRemote, String source) {
|
||||||
|
return R.fail(throwable.getMessage());
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ public class InitialSwitchInfoDetailsServiceImpl implements IInitialSwitchInfoDe
|
|||||||
String switchSn = details.getSwitchSn();
|
String switchSn = details.getSwitchSn();
|
||||||
RmEpsTopologyManagement rmEpsTopologyManagement = new RmEpsTopologyManagement();
|
RmEpsTopologyManagement rmEpsTopologyManagement = new RmEpsTopologyManagement();
|
||||||
rmEpsTopologyManagement.setInterfaceName(interfaceName);
|
rmEpsTopologyManagement.setInterfaceName(interfaceName);
|
||||||
rmEpsTopologyManagement.setSwitchSn(switchSn);
|
rmEpsTopologyManagement.setSwitchIpAddress(details.getSwitchIp());
|
||||||
List<RmEpsTopologyManagement> managements = rmEpsTopologyManagementMapper.selectRmEpsTopologyManagementList(rmEpsTopologyManagement);
|
List<RmEpsTopologyManagement> managements = rmEpsTopologyManagementMapper.selectRmEpsTopologyManagementList(rmEpsTopologyManagement);
|
||||||
// 赋值
|
// 赋值
|
||||||
if(!managements.isEmpty()){
|
if(!managements.isEmpty()){
|
||||||
|
|||||||
@@ -1,7 +1,12 @@
|
|||||||
package com.ruoyi.system.service.impl;
|
package com.ruoyi.system.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.DateUtils;
|
||||||
|
import com.ruoyi.common.core.utils.StringUtils;
|
||||||
import com.ruoyi.common.core.utils.uuid.IdUtils;
|
import com.ruoyi.common.core.utils.uuid.IdUtils;
|
||||||
|
import com.ruoyi.system.api.RemoteRocketMqService;
|
||||||
|
import com.ruoyi.system.api.domain.RmMonitorPolicyRemote;
|
||||||
import com.ruoyi.system.domain.RmSwitchInterfaceInfo;
|
import com.ruoyi.system.domain.RmSwitchInterfaceInfo;
|
||||||
import com.ruoyi.system.domain.RmSwitchManagement;
|
import com.ruoyi.system.domain.RmSwitchManagement;
|
||||||
import com.ruoyi.system.mapper.RmSwitchInterfaceInfoMapper;
|
import com.ruoyi.system.mapper.RmSwitchInterfaceInfoMapper;
|
||||||
@@ -25,6 +30,8 @@ public class RmSwitchManagementServiceImpl implements IRmSwitchManagementService
|
|||||||
private RmSwitchManagementMapper rmSwitchManagementMapper;
|
private RmSwitchManagementMapper rmSwitchManagementMapper;
|
||||||
@Autowired
|
@Autowired
|
||||||
private RmSwitchInterfaceInfoMapper rmSwitchInterfaceInfoMapper;
|
private RmSwitchInterfaceInfoMapper rmSwitchInterfaceInfoMapper;
|
||||||
|
@Autowired
|
||||||
|
private RemoteRocketMqService remoteRocketMqService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询交换机管理
|
* 查询交换机管理
|
||||||
@@ -65,11 +72,45 @@ public class RmSwitchManagementServiceImpl implements IRmSwitchManagementService
|
|||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public int insertRmSwitchManagement(RmSwitchManagement rmSwitchManagement)
|
public int insertRmSwitchManagement(RmSwitchManagement rmSwitchManagement) {
|
||||||
{
|
// 初始化交换机信息
|
||||||
rmSwitchManagement.setCreateTime(DateUtils.getNowDate());
|
rmSwitchManagement.setCreateTime(DateUtils.getNowDate());
|
||||||
rmSwitchManagement.setClientId(IdUtils.simpleUUID());
|
String clientId= IdUtils.simpleUUID();
|
||||||
return rmSwitchManagementMapper.insertRmSwitchManagement(rmSwitchManagement);
|
rmSwitchManagement.setClientId(clientId);
|
||||||
|
rmSwitchManagementMapper.insertRmSwitchManagement(rmSwitchManagement);
|
||||||
|
|
||||||
|
// 查询并更新优先级为0的交换机策略
|
||||||
|
R<List<RmMonitorPolicyRemote>> policyMsgR = remoteRocketMqService.getPolicyMsgInner(
|
||||||
|
new RmMonitorPolicyRemote() {{
|
||||||
|
setPriority("0");
|
||||||
|
setResourceType("switch");
|
||||||
|
}},
|
||||||
|
SecurityConstants.INNER
|
||||||
|
);
|
||||||
|
|
||||||
|
if (policyMsgR.getData() != null && !policyMsgR.getData().isEmpty()) {
|
||||||
|
RmMonitorPolicyRemote policyMsg = policyMsgR.getData().get(0);
|
||||||
|
|
||||||
|
// 构建设备信息字符串
|
||||||
|
String newDeviceList = StringUtils.isBlank(policyMsg.getDeployDevice())
|
||||||
|
? clientId
|
||||||
|
: policyMsg.getDeployDevice() + "\n" + clientId;
|
||||||
|
|
||||||
|
// 更新策略设备列表
|
||||||
|
remoteRocketMqService.updatePolicyMsgInner(
|
||||||
|
new RmMonitorPolicyRemote() {{
|
||||||
|
setId(policyMsg.getId());
|
||||||
|
setDeployDevice(newDeviceList);
|
||||||
|
setUpdateTime(DateUtils.getNowDate());
|
||||||
|
}},
|
||||||
|
SecurityConstants.INNER
|
||||||
|
);
|
||||||
|
|
||||||
|
// 下发更新后的策略
|
||||||
|
remoteRocketMqService.innerIssueSwitchPolicy(policyMsg.getId(), SecurityConstants.INNER);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.ruoyi.rocketmq.controller;
|
package com.ruoyi.rocketmq.controller;
|
||||||
|
|
||||||
|
import com.ruoyi.common.core.domain.R;
|
||||||
import com.ruoyi.common.core.utils.poi.ExcelUtil;
|
import com.ruoyi.common.core.utils.poi.ExcelUtil;
|
||||||
import com.ruoyi.common.core.web.controller.BaseController;
|
import com.ruoyi.common.core.web.controller.BaseController;
|
||||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||||
@@ -7,6 +8,7 @@ import com.ruoyi.common.core.web.page.PageDomain;
|
|||||||
import com.ruoyi.common.core.web.page.TableDataInfo;
|
import com.ruoyi.common.core.web.page.TableDataInfo;
|
||||||
import com.ruoyi.common.log.annotation.Log;
|
import com.ruoyi.common.log.annotation.Log;
|
||||||
import com.ruoyi.common.log.enums.BusinessType;
|
import com.ruoyi.common.log.enums.BusinessType;
|
||||||
|
import com.ruoyi.common.security.annotation.InnerAuth;
|
||||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||||
import com.ruoyi.rocketmq.domain.RmMonitorPolicy;
|
import com.ruoyi.rocketmq.domain.RmMonitorPolicy;
|
||||||
import com.ruoyi.rocketmq.service.IRmMonitorPolicyService;
|
import com.ruoyi.rocketmq.service.IRmMonitorPolicyService;
|
||||||
@@ -152,4 +154,38 @@ public class RmMonitorPolicyController extends BaseController
|
|||||||
return toAjax(rows);
|
return toAjax(rows);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 策略下发,内部调用
|
||||||
|
* @param id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Log(title = "issueSwitchPolicy", businessType = BusinessType.UPDATE)
|
||||||
|
@GetMapping("/innerIssueSwitchPolicy")
|
||||||
|
@InnerAuth
|
||||||
|
public R<String> innerIssueSwitchPolicy(Long id)
|
||||||
|
{
|
||||||
|
rmMonitorPolicyService.issueSwitchPolicy(id);
|
||||||
|
return R.ok("优先级0策略下发成功");
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 查询资源监控策略列表
|
||||||
|
*/
|
||||||
|
@PostMapping("/getPolicyMsgInner")
|
||||||
|
@InnerAuth
|
||||||
|
public R<List<RmMonitorPolicy>> getPolicyMsgInner(@RequestBody RmMonitorPolicy rmMonitorPolicy)
|
||||||
|
{
|
||||||
|
List<RmMonitorPolicy> list = rmMonitorPolicyService.selectRmMonitorPolicyList(rmMonitorPolicy);
|
||||||
|
return R.ok(list);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 修改资源监控策略
|
||||||
|
*/
|
||||||
|
@PostMapping("/updatePolicyMsgInner")
|
||||||
|
@InnerAuth
|
||||||
|
public R<Integer> updatePolicyMsgInner(@RequestBody RmMonitorPolicy rmMonitorPolicy)
|
||||||
|
{
|
||||||
|
int rows = rmMonitorPolicyService.updatePolicyMsgInner(rmMonitorPolicy);
|
||||||
|
return R.ok(rows);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ public class CollectDataVo {
|
|||||||
private String type;
|
private String type;
|
||||||
/** 数据 */
|
/** 数据 */
|
||||||
private String value;
|
private String value;
|
||||||
|
/** 交换机ip */
|
||||||
|
private String switchIp;
|
||||||
/** 时间戳 */
|
/** 时间戳 */
|
||||||
private long timestamp;
|
private long timestamp;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,4 +76,11 @@ public interface IRmMonitorPolicyService
|
|||||||
int issueSwitchPolicy(Long id);
|
int issueSwitchPolicy(Long id);
|
||||||
|
|
||||||
int updateResourcePolicy(RmMonitorPolicy rmMonitorPolicy);
|
int updateResourcePolicy(RmMonitorPolicy rmMonitorPolicy);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改资源监控策略内部调用
|
||||||
|
* @param rmMonitorPolicy
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
int updatePolicyMsgInner(RmMonitorPolicy rmMonitorPolicy);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -353,6 +353,11 @@ public class RmMonitorPolicyServiceImpl implements IRmMonitorPolicyService
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int updatePolicyMsgInner(RmMonitorPolicy rmMonitorPolicy) {
|
||||||
|
return rmMonitorPolicyMapper.updateRmMonitorPolicy(rmMonitorPolicy);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据id查询监控策略详情
|
* 根据id查询监控策略详情
|
||||||
* @param id
|
* @param id
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
package com.ruoyi.rocketmq.snmp.config;
|
||||||
|
|
||||||
|
import com.ruoyi.rocketmq.domain.RmMonitorPolicy;
|
||||||
|
import com.ruoyi.rocketmq.service.IRmMonitorPolicyService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
@Slf4j
|
||||||
|
public class SwitchStrategyInitializer {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IRmMonitorPolicyService rmMonitorPolicyService;
|
||||||
|
|
||||||
|
|
||||||
|
// 服务启动时下发默认策略
|
||||||
|
@PostConstruct
|
||||||
|
public void init() {
|
||||||
|
log.info("开始初始化交换机采集策略...");
|
||||||
|
try {
|
||||||
|
// 下发优先级为0的交换机策略
|
||||||
|
RmMonitorPolicy queryParam = new RmMonitorPolicy();
|
||||||
|
queryParam.setPriority("0");
|
||||||
|
queryParam.setResourceType("switch");
|
||||||
|
List<RmMonitorPolicy> defaultPolicy = rmMonitorPolicyService.selectRmMonitorPolicyList(queryParam);
|
||||||
|
if(!defaultPolicy.isEmpty()){
|
||||||
|
rmMonitorPolicyService.issueSwitchPolicy(defaultPolicy.get(0).getId());
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("初始化交换机采集策略失败", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -28,6 +28,8 @@ import java.util.concurrent.ScheduledFuture;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class MultiSwitchCollectionScheduler {
|
public class MultiSwitchCollectionScheduler {
|
||||||
|
|
||||||
|
private static final String PREFIX = "switch";
|
||||||
|
private static final String SUFFIX = "Collect";
|
||||||
private final TaskScheduler taskScheduler;
|
private final TaskScheduler taskScheduler;
|
||||||
private final DynamicOidCollector dynamicOidCollector;
|
private final DynamicOidCollector dynamicOidCollector;
|
||||||
private boolean collectorInitialized = false;
|
private boolean collectorInitialized = false;
|
||||||
@@ -95,8 +97,27 @@ public class MultiSwitchCollectionScheduler {
|
|||||||
|
|
||||||
// 根据CollectVo配置创建不同的定时任务
|
// 根据CollectVo配置创建不同的定时任务
|
||||||
for (CollectVo collectVo : collectVos) {
|
for (CollectVo collectVo : collectVos) {
|
||||||
if (collectVo.isCollect()) { //剔除switchVo中的其他oid
|
if (collectVo.isCollect()) {
|
||||||
ScheduledFuture<?> task = createCollectionTask(switchIp, clientId, switchVo, collectVo);
|
ScheduledFuture<?> task;
|
||||||
|
// 剔除switchVo中的其他oid
|
||||||
|
if (switchVo.getOtherOID() != null) {
|
||||||
|
Map<String, String> otherOid = switchOidVo.getOtherOID();
|
||||||
|
String type = collectVo.getType();
|
||||||
|
|
||||||
|
// 创建新的 Map,避免修改原始数据
|
||||||
|
Map<String, String> filteredOid = new HashMap<>(otherOid);
|
||||||
|
filteredOid.entrySet().removeIf(entry ->
|
||||||
|
!entry.getValue().equalsIgnoreCase(extractMiddle(type))
|
||||||
|
);
|
||||||
|
|
||||||
|
// 创建新的 SwitchOidDto,避免修改原始 switchVo
|
||||||
|
SwitchOidDto resultMap = createSwitchMsg(switchVo);
|
||||||
|
resultMap.setOtherOID(filteredOid);
|
||||||
|
|
||||||
|
task = createCollectionTask(switchIp, clientId, resultMap, collectVo);
|
||||||
|
} else {
|
||||||
|
task = createCollectionTask(switchIp, clientId, switchVo, collectVo);
|
||||||
|
}
|
||||||
if (task != null) {
|
if (task != null) {
|
||||||
switchTasks.put(collectVo.getType(), task);
|
switchTasks.put(collectVo.getType(), task);
|
||||||
}
|
}
|
||||||
@@ -112,6 +133,69 @@ public class MultiSwitchCollectionScheduler {
|
|||||||
switchIp, switchTasks.size());
|
switchIp, switchTasks.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 赋值oid
|
||||||
|
* @param switchVo
|
||||||
|
*/
|
||||||
|
public SwitchOidDto createSwitchMsg(SwitchOidDto switchVo){
|
||||||
|
SwitchOidDto resultMap = new SwitchOidDto();
|
||||||
|
resultMap.setIp(switchVo.getIp());
|
||||||
|
resultMap.setCommunity(switchVo.getCommunity());
|
||||||
|
resultMap.setPort(switchVo.getPort());
|
||||||
|
resultMap.setVersion(switchVo.getVersion());
|
||||||
|
resultMap.setTimeout(switchVo.getTimeout());
|
||||||
|
resultMap.setRetries(switchVo.getRetries());
|
||||||
|
|
||||||
|
// SNMP v3 特有参数
|
||||||
|
resultMap.setSecurityName(switchVo.getSecurityName());
|
||||||
|
resultMap.setAuthProtocol(switchVo.getAuthProtocol());
|
||||||
|
resultMap.setAuthPassword(switchVo.getAuthPassword());
|
||||||
|
resultMap.setPrivProtocol(switchVo.getPrivProtocol());
|
||||||
|
resultMap.setPrivPassword(switchVo.getPrivPassword());
|
||||||
|
resultMap.setSecurityLevel(switchVo.getSecurityLevel());
|
||||||
|
|
||||||
|
// OID配置(复制所有OID Map)
|
||||||
|
resultMap.setNetOID(new LinkedHashMap<>(switchVo.getNetOID()));
|
||||||
|
resultMap.setEntityOID(new LinkedHashMap<>(switchVo.getEntityOID()));
|
||||||
|
resultMap.setPwrOID(new LinkedHashMap<>(switchVo.getPwrOID()));
|
||||||
|
resultMap.setFanOID(new LinkedHashMap<>(switchVo.getFanOID()));
|
||||||
|
resultMap.setMpuOID(new LinkedHashMap<>(switchVo.getMpuOID()));
|
||||||
|
resultMap.setModuleOID(new LinkedHashMap<>(switchVo.getModuleOID()));
|
||||||
|
resultMap.setPowerOID(new LinkedHashMap<>(switchVo.getPowerOID()));
|
||||||
|
|
||||||
|
// 过滤条件
|
||||||
|
resultMap.setFilters(new HashMap<>(switchVo.getFilters()));
|
||||||
|
return resultMap;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 提取字符串的中间部分(去除固定的前缀和后缀)
|
||||||
|
* @param type 输入字符串(如 "switchAssCollect")
|
||||||
|
* @return 中间部分(如 "Ass")
|
||||||
|
*/
|
||||||
|
public String extractMiddle(String type) {
|
||||||
|
if (type == null || type.isEmpty()) {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查是否以 "switch" 开头
|
||||||
|
if (!type.startsWith(PREFIX)) {
|
||||||
|
throw new IllegalArgumentException("Type must start with 'switch'");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查是否以 "Collect" 结尾
|
||||||
|
if (!type.endsWith(SUFFIX)) {
|
||||||
|
throw new IllegalArgumentException("Type must end with 'Collect'");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 计算中间部分的起始和结束位置
|
||||||
|
int prefixLength = PREFIX.length();
|
||||||
|
int suffixLength = SUFFIX.length();
|
||||||
|
int middleStart = prefixLength;
|
||||||
|
int middleEnd = type.length() - suffixLength;
|
||||||
|
|
||||||
|
// 提取中间部分
|
||||||
|
return type.substring(middleStart, middleEnd);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 启动SNMP v3交换机采集任务
|
* 启动SNMP v3交换机采集任务
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSONObject;
|
|||||||
import com.fasterxml.jackson.databind.JsonNode;
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
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.utils.DateUtils;
|
import com.ruoyi.common.core.utils.DateUtils;
|
||||||
import com.ruoyi.rocketmq.domain.*;
|
import com.ruoyi.rocketmq.domain.*;
|
||||||
import com.ruoyi.rocketmq.domain.vo.CollectDataVo;
|
import com.ruoyi.rocketmq.domain.vo.CollectDataVo;
|
||||||
@@ -13,7 +12,6 @@ import com.ruoyi.rocketmq.snmp.dto.CollectionResult;
|
|||||||
import com.ruoyi.rocketmq.utils.SwitchJsonDataParser;
|
import com.ruoyi.rocketmq.utils.SwitchJsonDataParser;
|
||||||
import com.ruoyi.system.api.RemoteRevenueConfigService;
|
import com.ruoyi.system.api.RemoteRevenueConfigService;
|
||||||
import com.ruoyi.system.api.domain.InitialSwitchInfoDetailsRemote;
|
import com.ruoyi.system.api.domain.InitialSwitchInfoDetailsRemote;
|
||||||
import com.ruoyi.system.api.domain.RmResourceRegistrationRemote;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@@ -58,10 +56,11 @@ public class ProcessSwitchCollectDataService {
|
|||||||
List<Map<String, String>> resultData = result.getData();
|
List<Map<String, String>> resultData = result.getData();
|
||||||
CollectDataVo switchDataVo = new CollectDataVo();
|
CollectDataVo switchDataVo = new CollectDataVo();
|
||||||
switchDataVo.setTimestamp(result.getTimestamp());
|
switchDataVo.setTimestamp(result.getTimestamp());
|
||||||
|
switchDataVo.setSwitchIp(result.getSwitchIp());
|
||||||
switchDataVo.setValue(JSONObject.toJSONString(resultData));
|
switchDataVo.setValue(JSONObject.toJSONString(resultData));
|
||||||
switch(result.getDeviceType()){
|
switch(result.getDeviceType()){
|
||||||
case "net":
|
case "net":
|
||||||
// handleSwitchNetMessage(switchDataVo, clientId);
|
handleSwitchNetMessage(switchDataVo, clientId);
|
||||||
break;
|
break;
|
||||||
case "pwr":
|
case "pwr":
|
||||||
handleSwitchPwrMessage(switchDataVo, clientId);
|
handleSwitchPwrMessage(switchDataVo, clientId);
|
||||||
@@ -119,7 +118,7 @@ public class ProcessSwitchCollectDataService {
|
|||||||
insertData.setCollectType(fieldName);
|
insertData.setCollectType(fieldName);
|
||||||
if (!"null".equals(fieldValue)) {
|
if (!"null".equals(fieldValue)) {
|
||||||
insertData.setCollectValue(fieldValue);
|
insertData.setCollectValue(fieldValue);
|
||||||
// insertInitialSwitchOtherInfo.insertInitialSwitchOtherCollectData(insertData);
|
insertInitialSwitchOtherInfo.insertInitialSwitchOtherCollectData(insertData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -134,8 +133,7 @@ public class ProcessSwitchCollectDataService {
|
|||||||
insertData.setCollectType(fieldName);
|
insertData.setCollectType(fieldName);
|
||||||
if (!"null".equals(fieldValue)) {
|
if (!"null".equals(fieldValue)) {
|
||||||
insertData.setCollectValue(fieldValue);
|
insertData.setCollectValue(fieldValue);
|
||||||
System.out.println("1");
|
insertInitialSwitchOtherInfo.insertInitialSwitchOtherCollectData(insertData);
|
||||||
// insertInitialSwitchOtherInfo.insertInitialSwitchOtherCollectData(insertData);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -154,13 +152,6 @@ public class ProcessSwitchCollectDataService {
|
|||||||
private void handleSwitchNetMessage(CollectDataVo switchDataVo, String clientId) {
|
private void handleSwitchNetMessage(CollectDataVo switchDataVo, String clientId) {
|
||||||
List<InitialSwitchInfo> switchInfos = SwitchJsonDataParser.parseJsonData(switchDataVo.getValue(), InitialSwitchInfo.class);
|
List<InitialSwitchInfo> switchInfos = SwitchJsonDataParser.parseJsonData(switchDataVo.getValue(), InitialSwitchInfo.class);
|
||||||
if(!switchInfos.isEmpty()){
|
if(!switchInfos.isEmpty()){
|
||||||
// 根据clientId查询交换机ip
|
|
||||||
RmResourceRegistrationRemote queryParam = new RmResourceRegistrationRemote();
|
|
||||||
queryParam.setHardwareSn(clientId);
|
|
||||||
R<RmResourceRegistrationRemote> registMsgR = remoteRevenueConfigService.getListByHardwareSn(queryParam, SecurityConstants.INNER);
|
|
||||||
if(registMsgR != null){
|
|
||||||
RmResourceRegistrationRemote registMsg = registMsgR.getData();
|
|
||||||
}
|
|
||||||
// 时间戳转换
|
// 时间戳转换
|
||||||
long timestamp = switchDataVo.getTimestamp();
|
long timestamp = switchDataVo.getTimestamp();
|
||||||
long millis = timestamp * 1000;
|
long millis = timestamp * 1000;
|
||||||
@@ -186,9 +177,7 @@ public class ProcessSwitchCollectDataService {
|
|||||||
switchInfos.forEach(switchInfo -> {
|
switchInfos.forEach(switchInfo -> {
|
||||||
switchInfo.setClientId(clientId);
|
switchInfo.setClientId(clientId);
|
||||||
switchInfo.setCreateTime(createTime);
|
switchInfo.setCreateTime(createTime);
|
||||||
if(registMsgR != null && registMsgR.getData()!=null && registMsgR.getData().getSnmpCollectAddr()!=null){
|
switchInfo.setSwitchIp(switchDataVo.getSwitchIp());
|
||||||
switchInfo.setSwitchIp(registMsgR.getData().getSnmpCollectAddr());
|
|
||||||
}
|
|
||||||
InitialSwitchInfoTemp tempInfo = tempMap.get(switchInfo.getName());
|
InitialSwitchInfoTemp tempInfo = tempMap.get(switchInfo.getName());
|
||||||
if (tempInfo != null) {
|
if (tempInfo != null) {
|
||||||
// 计算inSpeed
|
// 计算inSpeed
|
||||||
@@ -212,9 +201,7 @@ public class ProcessSwitchCollectDataService {
|
|||||||
switchInfos.forEach(switchInfo -> {
|
switchInfos.forEach(switchInfo -> {
|
||||||
switchInfo.setClientId(clientId);
|
switchInfo.setClientId(clientId);
|
||||||
switchInfo.setCreateTime(createTime);
|
switchInfo.setCreateTime(createTime);
|
||||||
if(registMsgR != null && registMsgR.getData()!=null && registMsgR.getData().getSnmpCollectAddr()!=null){
|
switchInfo.setSwitchIp(switchDataVo.getSwitchIp());
|
||||||
switchInfo.setSwitchIp(registMsgR.getData().getSnmpCollectAddr());
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// 清空临时表对应switch信息
|
// 清空临时表对应switch信息
|
||||||
|
|||||||
@@ -19,10 +19,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<result property="switchType" column="switch_type" />
|
<result property="switchType" column="switch_type" />
|
||||||
<result property="deployDevice" column="deploy_device" />
|
<result property="deployDevice" column="deploy_device" />
|
||||||
<result property="resourceType" column="resource_type" />
|
<result property="resourceType" column="resource_type" />
|
||||||
|
<result property="priority" column="priority" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="selectRmMonitorPolicyVo">
|
<sql id="selectRmMonitorPolicyVo">
|
||||||
select id, template_id, resource_group_id, policy_name, description, status, deploy_time, create_time, update_time, create_by, update_by, switch_type, deploy_device, resource_type from rm_monitor_policy
|
select id, template_id, resource_group_id, policy_name, description, status, deploy_time, create_time, update_time, create_by, update_by, switch_type, deploy_device, resource_type, priority from rm_monitor_policy
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
<select id="selectRmMonitorPolicyList" parameterType="RmMonitorPolicy" resultMap="RmMonitorPolicyResult">
|
<select id="selectRmMonitorPolicyList" parameterType="RmMonitorPolicy" resultMap="RmMonitorPolicyResult">
|
||||||
@@ -30,11 +31,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<where>
|
<where>
|
||||||
<if test="templateId != null "> and template_id = #{templateId}</if>
|
<if test="templateId != null "> and template_id = #{templateId}</if>
|
||||||
<if test="resourceType != null "> and resource_type = #{resourceType}</if>
|
<if test="resourceType != null "> and resource_type = #{resourceType}</if>
|
||||||
|
<if test="resourceType != null "> and resource_type = #{resourceType}</if>
|
||||||
<if test="resourceGroupId != null "> and resource_group_id = #{resourceGroupId}</if>
|
<if test="resourceGroupId != null "> and resource_group_id = #{resourceGroupId}</if>
|
||||||
<if test="policyName != null and policyName != ''"> and policy_name like concat('%', #{policyName}, '%')</if>
|
<if test="policyName != null and policyName != ''"> and policy_name like concat('%', #{policyName}, '%')</if>
|
||||||
<if test="description != null and description != ''"> and description = #{description}</if>
|
<if test="description != null and description != ''"> and description = #{description}</if>
|
||||||
<if test="status != null and status != ''"> and status = #{status}</if>
|
<if test="status != null and status != ''"> and status = #{status}</if>
|
||||||
<if test="deployTime != null "> and deploy_time = #{deployTime}</if>
|
<if test="deployTime != null "> and deploy_time = #{deployTime}</if>
|
||||||
|
<if test="priority != null "> and priority = #{priority}</if>
|
||||||
<if test="queryName != null and queryName != ''">
|
<if test="queryName != null and queryName != ''">
|
||||||
and (policy_name like concat('%', #{queryName}, '%')
|
and (policy_name like concat('%', #{queryName}, '%')
|
||||||
or template_id in (select id from rm_monitor_template where template_name like concat('%', #{queryName}, '%'))
|
or template_id in (select id from rm_monitor_template where template_name like concat('%', #{queryName}, '%'))
|
||||||
@@ -65,6 +68,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="switchType != null">switch_type,</if>
|
<if test="switchType != null">switch_type,</if>
|
||||||
<if test="deployDevice != null">deploy_device,</if>
|
<if test="deployDevice != null">deploy_device,</if>
|
||||||
<if test="resourceType != null">resource_type,</if>
|
<if test="resourceType != null">resource_type,</if>
|
||||||
|
<if test="priority != null">priority,</if>
|
||||||
</trim>
|
</trim>
|
||||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
<if test="templateId != null">#{templateId},</if>
|
<if test="templateId != null">#{templateId},</if>
|
||||||
@@ -80,6 +84,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="switchType != null">#{switchType},</if>
|
<if test="switchType != null">#{switchType},</if>
|
||||||
<if test="deployDevice != null">#{deployDevice},</if>
|
<if test="deployDevice != null">#{deployDevice},</if>
|
||||||
<if test="resourceType != null">#{resourceType},</if>
|
<if test="resourceType != null">#{resourceType},</if>
|
||||||
|
<if test="priority != null">#{priority},</if>
|
||||||
</trim>
|
</trim>
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
@@ -99,6 +104,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="switchType != null">switch_type = #{switchType},</if>
|
<if test="switchType != null">switch_type = #{switchType},</if>
|
||||||
<if test="deployDevice != null">deploy_device = #{deployDevice},</if>
|
<if test="deployDevice != null">deploy_device = #{deployDevice},</if>
|
||||||
<if test="resourceType != null">resource_type = #{resourceType},</if>
|
<if test="resourceType != null">resource_type = #{resourceType},</if>
|
||||||
|
<if test="priority != null">priority = #{priority},</if>
|
||||||
</trim>
|
</trim>
|
||||||
where id = #{id}
|
where id = #{id}
|
||||||
</update>
|
</update>
|
||||||
|
|||||||
Reference in New Issue
Block a user