优化ping丢包率告警

This commit is contained in:
gaoyutao
2026-03-12 18:04:43 +08:00
parent 03a77cc741
commit 268c0f319d
5 changed files with 56 additions and 16 deletions
@@ -1,8 +1,9 @@
package com.tongran.rocketmq.mapper; package com.tongran.rocketmq.mapper;
import java.util.List;
import com.tongran.rocketmq.domain.RmAlarmLog; import com.tongran.rocketmq.domain.RmAlarmLog;
import java.util.List;
/** /**
* 客户端告警信息Mapper接口 * 客户端告警信息Mapper接口
* *
@@ -58,4 +59,5 @@ public interface RmAlarmLogMapper
* @return 结果 * @return 结果
*/ */
public int deleteRmAlarmLogByIds(Long[] ids); public int deleteRmAlarmLogByIds(Long[] ids);
public int deleteAlarmLogByClientIdAndAlarmType(RmAlarmLog rmAlarmLog);
} }
@@ -1,5 +1,7 @@
package com.tongran.rocketmq.service.impl; package com.tongran.rocketmq.service.impl;
import com.tongran.common.core.constant.SecurityConstants;
import com.tongran.common.core.domain.R;
import com.tongran.common.core.utils.*; import com.tongran.common.core.utils.*;
import com.tongran.rocketmq.domain.*; import com.tongran.rocketmq.domain.*;
import com.tongran.rocketmq.enums.AlarmTypeEnum; import com.tongran.rocketmq.enums.AlarmTypeEnum;
@@ -7,9 +9,12 @@ import com.tongran.rocketmq.enums.ConditionItemEnum;
import com.tongran.rocketmq.mapper.*; import com.tongran.rocketmq.mapper.*;
import com.tongran.rocketmq.service.IInitialBandwidthTrafficService; import com.tongran.rocketmq.service.IInitialBandwidthTrafficService;
import com.tongran.rocketmq.service.IInitialDiskInfoService; import com.tongran.rocketmq.service.IInitialDiskInfoService;
import com.tongran.rocketmq.service.IRmAlarmLogService;
import com.tongran.rocketmq.service.IRmNetworkInterfaceService; import com.tongran.rocketmq.service.IRmNetworkInterfaceService;
import com.tongran.rocketmq.utils.SendAlarmPushUtil; import com.tongran.rocketmq.utils.SendAlarmPushUtil;
import com.tongran.rocketmq.utils.TableRouterUtil; import com.tongran.rocketmq.utils.TableRouterUtil;
import com.tongran.system.api.RemoteRevenueConfigService;
import com.tongran.system.api.domain.RmResourceRegistrationRemote;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -47,11 +52,13 @@ public class InitialBandwidthTrafficServiceImpl implements IInitialBandwidthTraf
@Autowired @Autowired
private RmAlarmThresholdMapper rmAlarmThresholdMapper; private RmAlarmThresholdMapper rmAlarmThresholdMapper;
@Autowired @Autowired
private RmAlarmLogMapper rmAlarmLogMapper; private IRmAlarmLogService rmAlarmLogService;
@Autowired @Autowired
private SendAlarmPushUtil sendAlarmPushUtil; private SendAlarmPushUtil sendAlarmPushUtil;
@Autowired @Autowired
private IRmNetworkInterfaceService rmNetworkInterfaceService; private IRmNetworkInterfaceService rmNetworkInterfaceService;
@Autowired
private RemoteRevenueConfigService remoteRevenueConfigService;
/** /**
* 查询初始带宽流量 * 查询初始带宽流量
@@ -240,12 +247,22 @@ public class InitialBandwidthTrafficServiceImpl implements IInitialBandwidthTraf
log.warn("未知的运算符: {}", operator); log.warn("未知的运算符: {}", operator);
} }
if (shouldAlarm) { if (shouldAlarm) {
// 查询服务器信息
RmResourceRegistrationRemote query = new RmResourceRegistrationRemote();
query.setClientId(clientId);
R<RmResourceRegistrationRemote> registerMsgR = remoteRevenueConfigService.getListByHardwareSn(query, SecurityConstants.INNER);
RmAlarmLog rmAlarmLog = new RmAlarmLog(); RmAlarmLog rmAlarmLog = new RmAlarmLog();
if(registerMsgR != null && registerMsgR.getData() != null){
RmResourceRegistrationRemote serverMsg = registerMsgR.getData();
rmAlarmLog.setMgmPublicIp(serverMsg.getIp1PublicIp());
rmAlarmLog.setBusinessName(serverMsg.getBusinessName());
rmAlarmLog.setRemark(serverMsg.getRemark());
}
rmAlarmLog.setAlarmType(AlarmTypeEnum.ping丢包率过高.getCode()); rmAlarmLog.setAlarmType(AlarmTypeEnum.ping丢包率过高.getCode());
rmAlarmLog.setClientId(clientId); rmAlarmLog.setClientId(clientId);
rmAlarmLog.setAlarmTime(DateUtils.getNowDate()); rmAlarmLog.setAlarmTime(DateUtils.getNowDate());
rmAlarmLog.setAlarmContent("丢包率:" + pingDropped); rmAlarmLog.setAlarmContent("丢包率:" + pingDropped);
rmAlarmLogMapper.insertRmAlarmLog(rmAlarmLog); rmAlarmLogService.insertRmAlarmLog(rmAlarmLog);
// 推送消息 // 推送消息
sendAlarmPushUtil.sendAlarmPush(rmAlarmLog, AlarmTypeEnum.ping丢包率过高.getMsg()); sendAlarmPushUtil.sendAlarmPush(rmAlarmLog, AlarmTypeEnum.ping丢包率过高.getMsg());
} }
@@ -1,12 +1,14 @@
package com.tongran.rocketmq.service.impl; package com.tongran.rocketmq.service.impl;
import java.util.List;
import com.tongran.common.core.utils.DateUtils; import com.tongran.common.core.utils.DateUtils;
import com.tongran.rocketmq.domain.RmAlarmLog;
import com.tongran.rocketmq.enums.AlarmTypeEnum;
import com.tongran.rocketmq.mapper.RmAlarmLogMapper;
import com.tongran.rocketmq.service.IRmAlarmLogService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.tongran.rocketmq.mapper.RmAlarmLogMapper;
import com.tongran.rocketmq.domain.RmAlarmLog; import java.util.List;
import com.tongran.rocketmq.service.IRmAlarmLogService;
/** /**
* 客户端告警信息Service业务层处理 * 客户端告警信息Service业务层处理
@@ -54,6 +56,18 @@ public class RmAlarmLogServiceImpl implements IRmAlarmLogService
public int insertRmAlarmLog(RmAlarmLog rmAlarmLog) public int insertRmAlarmLog(RmAlarmLog rmAlarmLog)
{ {
rmAlarmLog.setCreateTime(DateUtils.getNowDate()); rmAlarmLog.setCreateTime(DateUtils.getNowDate());
if(AlarmTypeEnum.ping丢包率过高.getCode().equals(rmAlarmLog.getAlarmType())){
if(rmAlarmLog.getClientId() != null){
// 查询是否已存在
RmAlarmLog query = new RmAlarmLog();
query.setClientId(rmAlarmLog.getClientId());
query.setAlarmType(rmAlarmLog.getAlarmType());
List<RmAlarmLog> rmAlarmLogList = rmAlarmLogMapper.selectRmAlarmLogList(query);
if(rmAlarmLogList != null && !rmAlarmLogList.isEmpty()){
rmAlarmLogMapper.deleteAlarmLogByClientIdAndAlarmType(query);
}
}
}
return rmAlarmLogMapper.insertRmAlarmLog(rmAlarmLog); return rmAlarmLogMapper.insertRmAlarmLog(rmAlarmLog);
} }
@@ -4,6 +4,7 @@ import com.tongran.common.core.constant.SecurityConstants;
import com.tongran.common.core.domain.R; import com.tongran.common.core.domain.R;
import com.tongran.rocketmq.domain.RmAlarmLog; import com.tongran.rocketmq.domain.RmAlarmLog;
import com.tongran.rocketmq.domain.RmAlarmPushConfig; import com.tongran.rocketmq.domain.RmAlarmPushConfig;
import com.tongran.rocketmq.enums.AlarmTypeEnum;
import com.tongran.rocketmq.enums.PushMethodEnum; import com.tongran.rocketmq.enums.PushMethodEnum;
import com.tongran.rocketmq.service.IRmAlarmLogService; import com.tongran.rocketmq.service.IRmAlarmLogService;
import com.tongran.rocketmq.service.IRmAlarmPushConfigService; import com.tongran.rocketmq.service.IRmAlarmPushConfigService;
@@ -44,6 +45,7 @@ public class SendAlarmPushUtil {
updateData.setId(rmAlarmLog.getId()); updateData.setId(rmAlarmLog.getId());
if (alarmConfigList != null && !alarmConfigList.isEmpty()) { if (alarmConfigList != null && !alarmConfigList.isEmpty()) {
try { try {
if(!AlarmTypeEnum.ping丢包率过高.getCode().equals(rmAlarmLog.getAlarmType())){
// 查询服务器信息 // 查询服务器信息
RmResourceRegistrationRemote query = new RmResourceRegistrationRemote(); RmResourceRegistrationRemote query = new RmResourceRegistrationRemote();
query.setClientId(clientId); query.setClientId(clientId);
@@ -54,6 +56,7 @@ public class SendAlarmPushUtil {
rmAlarmLog.setBusinessName(serverMsg.getBusinessName()); rmAlarmLog.setBusinessName(serverMsg.getBusinessName());
rmAlarmLog.setRemark(serverMsg.getRemark()); rmAlarmLog.setRemark(serverMsg.getRemark());
} }
}
Map<String, Object> alarmMap = new HashMap<>(); Map<String, Object> alarmMap = new HashMap<>();
alarmMap.put("告警时间", rmAlarmLog.getAlarmTime()); alarmMap.put("告警时间", rmAlarmLog.getAlarmTime());
alarmMap.put("IP", rmAlarmLog.getMgmPublicIp()); alarmMap.put("IP", rmAlarmLog.getMgmPublicIp());
@@ -105,4 +105,8 @@
#{id} #{id}
</foreach> </foreach>
</delete> </delete>
<delete id="deleteAlarmLogByClientIdAndAlarmType" parameterType="RmAlarmLog">
delete from rm_alarm_log where client_id =#{clientId} and alarm_type =#{alarmType}
</delete>
</mapper> </mapper>