优化告警日志
This commit is contained in:
@@ -891,6 +891,7 @@ public class MessageHandler {
|
||||
InitialHeartbeatListen heartbeat = heartbeats.get(0);
|
||||
String clientId = message.getClientId();
|
||||
String version = heartbeat.getVersion();
|
||||
String name = heartbeat.getName();
|
||||
log.debug("处理心跳消息,客户端ID: {}, 时间: {}", clientId, heartbeat.getTimestamp());
|
||||
|
||||
// 使用Redis存储状态
|
||||
@@ -1144,57 +1145,99 @@ public class MessageHandler {
|
||||
log.error("插入心跳日志失败", e);
|
||||
}
|
||||
}
|
||||
private void insertAlarmRecords(String clientId){
|
||||
RmAlarmLog rmAlarmLog = new RmAlarmLog();
|
||||
// 查询管理网公网ip
|
||||
RmNetworkInterface rmNetworkInterface = new RmNetworkInterface();
|
||||
rmNetworkInterface.setClientId(clientId);
|
||||
rmNetworkInterface.setNewFlag(1);
|
||||
List<RmNetworkInterface> interfaceList = rmNetworkInterfaceService.selectRmNetworkInterfaceList(rmNetworkInterface);
|
||||
if(interfaceList != null && !interfaceList.isEmpty()){
|
||||
interfaceList.stream()
|
||||
.filter(info -> "2".equals(info.getBindIp()) || "3".equals(info.getBindIp()))
|
||||
.findFirst()
|
||||
.ifPresent(networkInterface -> {
|
||||
rmAlarmLog.setMgmPublicIp(networkInterface.getPublicIp());
|
||||
});
|
||||
|
||||
/**
|
||||
* 添加告警日志并推送消息到企业微信
|
||||
* @param clientId
|
||||
*/
|
||||
private void insertAlarmRecords(String clientId) {
|
||||
// 查询clientId是否为交换机唯一标识
|
||||
boolean isSwitch = false;
|
||||
String switchName = "";
|
||||
RmSwitchManagementRemote rmSwitchManagementRemote = new RmSwitchManagementRemote();
|
||||
rmSwitchManagementRemote.setClientId(clientId);
|
||||
R<List<RmSwitchManagementRemote>> rmSwitchManagementRemoteListR = remoteRevenueConfigService.getSwitchNameByClientId(rmSwitchManagementRemote, SecurityConstants.INNER);
|
||||
if (rmSwitchManagementRemoteListR != null &&
|
||||
rmSwitchManagementRemoteListR.getData() != null &&
|
||||
!rmSwitchManagementRemoteListR.getData().isEmpty()) {
|
||||
isSwitch = true;
|
||||
switchName = rmSwitchManagementRemoteListR.getData().get(0).getSwitchName();
|
||||
}
|
||||
rmAlarmLog.setClientId(clientId);
|
||||
rmAlarmLog.setAlarmContent(clientId + "下线");
|
||||
rmAlarmLog.setAlarmTime(DateUtils.getNowDate());
|
||||
rmAlarmLog.setAlarmType("1");
|
||||
// 查询此告警是否存在
|
||||
// RmAlarmLog query = new RmAlarmLog();
|
||||
// query.setClientId(clientId);
|
||||
// query.setAlarmType(AlarmTypeEnum.服务器下线.getCode());
|
||||
// List<RmAlarmLog> alarmLog = rmAlarmLogService.selectRmAlarmLogList(query);
|
||||
// if(alarmLog != null && !alarmLog.isEmpty()){
|
||||
// rmAlarmLogService.updateRmAlarmLog(rmAlarmLog);
|
||||
// }
|
||||
|
||||
// 创建告警日志记录
|
||||
RmAlarmLog rmAlarmLog = createAlarmLog(clientId, isSwitch, switchName);
|
||||
|
||||
// 插入告警日志
|
||||
rmAlarmLogService.insertRmAlarmLog(rmAlarmLog);
|
||||
|
||||
// 拿到消息模板
|
||||
// 发送告警推送
|
||||
sendAlarmPush(rmAlarmLog, isSwitch);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建告警日志记录
|
||||
*/
|
||||
private RmAlarmLog createAlarmLog(String clientId, boolean isSwitch, String switchName) {
|
||||
RmAlarmLog rmAlarmLog = new RmAlarmLog();
|
||||
String alarmContent = clientId + "下线";
|
||||
|
||||
if (isSwitch) {
|
||||
rmAlarmLog.setClientId(switchName);
|
||||
rmAlarmLog.setAlarmType("2");
|
||||
} else {
|
||||
// 查询管理网公网ip
|
||||
RmNetworkInterface rmNetworkInterface = new RmNetworkInterface();
|
||||
rmNetworkInterface.setClientId(clientId);
|
||||
rmNetworkInterface.setNewFlag(1);
|
||||
List<RmNetworkInterface> interfaceList = rmNetworkInterfaceService.selectRmNetworkInterfaceList(rmNetworkInterface);
|
||||
if (interfaceList != null && !interfaceList.isEmpty()) {
|
||||
interfaceList.stream()
|
||||
.filter(info -> "2".equals(info.getBindIp()) || "3".equals(info.getBindIp()))
|
||||
.findFirst()
|
||||
.ifPresent(networkInterface -> {
|
||||
rmAlarmLog.setMgmPublicIp(networkInterface.getPublicIp());
|
||||
});
|
||||
}
|
||||
rmAlarmLog.setClientId(clientId);
|
||||
rmAlarmLog.setAlarmType("1");
|
||||
}
|
||||
|
||||
rmAlarmLog.setAlarmContent(alarmContent);
|
||||
rmAlarmLog.setAlarmTime(DateUtils.getNowDate());
|
||||
return rmAlarmLog;
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送告警推送
|
||||
*/
|
||||
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(AlarmTypeEnum.服务器下线.getCode());
|
||||
rmAlarmPushConfig.setPushAlarmTypes(alarmTypeCode);
|
||||
List<RmAlarmPushConfig> alarmConfigList = rmAlarmPushConfigService.selectRmAlarmPushConfigList(rmAlarmPushConfig);
|
||||
if(alarmConfigList != null && !alarmConfigList.isEmpty()){
|
||||
|
||||
if (alarmConfigList != null && !alarmConfigList.isEmpty()) {
|
||||
for (RmAlarmPushConfig alarmPushConfig : alarmConfigList) {
|
||||
String contentTemplate = alarmPushConfig.getMessageContent();
|
||||
String webhookUrl = alarmPushConfig.getPushAddress();
|
||||
String[] phones = alarmPushConfig.getContactPhones().split(",");
|
||||
String content = rmAlarmLog.getAlarmContent();
|
||||
Map<String, Object> alarmMap = new HashMap<>();
|
||||
alarmMap.put("告警时间", rmAlarmLog.getAlarmTime());
|
||||
alarmMap.put("管理网-公网IP", rmAlarmLog.getMgmPublicIp());
|
||||
alarmMap.put("告警类型", AlarmTypeEnum.服务器下线.getMsg());
|
||||
alarmMap.put("告警类型", alarmTypeMsg);
|
||||
alarmMap.put("告警设备", rmAlarmLog.getClientId());
|
||||
alarmMap.put("告警内容", content);
|
||||
// 推送消息到企业微信
|
||||
WeChatWorkBot.sendTemplateMessage(webhookUrl, contentTemplate, alarmMap, content, phones, false);
|
||||
alarmMap.put("告警内容", rmAlarmLog.getAlarmContent());
|
||||
|
||||
if (alarmPushConfig.getContactPhones() != null) {
|
||||
String[] phones = alarmPushConfig.getContactPhones().split(",");
|
||||
WeChatWorkBot.sendTemplateMessage(webhookUrl, contentTemplate, alarmMap, rmAlarmLog.getAlarmContent(), phones, false);
|
||||
} else {
|
||||
WeChatWorkBot.sendTemplateMessage(webhookUrl, contentTemplate, alarmMap);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1222,19 +1265,17 @@ public class MessageHandler {
|
||||
long timestamp = rsp.getTimestamp();
|
||||
long millis = timestamp * 1000;
|
||||
Date createTime = new Date(millis / 1000 * 1000); // 去除毫秒
|
||||
// 查询资源信息
|
||||
RmResourceRegistrationRemote queryParam = new RmResourceRegistrationRemote();
|
||||
queryParam.setClientId(message.getClientId());
|
||||
R<RmResourceRegistrationRemote> resourceMsg = remoteRevenueConfigService.getListByHardwareSn(queryParam, SecurityConstants.INNER);
|
||||
RmResourceRegistrationRemote resourceMsgData = resourceMsg.getData();
|
||||
if(rsp.getResCode() == 1){
|
||||
if(rsp.getResult() != null){
|
||||
List<RspResultVo> resultVos = JsonDataParser.parseJsonData(rsp.getResult(), RspResultVo.class);
|
||||
RspResultVo rspResultVo = resultVos.get(0);
|
||||
JSONObject jsonObject = JSONObject.parseObject(rsp.getResult());
|
||||
String resOut = jsonObject.getString("resOut");
|
||||
// 查询执行的脚本id
|
||||
RmDeploymentPolicy deploymentPolicy = rmDeploymentPolicyService.selectRmDeploymentPolicyById(Long.valueOf(rspResultVo.getScriptId()));
|
||||
Long businessScriptId = deploymentPolicy.getScriptId();
|
||||
// 判断失败返回结果是否包含脚本执行失败关键字
|
||||
R<EpsBusinessScriptRemote> businessScriptMsgR = remoteRevenueConfigService.getBusinessScriptMsgByScriptId(Long.valueOf(rspResultVo.getScriptId()), SecurityConstants.AUTHORIZATION_HEADER);
|
||||
R<EpsBusinessScriptRemote> businessScriptMsgR = remoteRevenueConfigService.getBusinessScriptMsgByScriptId(businessScriptId, SecurityConstants.INNER);
|
||||
// 构建脚本执行结果实体类
|
||||
RmResourceRemote insertData = new RmResourceRemote();
|
||||
insertData.setClientId(message.getClientId());
|
||||
|
||||
Reference in New Issue
Block a user