优化告警日志
This commit is contained in:
@@ -891,6 +891,7 @@ public class MessageHandler {
|
|||||||
InitialHeartbeatListen heartbeat = heartbeats.get(0);
|
InitialHeartbeatListen heartbeat = heartbeats.get(0);
|
||||||
String clientId = message.getClientId();
|
String clientId = message.getClientId();
|
||||||
String version = heartbeat.getVersion();
|
String version = heartbeat.getVersion();
|
||||||
|
String name = heartbeat.getName();
|
||||||
log.debug("处理心跳消息,客户端ID: {}, 时间: {}", clientId, heartbeat.getTimestamp());
|
log.debug("处理心跳消息,客户端ID: {}, 时间: {}", clientId, heartbeat.getTimestamp());
|
||||||
|
|
||||||
// 使用Redis存储状态
|
// 使用Redis存储状态
|
||||||
@@ -1144,14 +1145,52 @@ public class MessageHandler {
|
|||||||
log.error("插入心跳日志失败", e);
|
log.error("插入心跳日志失败", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void insertAlarmRecords(String clientId){
|
|
||||||
|
/**
|
||||||
|
* 添加告警日志并推送消息到企业微信
|
||||||
|
* @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 rmAlarmLog = createAlarmLog(clientId, isSwitch, switchName);
|
||||||
|
|
||||||
|
// 插入告警日志
|
||||||
|
rmAlarmLogService.insertRmAlarmLog(rmAlarmLog);
|
||||||
|
|
||||||
|
// 发送告警推送
|
||||||
|
sendAlarmPush(rmAlarmLog, isSwitch);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建告警日志记录
|
||||||
|
*/
|
||||||
|
private RmAlarmLog createAlarmLog(String clientId, boolean isSwitch, String switchName) {
|
||||||
RmAlarmLog rmAlarmLog = new RmAlarmLog();
|
RmAlarmLog rmAlarmLog = new RmAlarmLog();
|
||||||
|
String alarmContent = clientId + "下线";
|
||||||
|
|
||||||
|
if (isSwitch) {
|
||||||
|
rmAlarmLog.setClientId(switchName);
|
||||||
|
rmAlarmLog.setAlarmType("2");
|
||||||
|
} else {
|
||||||
// 查询管理网公网ip
|
// 查询管理网公网ip
|
||||||
RmNetworkInterface rmNetworkInterface = new RmNetworkInterface();
|
RmNetworkInterface rmNetworkInterface = new RmNetworkInterface();
|
||||||
rmNetworkInterface.setClientId(clientId);
|
rmNetworkInterface.setClientId(clientId);
|
||||||
rmNetworkInterface.setNewFlag(1);
|
rmNetworkInterface.setNewFlag(1);
|
||||||
List<RmNetworkInterface> interfaceList = rmNetworkInterfaceService.selectRmNetworkInterfaceList(rmNetworkInterface);
|
List<RmNetworkInterface> interfaceList = rmNetworkInterfaceService.selectRmNetworkInterfaceList(rmNetworkInterface);
|
||||||
if(interfaceList != null && !interfaceList.isEmpty()){
|
if (interfaceList != null && !interfaceList.isEmpty()) {
|
||||||
interfaceList.stream()
|
interfaceList.stream()
|
||||||
.filter(info -> "2".equals(info.getBindIp()) || "3".equals(info.getBindIp()))
|
.filter(info -> "2".equals(info.getBindIp()) || "3".equals(info.getBindIp()))
|
||||||
.findFirst()
|
.findFirst()
|
||||||
@@ -1160,41 +1199,45 @@ public class MessageHandler {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
rmAlarmLog.setClientId(clientId);
|
rmAlarmLog.setClientId(clientId);
|
||||||
rmAlarmLog.setAlarmContent(clientId + "下线");
|
|
||||||
rmAlarmLog.setAlarmTime(DateUtils.getNowDate());
|
|
||||||
rmAlarmLog.setAlarmType("1");
|
rmAlarmLog.setAlarmType("1");
|
||||||
// 查询此告警是否存在
|
}
|
||||||
// RmAlarmLog query = new RmAlarmLog();
|
|
||||||
// query.setClientId(clientId);
|
rmAlarmLog.setAlarmContent(alarmContent);
|
||||||
// query.setAlarmType(AlarmTypeEnum.服务器下线.getCode());
|
rmAlarmLog.setAlarmTime(DateUtils.getNowDate());
|
||||||
// List<RmAlarmLog> alarmLog = rmAlarmLogService.selectRmAlarmLogList(query);
|
return rmAlarmLog;
|
||||||
// if(alarmLog != null && !alarmLog.isEmpty()){
|
}
|
||||||
// rmAlarmLogService.updateRmAlarmLog(rmAlarmLog);
|
|
||||||
// }
|
/**
|
||||||
rmAlarmLogService.insertRmAlarmLog(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 rmAlarmPushConfig = new RmAlarmPushConfig();
|
||||||
rmAlarmPushConfig.setPushMethod(PushMethodEnum.企业微信.getCode());
|
rmAlarmPushConfig.setPushMethod(PushMethodEnum.企业微信.getCode());
|
||||||
rmAlarmPushConfig.setPushAlarmTypes(AlarmTypeEnum.服务器下线.getCode());
|
rmAlarmPushConfig.setPushAlarmTypes(alarmTypeCode);
|
||||||
List<RmAlarmPushConfig> alarmConfigList = rmAlarmPushConfigService.selectRmAlarmPushConfigList(rmAlarmPushConfig);
|
List<RmAlarmPushConfig> alarmConfigList = rmAlarmPushConfigService.selectRmAlarmPushConfigList(rmAlarmPushConfig);
|
||||||
if(alarmConfigList != null && !alarmConfigList.isEmpty()){
|
|
||||||
|
if (alarmConfigList != null && !alarmConfigList.isEmpty()) {
|
||||||
for (RmAlarmPushConfig alarmPushConfig : alarmConfigList) {
|
for (RmAlarmPushConfig alarmPushConfig : alarmConfigList) {
|
||||||
String contentTemplate = alarmPushConfig.getMessageContent();
|
String contentTemplate = alarmPushConfig.getMessageContent();
|
||||||
String webhookUrl = alarmPushConfig.getPushAddress();
|
String webhookUrl = alarmPushConfig.getPushAddress();
|
||||||
String[] phones = alarmPushConfig.getContactPhones().split(",");
|
|
||||||
String content = rmAlarmLog.getAlarmContent();
|
|
||||||
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());
|
||||||
alarmMap.put("告警类型", AlarmTypeEnum.服务器下线.getMsg());
|
alarmMap.put("告警类型", alarmTypeMsg);
|
||||||
alarmMap.put("告警设备", rmAlarmLog.getClientId());
|
alarmMap.put("告警设备", rmAlarmLog.getClientId());
|
||||||
alarmMap.put("告警内容", content);
|
alarmMap.put("告警内容", rmAlarmLog.getAlarmContent());
|
||||||
// 推送消息到企业微信
|
|
||||||
WeChatWorkBot.sendTemplateMessage(webhookUrl, contentTemplate, alarmMap, content, phones, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
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 timestamp = rsp.getTimestamp();
|
||||||
long millis = timestamp * 1000;
|
long millis = timestamp * 1000;
|
||||||
Date createTime = new Date(millis / 1000 * 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.getResCode() == 1){
|
||||||
if(rsp.getResult() != null){
|
if(rsp.getResult() != null){
|
||||||
List<RspResultVo> resultVos = JsonDataParser.parseJsonData(rsp.getResult(), RspResultVo.class);
|
List<RspResultVo> resultVos = JsonDataParser.parseJsonData(rsp.getResult(), RspResultVo.class);
|
||||||
RspResultVo rspResultVo = resultVos.get(0);
|
RspResultVo rspResultVo = resultVos.get(0);
|
||||||
JSONObject jsonObject = JSONObject.parseObject(rsp.getResult());
|
JSONObject jsonObject = JSONObject.parseObject(rsp.getResult());
|
||||||
String resOut = jsonObject.getString("resOut");
|
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();
|
RmResourceRemote insertData = new RmResourceRemote();
|
||||||
insertData.setClientId(message.getClientId());
|
insertData.setClientId(message.getClientId());
|
||||||
|
|||||||
Reference in New Issue
Block a user