From 2f8fd79de591627dc4af43a169b8f8c92eed4ca9 Mon Sep 17 00:00:00 2001 From: gaoyutao Date: Thu, 27 Nov 2025 18:36:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96mtr=E6=8E=A2=E6=B5=8B?= =?UTF-8?q?=E7=AD=96=E7=95=A5=20=E5=91=8A=E8=AD=A6=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=9A=E5=8A=A1=E5=90=8D=E7=A7=B0=E3=80=81?= =?UTF-8?q?=E5=91=8A=E8=AD=A6=E6=8E=A8=E9=80=81=E6=98=AF=E5=90=A6=E6=88=90?= =?UTF-8?q?=E5=8A=9F=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tongran-auth/src/main/resources/bootstrap.yml | 2 +- .../src/main/resources/bootstrap.yml | 2 +- .../tongran/job/config/ScheduleConfig.java | 4 +-- tongran-modules/tongran-mtragent/pom.xml | 16 ++++++++++ .../domain/vo/RmMtrPolicyConfigVo.java | 31 +++++++++++++++++++ .../mtragent/handler/MessageHandler.java | 24 +++++++++----- .../mtragent/producer/MessageProducer.java | 4 +-- .../RmMtrClientRegistrationServiceImpl.java | 2 +- .../impl/RmMtrPolicyConfigServiceImpl.java | 2 ++ .../src/main/resources/bootstrap.yml | 2 +- .../system/config/TableScheduleConfig.java | 12 ++++++- .../system/domain/RmResourceRegistration.java | 3 ++ .../impl/EpsNodeBandwidthServiceImpl.java | 2 -- .../RmResourceRegistrationServiceImpl.java | 21 +++++++++++++ .../src/main/resources/bootstrap.yml | 2 +- .../mapper/system/EpsNodeBandwidthMapper.xml | 3 +- .../tongran/rocketmq/domain/RmAlarmLog.java | 4 +-- .../rocketmq/snmp/DynamicOidCollector.java | 14 ++++----- .../MultiSwitchCollectionScheduler.java | 22 ++++++------- .../src/main/resources/bootstrap.yml | 2 +- 20 files changed, 132 insertions(+), 42 deletions(-) create mode 100644 tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/domain/vo/RmMtrPolicyConfigVo.java diff --git a/tongran-auth/src/main/resources/bootstrap.yml b/tongran-auth/src/main/resources/bootstrap.yml index 9cf0ca2..6236ee2 100644 --- a/tongran-auth/src/main/resources/bootstrap.yml +++ b/tongran-auth/src/main/resources/bootstrap.yml @@ -23,7 +23,7 @@ spring: server-addr: 172.16.15.52:8848 # server-addr: 172.16.15.103:8848 # namespace: public - namespace: saas-local + namespace: saas-prod username: nacos password: nacos # 配置文件格式 diff --git a/tongran-gateway/src/main/resources/bootstrap.yml b/tongran-gateway/src/main/resources/bootstrap.yml index 67041f1..cd517df 100644 --- a/tongran-gateway/src/main/resources/bootstrap.yml +++ b/tongran-gateway/src/main/resources/bootstrap.yml @@ -23,7 +23,7 @@ spring: server-addr: 172.16.15.52:8848 # server-addr: 172.16.15.103:8848 # namespace: public - namespace: saas-local + namespace: saas-prod username: nacos password: nacos # 配置文件格式 diff --git a/tongran-modules/tongran-job/src/main/java/com/tongran/job/config/ScheduleConfig.java b/tongran-modules/tongran-job/src/main/java/com/tongran/job/config/ScheduleConfig.java index a5d3451..e0c58b0 100644 --- a/tongran-modules/tongran-job/src/main/java/com/tongran/job/config/ScheduleConfig.java +++ b/tongran-modules/tongran-job/src/main/java/com/tongran/job/config/ScheduleConfig.java @@ -22,7 +22,7 @@ // // // quartz参数 // Properties prop = new Properties(); -// prop.put("org.quartz.scheduler.instanceName", "RuoyiScheduler"); +// prop.put("org.quartz.scheduler.instanceName", "TongRanScheduler"); // prop.put("org.quartz.scheduler.instanceId", "AUTO"); // // 线程池配置 // prop.put("org.quartz.threadPool.class", "org.quartz.simpl.SimpleThreadPool"); @@ -42,7 +42,7 @@ // prop.put("org.quartz.jobStore.tablePrefix", "QRTZ_"); // factory.setQuartzProperties(prop); // -// factory.setSchedulerName("RuoyiScheduler"); +// factory.setSchedulerName("TongRanScheduler"); // // 延时启动 // factory.setStartupDelay(1); // factory.setApplicationContextSchedulerContextKey("applicationContextKey"); diff --git a/tongran-modules/tongran-mtragent/pom.xml b/tongran-modules/tongran-mtragent/pom.xml index 3e000f0..7b965c6 100644 --- a/tongran-modules/tongran-mtragent/pom.xml +++ b/tongran-modules/tongran-mtragent/pom.xml @@ -97,4 +97,20 @@ spring-boot-starter-web + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + diff --git a/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/domain/vo/RmMtrPolicyConfigVo.java b/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/domain/vo/RmMtrPolicyConfigVo.java new file mode 100644 index 0000000..95cf25f --- /dev/null +++ b/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/domain/vo/RmMtrPolicyConfigVo.java @@ -0,0 +1,31 @@ +package com.tongran.mtragent.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * mtr探测策略配置对象 rm_mtr_policy_config + * + * @author gyt + * @date 2025-11-18 + */ +@Data +public class RmMtrPolicyConfigVo +{ + /** 开始时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + /** 结束时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date endTime; + + /** 探测频率(秒) */ + private Long probeFrequency; + /** clientId和ip对应集合 */ + private Map> clientIdToIpsMap; +} diff --git a/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/handler/MessageHandler.java b/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/handler/MessageHandler.java index 534ea4e..26138cb 100644 --- a/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/handler/MessageHandler.java +++ b/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/handler/MessageHandler.java @@ -27,8 +27,10 @@ import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import java.math.BigDecimal; +import java.nio.charset.StandardCharsets; import java.util.*; import java.util.function.Consumer; +import java.util.stream.Collectors; /** * 设备消息处理器 @@ -229,12 +231,18 @@ public class MessageHandler { if(!interfaces.isEmpty()) { RegisterMsgVo registerMsgVo = interfaces.get(0); String mtrClientId = registerMsgVo.getClientId(); - List mtrPolicyConfigList = rmMtrPolicyConfigService.getPoliciesForMtrClient(mtrClientId); - if(mtrPolicyConfigList == null){ - mtrPolicyConfigList = new ArrayList<>(); - } + List mtrPolicyConfigList = Optional.ofNullable(rmMtrPolicyConfigService.getPoliciesForMtrClient(mtrClientId)) + .orElse(new ArrayList<>()); + + List rmMtrPolicyConfigVoList = mtrPolicyConfigList.stream() + .map(policy -> { + RmMtrPolicyConfigVo vo = new RmMtrPolicyConfigVo(); + BeanUtils.copyProperties(policy, vo); + return vo; + }) + .collect(Collectors.toList()); // 构建mtrclient消息 - String mtrPolicyListStr = JSONObject.toJSONString(mtrPolicyConfigList); + String mtrPolicyListStr = JSONObject.toJSONString(rmMtrPolicyConfigVoList); PolicyTypeVo policyTypeVo = new PolicyTypeVo(); policyTypeVo.setMtrPolicys(mtrPolicyListStr); String configJson = JSONObject.toJSONString(policyTypeVo); @@ -247,9 +255,11 @@ public class MessageHandler { messageProducer.sendAsyncProducerMessage( producerMode.getAgentTopic(), "", - "", + "test", JSONObject.toJSONString(message) ); + int size = message.getData().getBytes(StandardCharsets.UTF_8).length; + log.info("消息大小: {} 字节, {} KB", size, size/1024.0); } catch (Exception e) { log.error("发送mtr策略失败,mtrClientId: {}", mtrClientId, e); } @@ -332,7 +342,7 @@ public class MessageHandler { // 只有达到3次心跳才执行数据库操作 if (newHeartbeatCount >= 3) { - log.info("客户端ID: {} 达到{}次心跳,开始执行数据库操作", clientId, newHeartbeatCount); + log.debug("客户端ID: {} 达到{}次心跳,开始执行数据库操作", clientId, newHeartbeatCount); // agent更新结果存储 RmMtrClientRegistration queryMtrClient = new RmMtrClientRegistration(); queryMtrClient.setMtrClientId(clientId); diff --git a/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/producer/MessageProducer.java b/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/producer/MessageProducer.java index f29ad96..4e42df0 100644 --- a/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/producer/MessageProducer.java +++ b/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/producer/MessageProducer.java @@ -165,7 +165,7 @@ public class MessageProducer { try { Message msg = new Message(topic,tag,key, value.getBytes(RemotingHelper.DEFAULT_CHARSET)); - System.out.println("生产者发送消息:"+ JSON.toJSONString(value)); + log.info("生产者发送消息:"+ JSON.toJSONString(value)); //设置消息延迟级别,我这里设置5,对应就是延时一分钟 // "1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h" msg.setDelayTimeLevel(level); @@ -197,7 +197,7 @@ public class MessageProducer { try { //创建一个消息实例,指定主题、标签和消息体。 Message msg = new Message(topic,tag,key, value.getBytes(RemotingHelper.DEFAULT_CHARSET)); - System.out.println("生产者发送消息:"+ JSON.toJSONString(value)); + log.info("生产者发送消息:"+ JSON.toJSONString(value)); producer.send(msg,new SendCallback() { // 异步回调的处理 @Override diff --git a/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/service/impl/RmMtrClientRegistrationServiceImpl.java b/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/service/impl/RmMtrClientRegistrationServiceImpl.java index a89be4d..c9a4add 100644 --- a/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/service/impl/RmMtrClientRegistrationServiceImpl.java +++ b/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/service/impl/RmMtrClientRegistrationServiceImpl.java @@ -68,7 +68,7 @@ public class RmMtrClientRegistrationServiceImpl implements IRmMtrClientRegistrat List list = rmMtrClientRegistrationMapper.selectRmMtrClientRegistrationList(rmMtrClientRegistration); for (RmMtrClientRegistration mtrClientRegistration : list) { // 处理网卡信息 - setNetworkMsg(rmMtrClientRegistration); + setNetworkMsg(mtrClientRegistration); } return list; } diff --git a/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/service/impl/RmMtrPolicyConfigServiceImpl.java b/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/service/impl/RmMtrPolicyConfigServiceImpl.java index 88769aa..56cb1e0 100644 --- a/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/service/impl/RmMtrPolicyConfigServiceImpl.java +++ b/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/service/impl/RmMtrPolicyConfigServiceImpl.java @@ -150,6 +150,8 @@ public class RmMtrPolicyConfigServiceImpl implements IRmMtrPolicyConfigService public int updateRmMtrPolicyConfig(RmMtrPolicyConfig rmMtrPolicyConfig) { rmMtrPolicyConfig.setUpdateTime(DateUtils.getNowDate()); + // 给ip赋值 + setServerip(rmMtrPolicyConfig); return rmMtrPolicyConfigMapper.updateRmMtrPolicyConfig(rmMtrPolicyConfig); } diff --git a/tongran-modules/tongran-mtragent/src/main/resources/bootstrap.yml b/tongran-modules/tongran-mtragent/src/main/resources/bootstrap.yml index ab754f2..adf8d9d 100644 --- a/tongran-modules/tongran-mtragent/src/main/resources/bootstrap.yml +++ b/tongran-modules/tongran-mtragent/src/main/resources/bootstrap.yml @@ -23,7 +23,7 @@ spring: server-addr: 172.16.15.52:8848 # server-addr: 172.16.15.103:8848 # namespace: public - namespace: saas-local + namespace: saas-prod username: nacos password: nacos # 配置文件格式 diff --git a/tongran-modules/tongran-system/src/main/java/com/tongran/system/config/TableScheduleConfig.java b/tongran-modules/tongran-system/src/main/java/com/tongran/system/config/TableScheduleConfig.java index f377e94..4a77dcf 100644 --- a/tongran-modules/tongran-system/src/main/java/com/tongran/system/config/TableScheduleConfig.java +++ b/tongran-modules/tongran-system/src/main/java/com/tongran/system/config/TableScheduleConfig.java @@ -58,6 +58,12 @@ public class TableScheduleConfig { // 每天0点执行 计算95带宽值/日 @Scheduled(cron = "0 4 0 * * ?", zone = "Asia/Shanghai") public void calculate95BandwidthDaily() { + // 获取当月的日期范围 + LocalDate lastMonth = LocalDate.now(ZoneId.of("Asia/Shanghai")); + LocalDate firstDayOfMonth = lastMonth.withDayOfMonth(1); + LocalDate lastDayOfMonth = lastMonth.withDayOfMonth(lastMonth.lengthOfMonth()); + String monthlyStartTime = firstDayOfMonth.atStartOfDay().format(TIME_FORMAT); + String monthlyEndTime = lastDayOfMonth.atTime(23, 59, 59).format(TIME_FORMAT); // 获取昨天的日期范围(北京时间) LocalDate yesterday = LocalDate.now(ZoneId.of("Asia/Shanghai")).minusDays(1); String dailyStartTime = yesterday.atStartOfDay().format(TIME_FORMAT); // 00:00:00 @@ -77,7 +83,11 @@ public class TableScheduleConfig { .thenRun(() -> executeWithLog("交换机带宽1000", () -> initialSwitchInfoDetailsService.calculateSwitch95BandwidthDaily(initialSwitchInfoDetails, dailyStartTime, dailyEndTime, "1000"))) .thenRun(() -> executeWithLog("交换机带宽1024", - () -> initialSwitchInfoDetailsService.calculateSwitch95BandwidthDaily(initialSwitchInfoDetails, dailyStartTime, dailyEndTime, "1024"))); + () -> initialSwitchInfoDetailsService.calculateSwitch95BandwidthDaily(initialSwitchInfoDetails, dailyStartTime, dailyEndTime, "1024"))) + .thenRun(() -> calculateSwitchMonthlyBandwidth(monthlyStartTime, monthlyEndTime, "1000")) + .thenRun(() -> calculateSwitchMonthlyBandwidth(monthlyStartTime, monthlyEndTime, "1024")) + .thenRun(() -> calculateSwitchAvgMonthlyBandwidth(monthlyStartTime, monthlyEndTime, "1000")) + .thenRun(() -> calculateSwitchAvgMonthlyBandwidth(monthlyStartTime, monthlyEndTime, "1024")); } // 每天5点04执行 计算金山95带宽值/日 @Scheduled(cron = "0 4 5 * * ?", zone = "Asia/Shanghai") diff --git a/tongran-modules/tongran-system/src/main/java/com/tongran/system/domain/RmResourceRegistration.java b/tongran-modules/tongran-system/src/main/java/com/tongran/system/domain/RmResourceRegistration.java index 39bbea3..81669ed 100644 --- a/tongran-modules/tongran-system/src/main/java/com/tongran/system/domain/RmResourceRegistration.java +++ b/tongran-modules/tongran-system/src/main/java/com/tongran/system/domain/RmResourceRegistration.java @@ -5,6 +5,7 @@ import com.tongran.common.core.annotation.Excel; import com.tongran.common.core.web.domain.BaseEntity; import lombok.Data; +import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.Map; @@ -224,4 +225,6 @@ public class RmResourceRegistration extends BaseEntity private boolean businessEmpty; /** 逻辑节点空标识 */ private boolean logicalNodeEmpty; + /** 昨日95值 */ + private BigDecimal bandwidthResult; } \ No newline at end of file diff --git a/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/impl/EpsNodeBandwidthServiceImpl.java b/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/impl/EpsNodeBandwidthServiceImpl.java index 99a4a72..a3f4faf 100644 --- a/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/impl/EpsNodeBandwidthServiceImpl.java +++ b/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/impl/EpsNodeBandwidthServiceImpl.java @@ -191,8 +191,6 @@ public class EpsNodeBandwidthServiceImpl implements IEpsNodeBandwidthService // 4. 安全获取求和值 BigDecimal sum95Daily = Optional.ofNullable(calculatedData.getBandwidth95Daily()).orElse(BigDecimal.ZERO); - BigDecimal sumEffectiveBandwidth95Daily = Optional.ofNullable(calculatedData.getEffectiveBandwidth95Daily()).orElse(BigDecimal.ZERO); - // 5. 计算当月天数 LocalDate monthTime; try { diff --git a/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/impl/RmResourceRegistrationServiceImpl.java b/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/impl/RmResourceRegistrationServiceImpl.java index 0b3dadf..c0a9da9 100644 --- a/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/impl/RmResourceRegistrationServiceImpl.java +++ b/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/impl/RmResourceRegistrationServiceImpl.java @@ -23,6 +23,8 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -68,6 +70,8 @@ public class RmResourceRegistrationServiceImpl implements IRmResourceRegistratio setNetWorkMsg(rmResourceRegistration); // set金山machineCode setMachineMsg(rmResourceRegistration); + // set昨日95值 + setBandwidthYestoday(rmResourceRegistration); } return rmResourceRegistration; } @@ -93,6 +97,8 @@ public class RmResourceRegistrationServiceImpl implements IRmResourceRegistratio if(resourceRegistration.getClientId() != null){ // 网卡信息 setNetWorkMsg(resourceRegistration); + // set昨日95值 + setBandwidthYestoday(resourceRegistration); } } if(rmResourceRegistration.getQueryParam() != null && !rmResourceRegistration.getQueryParam().trim().isEmpty()){ @@ -297,6 +303,21 @@ public class RmResourceRegistrationServiceImpl implements IRmResourceRegistratio registration.setMachineCode(machineMsg.getMachineCode()); } } + + public void setBandwidthYestoday(RmResourceRegistration registration){ + // 查询昨日95值 + String yesterday = LocalDate.now().minusDays(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));; + Date yesterdayDate = DateUtils.parseDate(yesterday); + EpsNodeBandwidth epsNodeBandwidth = new EpsNodeBandwidth(); + epsNodeBandwidth.setClientId(registration.getClientId()); + epsNodeBandwidth.setBandwidthType("1"); + epsNodeBandwidth.setCreateTime(yesterdayDate); + List nodeBandwidthList = epsNodeBandwidthMapper.selectEpsNodeBandwidthList(epsNodeBandwidth); + if(nodeBandwidthList != null && !nodeBandwidthList.isEmpty()){ + EpsNodeBandwidth nodeBandwidth = nodeBandwidthList.get(0); + registration.setBandwidthResult(nodeBandwidth.getBandwidthResult()); + } + } /** * 新增资源注册 * diff --git a/tongran-modules/tongran-system/src/main/resources/bootstrap.yml b/tongran-modules/tongran-system/src/main/resources/bootstrap.yml index d4eb062..00e429b 100644 --- a/tongran-modules/tongran-system/src/main/resources/bootstrap.yml +++ b/tongran-modules/tongran-system/src/main/resources/bootstrap.yml @@ -21,7 +21,7 @@ spring: # 配置中心地址 server-addr: 172.16.15.52:8848 # server-addr: 172.16.15.103:8848 - namespace: saas-local + namespace: saas-prod # namespace: public username: nacos password: nacos diff --git a/tongran-modules/tongran-system/src/main/resources/mapper/system/EpsNodeBandwidthMapper.xml b/tongran-modules/tongran-system/src/main/resources/mapper/system/EpsNodeBandwidthMapper.xml index 949d70a..194f6eb 100644 --- a/tongran-modules/tongran-system/src/main/resources/mapper/system/EpsNodeBandwidthMapper.xml +++ b/tongran-modules/tongran-system/src/main/resources/mapper/system/EpsNodeBandwidthMapper.xml @@ -230,8 +230,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"