diff --git a/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/domain/RmMtrClientRegistration.java b/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/domain/RmMtrClientRegistration.java index 09a5349..ac76d88 100644 --- a/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/domain/RmMtrClientRegistration.java +++ b/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/domain/RmMtrClientRegistration.java @@ -43,11 +43,11 @@ public class RmMtrClientRegistration extends BaseEntity private Date registerTime; /** 注册状态(0-未注册,1-已注册) */ - @Excel(name = "注册状态(0-未注册,1-已注册)") + @Excel(name = "注册状态", readConverterExp = "0=未注册,1=已注册") private String registerStatus; /** 在线状态(0-离线,1-在线) */ - @Excel(name = "在线状态(0-离线,1-在线)") + @Excel(name = "在线状态", readConverterExp = "0=离线,1=在线") private String onlineStatus; /** 心跳时间间隔(秒) */ @@ -59,11 +59,11 @@ public class RmMtrClientRegistration extends BaseEntity private Integer heartbeatCount; /** 更新方式 */ - @Excel(name = "更新方式") + @Excel(name = "更新方式", readConverterExp = "0=立即执行,1=定时执行") private String method; /** 定时更新时间 */ - @Excel(name = "定时更新时间") + @Excel(name = "定时更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date scheduledUpdateTime; @@ -85,7 +85,7 @@ public class RmMtrClientRegistration extends BaseEntity private Date lastUpdateTime; /** 网卡信息(JSON格式) */ - @Excel(name = "网卡信息(JSON格式)") + @Excel(name = "网卡信息") private String networkInfo; /** 部署设备 */ private String mtrClientIds; diff --git a/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/domain/RmMtrPolicyConfig.java b/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/domain/RmMtrPolicyConfig.java index a45d270..62a87fb 100644 --- a/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/domain/RmMtrPolicyConfig.java +++ b/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/domain/RmMtrPolicyConfig.java @@ -36,13 +36,14 @@ public class RmMtrPolicyConfig extends BaseEntity private String mtrClientId; /** 服务器集合(换行符分割) */ - @Excel(name = "服务器集合(换行符分割)") + @Excel(name = "服务器集合") private String serverGroup; /** 探测目标ip集合 */ + @Excel(name = "目标ip集合") private String serveripGroup; /** 是否探测(0-否,1-是) */ - @Excel(name = "是否探测(0-否,1-是)") + @Excel(name = "是否探测", readConverterExp = "0=否,1=是") private Long probeFlag; /** 开始时间 */ @@ -62,4 +63,8 @@ public class RmMtrPolicyConfig extends BaseEntity private Map> clientIdToIpsMap; /** 查询条件 */ private String queryName; + @Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date createTime; } diff --git a/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/domain/vo/HopInfoVO.java b/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/domain/vo/HopInfoVO.java new file mode 100644 index 0000000..d35ab09 --- /dev/null +++ b/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/domain/vo/HopInfoVO.java @@ -0,0 +1,16 @@ +package com.tongran.mtragent.domain.vo; + +import lombok.Data; + +@Data +public class HopInfoVO { + private int hopNumber; // 跳数 + private String ipAddress; // IP地址 + private String hostname; // 主机名(如果有) + private double lossPercent; // 丢包率 + private double avgLatency; // 平均延迟(ms) + private String country; // 国家 + private String province; // 省份 + private String city; // 城市 + private String isp; // 运营商 +} diff --git a/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/domain/vo/MtrResultVo.java b/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/domain/vo/MtrResultVo.java index 45e6737..c8b2a48 100644 --- a/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/domain/vo/MtrResultVo.java +++ b/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/domain/vo/MtrResultVo.java @@ -2,6 +2,8 @@ package com.tongran.mtragent.domain.vo; import lombok.Data; +import java.util.List; + @Data public class MtrResultVo { private String targetIp; // 目标IP @@ -12,5 +14,6 @@ public class MtrResultVo { private long timestamp; // 探测时间戳 private boolean hasRetry; // 是否重试 private String errorMsg; // 错误信息 + private List hopInfos; // 每跳路由信息列表 } 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 26138cb..a759794 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 @@ -259,7 +259,7 @@ public class MessageHandler { JSONObject.toJSONString(message) ); int size = message.getData().getBytes(StandardCharsets.UTF_8).length; - log.info("消息大小: {} 字节, {} KB", size, size/1024.0); + log.debug("消息大小: {} 字节, {} KB", size, size/1024.0); } catch (Exception e) { log.error("发送mtr策略失败,mtrClientId: {}", mtrClientId, e); } diff --git a/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/mapper/RmMtrPolicyConfigMapper.java b/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/mapper/RmMtrPolicyConfigMapper.java index b0093f6..0a4b164 100644 --- a/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/mapper/RmMtrPolicyConfigMapper.java +++ b/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/mapper/RmMtrPolicyConfigMapper.java @@ -1,8 +1,9 @@ package com.tongran.mtragent.mapper; -import java.util.List; import com.tongran.mtragent.domain.RmMtrPolicyConfig; +import java.util.List; + /** * mtr探测策略配置Mapper接口 * @@ -58,4 +59,11 @@ public interface RmMtrPolicyConfigMapper * @return 结果 */ public int deleteRmMtrPolicyConfigByIds(Long[] ids); + + /** + * 查询服务器是否在线 + * @param serverIds + * @return + */ + List getOnlineServerId(List serverIds); } 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 56cb1e0..5a18bbc 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 @@ -290,6 +290,12 @@ public class RmMtrPolicyConfigServiceImpl implements IRmMtrPolicyConfigService serverIds.add(id.trim()); } } + // 如果列表为空,直接返回空列表,避免不必要的数据库查询 + if (serverIds.isEmpty()) { + return serverIds; + } + // 过滤离线的服务器 + serverIds = rmMtrPolicyConfigMapper.getOnlineServerId(serverIds); } return serverIds; } diff --git a/tongran-modules/tongran-mtragent/src/main/resources/mapper/mtragent/RmMtrPolicyConfigMapper.xml b/tongran-modules/tongran-mtragent/src/main/resources/mapper/mtragent/RmMtrPolicyConfigMapper.xml index 422298e..10e698b 100644 --- a/tongran-modules/tongran-mtragent/src/main/resources/mapper/mtragent/RmMtrPolicyConfigMapper.xml +++ b/tongran-modules/tongran-mtragent/src/main/resources/mapper/mtragent/RmMtrPolicyConfigMapper.xml @@ -41,6 +41,7 @@ or mtr_client_id like concat('%', #{queryName}, '%') or server_group like concat('%', #{queryName}, '%') ) + order by create_time desc + SELECT client_id FROM rm_resource_registration + WHERE client_id IN + + #{item} + + AND online_status = 1 + \ No newline at end of file diff --git a/tongran-rocketmq/src/main/java/com/tongran/rocketmq/handler/MessageHandler.java b/tongran-rocketmq/src/main/java/com/tongran/rocketmq/handler/MessageHandler.java index ecfe5aa..cf3025c 100644 --- a/tongran-rocketmq/src/main/java/com/tongran/rocketmq/handler/MessageHandler.java +++ b/tongran-rocketmq/src/main/java/com/tongran/rocketmq/handler/MessageHandler.java @@ -957,7 +957,7 @@ public class MessageHandler { // 只有达到3次心跳才执行数据库操作 if (newHeartbeatCount >= 3) { - log.info("客户端ID: {} 达到{}次心跳,开始执行数据库操作", clientId, newHeartbeatCount); + log.debug("客户端ID: {} 达到{}次心跳,开始执行数据库操作", clientId, newHeartbeatCount); // 添加逻辑节点标识 RmResourceRegistrationRemote updateData = new RmResourceRegistrationRemote(); @@ -1202,6 +1202,12 @@ public class MessageHandler { RmResourceRegistrationRemote query = new RmResourceRegistrationRemote(); query.setClientId(clientId); R registrationR = remoteRevenueConfigService.getListByHardwareSn(query, SecurityConstants.INNER); + if(registrationR != null){ + RmResourceRegistrationRemote registrationMsg = registrationR.getData(); + if(registrationMsg != null){ + rmAlarmLog.setBusinessName(registrationMsg.getBusinessName()); + } + } rmAlarmLog.setClientId(clientId); rmAlarmLog.setAlarmType("1"); } @@ -1222,26 +1228,37 @@ public class MessageHandler { rmAlarmPushConfig.setPushMethod(PushMethodEnum.企业微信.getCode()); rmAlarmPushConfig.setPushAlarmTypes(alarmTypeCode); List alarmConfigList = rmAlarmPushConfigService.selectRmAlarmPushConfigList(rmAlarmPushConfig); - + RmAlarmLog updateData = new RmAlarmLog(); + updateData.setId(rmAlarmLog.getId()); if (alarmConfigList != null && !alarmConfigList.isEmpty()) { - for (RmAlarmPushConfig alarmPushConfig : alarmConfigList) { - String contentTemplate = alarmPushConfig.getMessageContent(); - String webhookUrl = alarmPushConfig.getPushAddress(); - Map alarmMap = new HashMap<>(); - alarmMap.put("告警时间", rmAlarmLog.getAlarmTime()); - alarmMap.put("管理网-公网IP", rmAlarmLog.getMgmPublicIp()); - alarmMap.put("告警类型", alarmTypeMsg); - alarmMap.put("告警设备", rmAlarmLog.getClientId()); - alarmMap.put("告警内容", rmAlarmLog.getAlarmContent()); + try { + for (RmAlarmPushConfig alarmPushConfig : alarmConfigList) { + String contentTemplate = alarmPushConfig.getMessageContent(); + String webhookUrl = alarmPushConfig.getPushAddress(); + Map alarmMap = new HashMap<>(); + alarmMap.put("告警时间", rmAlarmLog.getAlarmTime()); + alarmMap.put("IP", rmAlarmLog.getMgmPublicIp()); + alarmMap.put("告警类型", alarmTypeMsg); + alarmMap.put("告警设备", rmAlarmLog.getClientId()); + alarmMap.put("告警内容", rmAlarmLog.getAlarmContent()); + alarmMap.put("业务名称", rmAlarmLog.getBusinessName()); - if (alarmPushConfig.getContactPhones() != null) { - String[] phones = alarmPushConfig.getContactPhones().split(","); - WeChatWorkBot.sendTemplateMessage(webhookUrl, contentTemplate, alarmMap, rmAlarmLog.getAlarmContent(), phones, false); - } else { - WeChatWorkBot.sendTemplateMessage(webhookUrl, contentTemplate, alarmMap); + if (alarmPushConfig.getContactPhones() != null) { + String[] phones = alarmPushConfig.getContactPhones().split(","); + WeChatWorkBot.sendTemplateMessage(webhookUrl, contentTemplate, alarmMap, rmAlarmLog.getAlarmContent(), phones, false); + } else { + WeChatWorkBot.sendTemplateMessage(webhookUrl, contentTemplate, alarmMap); + } } + updateData.setPushFlag(1L); + } catch (Exception e){ + updateData.setPushFlag(0L); + log.error("消息推送失败:{}", e.getMessage()); } + }else{ + updateData.setPushFlag(2L); } + rmAlarmLogService.updateRmAlarmLog(updateData); } /**