From 589c80fa6fad03f8e63f0905c3637b234359fe69 Mon Sep 17 00:00:00 2001 From: gaoyutao Date: Tue, 27 Jan 2026 19:08:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8C=82=E8=BD=BD=E7=82=B9=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=B7=B2=E7=94=A8=E5=AD=98=E5=82=A8=E7=A9=BA?= =?UTF-8?q?=E9=97=B4=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rocketmq/handler/MessageHandler.java | 43 +-------- .../impl/InitialCpuInfoServiceImpl.java | 87 ++++++++++--------- .../InitialMountPointInfoServiceImpl.java | 8 ++ .../rocketmq/utils/SendAlarmPushUtil.java | 5 +- 4 files changed, 60 insertions(+), 83 deletions(-) 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 6e15ca2..3a17e2a 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 @@ -12,14 +12,12 @@ import com.tongran.common.security.utils.SecurityUtils; import com.tongran.rocketmq.domain.*; import com.tongran.rocketmq.domain.vo.*; import com.tongran.rocketmq.enums.AlarmTypeEnum; -import com.tongran.rocketmq.enums.PushMethodEnum; import com.tongran.rocketmq.model.ProducerMode; import com.tongran.rocketmq.producer.MessageProducer; import com.tongran.rocketmq.service.*; import com.tongran.rocketmq.utils.DataProcessUtil; import com.tongran.rocketmq.utils.JsonDataParser; import com.tongran.rocketmq.utils.SendAlarmPushUtil; -import com.tongran.rocketmq.utils.WeChatWorkBot; import com.tongran.system.api.RemoteRevenueConfigService; import com.tongran.system.api.domain.*; import lombok.extern.slf4j.Slf4j; @@ -977,7 +975,7 @@ public class MessageHandler { disk.setClientId(clientId); disk.setCreateTime(createTime); }); -// // 关键:每个clientId有自己独立的key + // 关键:每个clientId有自己独立的key // String diskCountKey = DISK_COUNT_PREFIX + clientId; // // // 1. 给这个客户端的所有磁盘次数+1 @@ -1032,7 +1030,7 @@ public class MessageHandler { // rmAlarmLog.setAlarmType(AlarmTypeEnum.磁盘缺失.getCode()); // rmAlarmLog.setAlarmContent("服务器" + clientId + "磁盘缺失,磁盘名称:" + diskName); // rmAlarmLogService.insertRmAlarmLog(rmAlarmLog); -// sendAlarmPushUtil.sendAlarmPush(rmAlarmLog); +// sendAlarmPushUtil.sendAlarmPush(rmAlarmLog, AlarmTypeEnum.磁盘缺失.getMsg()); // // } // } catch (NumberFormatException e) { @@ -1501,41 +1499,8 @@ public class MessageHandler { private void sendAlarmPush(RmAlarmLog rmAlarmLog, boolean isSwitch) { String alarmTypeCode = isSwitch ? AlarmTypeEnum.交换机下线.getCode() : AlarmTypeEnum.服务器下线.getCode(); String alarmTypeMsg = isSwitch ? AlarmTypeEnum.交换机下线.getMsg() : AlarmTypeEnum.服务器下线.getMsg(); - - RmAlarmPushConfig rmAlarmPushConfig = new RmAlarmPushConfig(); - 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()) { - try { - 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()); - for (RmAlarmPushConfig alarmPushConfig : alarmConfigList) { - String contentTemplate = alarmPushConfig.getMessageContent(); - String webhookUrl = alarmPushConfig.getPushAddress(); - 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); + rmAlarmLog.setAlarmType(alarmTypeCode); + sendAlarmPushUtil.sendAlarmPush(rmAlarmLog, alarmTypeMsg); } /** diff --git a/tongran-rocketmq/src/main/java/com/tongran/rocketmq/service/impl/InitialCpuInfoServiceImpl.java b/tongran-rocketmq/src/main/java/com/tongran/rocketmq/service/impl/InitialCpuInfoServiceImpl.java index 6aadca7..b5f8dc9 100644 --- a/tongran-rocketmq/src/main/java/com/tongran/rocketmq/service/impl/InitialCpuInfoServiceImpl.java +++ b/tongran-rocketmq/src/main/java/com/tongran/rocketmq/service/impl/InitialCpuInfoServiceImpl.java @@ -3,6 +3,10 @@ package com.tongran.rocketmq.service.impl; import com.tongran.common.core.utils.DateUtils; import com.tongran.common.core.utils.EchartsDataUtils; import com.tongran.rocketmq.domain.InitialCpuInfo; +import com.tongran.rocketmq.domain.RmAlarmLog; +import com.tongran.rocketmq.domain.RmAlarmThreshold; +import com.tongran.rocketmq.enums.AlarmTypeEnum; +import com.tongran.rocketmq.enums.ConditionItemEnum; import com.tongran.rocketmq.mapper.InitialCpuInfoMapper; import com.tongran.rocketmq.mapper.RmAlarmLogMapper; import com.tongran.rocketmq.mapper.RmAlarmThresholdMapper; @@ -14,6 +18,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -126,47 +131,47 @@ public class InitialCpuInfoServiceImpl implements IInitialCpuInfoService public int batchInsertInitialCpuInfo(List list) { try { // 查询告警阈值 -// RmAlarmThreshold thresholdQuery = new RmAlarmThreshold(); -// thresholdQuery.setAlarmType(AlarmTypeEnum.CPU使用率高.getCode()); -// thresholdQuery.setConditionItem(ConditionItemEnum.服务器CPU使用率.getCode()); -// List rmAlarmThresholdList = rmAlarmThresholdMapper.selectRmAlarmThresholdList(thresholdQuery); -// if(rmAlarmThresholdList != null && !rmAlarmThresholdList.isEmpty()){ -// String operator = rmAlarmThresholdList.get(0).getCompareOperator(); -// BigDecimal threshold = rmAlarmThresholdList.get(0).getThresholdValue(); -// for (InitialCpuInfo initialCpuInfo : list) { -// BigDecimal cpuUti = new BigDecimal(initialCpuInfo.getUti()); -// if(operator != null){ -// // 根据运算符1大于,2小于,3等于 判断是否进行告警 -// boolean shouldAlarm = false; -// -// // 根据运算符判断是否进行告警 -// switch (operator) { -// case "1": // 大于 -// shouldAlarm = cpuUti.compareTo(threshold) > 0; -// break; -// case "2": // 小于 -// shouldAlarm = cpuUti.compareTo(threshold) < 0; -// break; -// case "3": // 等于 -// shouldAlarm = cpuUti.compareTo(threshold) == 0; -// break; -// default: -// log.warn("未知的运算符: {}", operator); -// continue; // 跳过未知运算符的处理 -// } -// if(shouldAlarm){ -// RmAlarmLog rmAlarmLog = new RmAlarmLog(); -// rmAlarmLog.setAlarmType(AlarmTypeEnum.CPU使用率高.getCode()); -// rmAlarmLog.setClientId(initialCpuInfo.getClientId()); -// rmAlarmLog.setAlarmTime(DateUtils.getNowDate()); -// rmAlarmLog.setAlarmContent("服务器" + initialCpuInfo.getClientId() + "的CPU使用率高"); -// rmAlarmLogMapper.insertRmAlarmLog(rmAlarmLog); -// // 推送消息 -// sendAlarmPushUtil.sendAlarmPush(rmAlarmLog); -// } -// } -// } -// } + RmAlarmThreshold thresholdQuery = new RmAlarmThreshold(); + thresholdQuery.setAlarmType(AlarmTypeEnum.CPU使用率高.getCode()); + thresholdQuery.setConditionItem(ConditionItemEnum.服务器CPU使用率.getCode()); + List rmAlarmThresholdList = rmAlarmThresholdMapper.selectRmAlarmThresholdList(thresholdQuery); + if(rmAlarmThresholdList != null && !rmAlarmThresholdList.isEmpty()){ + String operator = rmAlarmThresholdList.get(0).getCompareOperator(); + BigDecimal threshold = rmAlarmThresholdList.get(0).getThresholdValue(); + for (InitialCpuInfo initialCpuInfo : list) { + BigDecimal cpuUti = new BigDecimal(initialCpuInfo.getUti()); + if(operator != null){ + // 根据运算符1大于,2小于,3等于 判断是否进行告警 + boolean shouldAlarm = false; + + // 根据运算符判断是否进行告警 + switch (operator) { + case "1": // 大于 + shouldAlarm = cpuUti.compareTo(threshold) > 0; + break; + case "2": // 小于 + shouldAlarm = cpuUti.compareTo(threshold) < 0; + break; + case "3": // 等于 + shouldAlarm = cpuUti.compareTo(threshold) == 0; + break; + default: + log.warn("未知的运算符: {}", operator); + continue; // 跳过未知运算符的处理 + } + if(shouldAlarm){ + RmAlarmLog rmAlarmLog = new RmAlarmLog(); + rmAlarmLog.setAlarmType(AlarmTypeEnum.CPU使用率高.getCode()); + rmAlarmLog.setClientId(initialCpuInfo.getClientId()); + rmAlarmLog.setAlarmTime(DateUtils.getNowDate()); + rmAlarmLog.setAlarmContent("服务器" + initialCpuInfo.getClientId() + "的CPU使用率高"); + rmAlarmLogMapper.insertRmAlarmLog(rmAlarmLog); + // 推送消息 + sendAlarmPushUtil.sendAlarmPush(rmAlarmLog, AlarmTypeEnum.CPU使用率高.getMsg()); + } + } + } + } return initialCpuInfoMapper.batchInsertInitialCpuInfo(list); }catch (Exception e){ log.error("批量插入CPU信息失败,失败数量:{}", list.size(), e); diff --git a/tongran-rocketmq/src/main/java/com/tongran/rocketmq/service/impl/InitialMountPointInfoServiceImpl.java b/tongran-rocketmq/src/main/java/com/tongran/rocketmq/service/impl/InitialMountPointInfoServiceImpl.java index d152753..97129d7 100644 --- a/tongran-rocketmq/src/main/java/com/tongran/rocketmq/service/impl/InitialMountPointInfoServiceImpl.java +++ b/tongran-rocketmq/src/main/java/com/tongran/rocketmq/service/impl/InitialMountPointInfoServiceImpl.java @@ -149,6 +149,14 @@ public class InitialMountPointInfoServiceImpl implements IInitialMountPointInfoS List list = initialMountPointInfoMapper.selectInitialMountPointInfoList(initialMountPointInfo); Map> extractors = new LinkedHashMap<>(); extractors.put("vfsUtilData", InitialMountPointInfo::getVfsUtil); + extractors.put("usedData", info -> { + Long total = info.getVfsTotal(); + Long free = info.getVfsFree(); + if (total == null || free == null) { + return UnitChangeUtil.convertUnitByValue(0L); + } + return UnitChangeUtil.convertUnitByValue(total - free); + }); return EchartsDataUtils.buildEchartsDataAutoPadding(list,InitialMountPointInfo::getCreateTime, extractors, initialMountPointInfo.getStartTime(), initialMountPointInfo.getEndTime()); } diff --git a/tongran-rocketmq/src/main/java/com/tongran/rocketmq/utils/SendAlarmPushUtil.java b/tongran-rocketmq/src/main/java/com/tongran/rocketmq/utils/SendAlarmPushUtil.java index e692974..0c01cf8 100644 --- a/tongran-rocketmq/src/main/java/com/tongran/rocketmq/utils/SendAlarmPushUtil.java +++ b/tongran-rocketmq/src/main/java/com/tongran/rocketmq/utils/SendAlarmPushUtil.java @@ -3,7 +3,6 @@ package com.tongran.rocketmq.utils; import com.tongran.rocketmq.domain.RmAlarmLog; import com.tongran.rocketmq.domain.RmAlarmPushConfig; import com.tongran.rocketmq.domain.RmNetworkInterface; -import com.tongran.rocketmq.enums.AlarmTypeEnum; import com.tongran.rocketmq.enums.PushMethodEnum; import com.tongran.rocketmq.service.IRmAlarmLogService; import com.tongran.rocketmq.service.IRmAlarmPushConfigService; @@ -33,7 +32,7 @@ public class SendAlarmPushUtil { * 发送告警推送 * @param rmAlarmLog 告警日志参数 */ - public void sendAlarmPush(RmAlarmLog rmAlarmLog) { + public void sendAlarmPush(RmAlarmLog rmAlarmLog, String alarmTypeMsg) { String clientId = rmAlarmLog.getClientId(); RmAlarmPushConfig rmAlarmPushConfig = new RmAlarmPushConfig(); @@ -59,7 +58,7 @@ public class SendAlarmPushUtil { Map alarmMap = new HashMap<>(); alarmMap.put("告警时间", rmAlarmLog.getAlarmTime()); alarmMap.put("IP", rmAlarmLog.getMgmPublicIp()); - alarmMap.put("告警类型", AlarmTypeEnum.CPU使用率高.getMsg()); + alarmMap.put("告警类型", alarmTypeMsg); alarmMap.put("告警设备", clientId.substring(clientId.length() - 8)); alarmMap.put("告警内容", rmAlarmLog.getAlarmContent()); for (RmAlarmPushConfig alarmPushConfig : alarmConfigList) {