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