1、修复虚拟网卡收益计算、流量图默认单位不正确问题。
2、联调告警阈值配置接口。 3、优化挂载点数据展示。
This commit is contained in:
@@ -948,7 +948,7 @@ public class MessageHandler {
|
||||
cpus.forEach(iface -> {
|
||||
iface.setClientId(message.getClientId());
|
||||
iface.setCreateTime(createTime);
|
||||
if(iface.getTemperature() == 0L){
|
||||
if(iface.getTemperature() != null && iface.getTemperature() == 0L){
|
||||
iface.setTemperature(null);
|
||||
}
|
||||
});
|
||||
@@ -973,74 +973,77 @@ public class MessageHandler {
|
||||
long timestamp = disks.get(0).getTimestamp();
|
||||
long millis = timestamp * 1000;
|
||||
Date createTime = new Date(millis / 1000 * 1000);
|
||||
|
||||
// 关键:每个clientId有自己独立的key
|
||||
String diskCountKey = DISK_COUNT_PREFIX + clientId;
|
||||
|
||||
// 1. 给这个客户端的所有磁盘次数+1
|
||||
Map<Object, Object> diskCountMap = redisTemplate.opsForHash().entries(diskCountKey);
|
||||
for (Map.Entry<Object, Object> entry : diskCountMap.entrySet()) {
|
||||
String diskName = (String) entry.getKey();
|
||||
String countStr = (String) entry.getValue();
|
||||
|
||||
try {
|
||||
int count = Integer.parseInt(countStr) + 1;
|
||||
redisTemplate.opsForHash().put(diskCountKey, diskName, String.valueOf(count));
|
||||
} catch (NumberFormatException e) {
|
||||
redisTemplate.opsForHash().put(diskCountKey, diskName, "1");
|
||||
}
|
||||
}
|
||||
|
||||
// 2. 处理本次上报的磁盘
|
||||
Set<String> reportedDisks = new HashSet<>();
|
||||
disks.forEach(disk -> {
|
||||
String diskName = disk.getName();
|
||||
reportedDisks.add(diskName);
|
||||
|
||||
// 本次上报的磁盘,次数重置为0
|
||||
redisTemplate.opsForHash().put(diskCountKey, diskName, "0");
|
||||
|
||||
disk.setClientId(clientId);
|
||||
disk.setCreateTime(createTime);
|
||||
});
|
||||
|
||||
// 3. 检查次数≥3的磁盘
|
||||
diskCountMap = redisTemplate.opsForHash().entries(diskCountKey);
|
||||
List<String> disksToRemove = new ArrayList<>();
|
||||
|
||||
for (Map.Entry<Object, Object> entry : diskCountMap.entrySet()) {
|
||||
String diskName = (String) entry.getKey();
|
||||
String countStr = (String) entry.getValue();
|
||||
|
||||
try {
|
||||
int count = Integer.parseInt(countStr);
|
||||
// 如果次数≥3且本次没上报
|
||||
if (count >= 3 && !reportedDisks.contains(diskName)) {
|
||||
AllDiskName allDiskName = new AllDiskName();
|
||||
allDiskName.setStatus(0);
|
||||
allDiskName.setClientId(clientId);
|
||||
allDiskName.setName(diskName);
|
||||
allDiskNameService.updateAllDiskName(allDiskName);
|
||||
disksToRemove.add(diskName);
|
||||
// 磁盘缺失,触发告警
|
||||
RmAlarmLog rmAlarmLog = new RmAlarmLog();
|
||||
rmAlarmLog.setClientId(clientId);
|
||||
rmAlarmLog.setAlarmTime(DateUtils.getNowDate());
|
||||
rmAlarmLog.setAlarmType(AlarmTypeEnum.磁盘缺失.getCode());
|
||||
rmAlarmLog.setAlarmContent("服务器" + clientId + "磁盘缺失,磁盘名称:" + diskName);
|
||||
rmAlarmLogService.insertRmAlarmLog(rmAlarmLog);
|
||||
sendAlarmPushUtil.sendAlarmPush(rmAlarmLog);
|
||||
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
disksToRemove.add(diskName);
|
||||
}
|
||||
}
|
||||
|
||||
// 4. 删除已处理的磁盘记录
|
||||
if (!disksToRemove.isEmpty()) {
|
||||
redisTemplate.opsForHash().delete(diskCountKey, disksToRemove.toArray());
|
||||
}
|
||||
// // 关键:每个clientId有自己独立的key
|
||||
// String diskCountKey = DISK_COUNT_PREFIX + clientId;
|
||||
//
|
||||
// // 1. 给这个客户端的所有磁盘次数+1
|
||||
// Map<Object, Object> diskCountMap = redisTemplate.opsForHash().entries(diskCountKey);
|
||||
// for (Map.Entry<Object, Object> entry : diskCountMap.entrySet()) {
|
||||
// String diskName = (String) entry.getKey();
|
||||
// String countStr = (String) entry.getValue();
|
||||
//
|
||||
// try {
|
||||
// int count = Integer.parseInt(countStr) + 1;
|
||||
// redisTemplate.opsForHash().put(diskCountKey, diskName, String.valueOf(count));
|
||||
// } catch (NumberFormatException e) {
|
||||
// redisTemplate.opsForHash().put(diskCountKey, diskName, "1");
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// // 2. 处理本次上报的磁盘
|
||||
// Set<String> reportedDisks = new HashSet<>();
|
||||
// disks.forEach(disk -> {
|
||||
// String diskName = disk.getName();
|
||||
// reportedDisks.add(diskName);
|
||||
//
|
||||
// // 本次上报的磁盘,次数重置为0
|
||||
// redisTemplate.opsForHash().put(diskCountKey, diskName, "0");
|
||||
//
|
||||
// disk.setClientId(clientId);
|
||||
// disk.setCreateTime(createTime);
|
||||
// });
|
||||
//
|
||||
// // 3. 检查次数≥3的磁盘
|
||||
// diskCountMap = redisTemplate.opsForHash().entries(diskCountKey);
|
||||
// List<String> disksToRemove = new ArrayList<>();
|
||||
//
|
||||
// for (Map.Entry<Object, Object> entry : diskCountMap.entrySet()) {
|
||||
// String diskName = (String) entry.getKey();
|
||||
// String countStr = (String) entry.getValue();
|
||||
//
|
||||
// try {
|
||||
// int count = Integer.parseInt(countStr);
|
||||
// // 如果次数≥3且本次没上报
|
||||
// if (count >= 3 && !reportedDisks.contains(diskName)) {
|
||||
// AllDiskName allDiskName = new AllDiskName();
|
||||
// allDiskName.setStatus(0);
|
||||
// allDiskName.setClientId(clientId);
|
||||
// allDiskName.setName(diskName);
|
||||
// allDiskNameService.updateAllDiskName(allDiskName);
|
||||
// disksToRemove.add(diskName);
|
||||
// // 磁盘缺失,触发告警
|
||||
// RmAlarmLog rmAlarmLog = new RmAlarmLog();
|
||||
// rmAlarmLog.setClientId(clientId);
|
||||
// rmAlarmLog.setAlarmTime(DateUtils.getNowDate());
|
||||
// rmAlarmLog.setAlarmType(AlarmTypeEnum.磁盘缺失.getCode());
|
||||
// rmAlarmLog.setAlarmContent("服务器" + clientId + "磁盘缺失,磁盘名称:" + diskName);
|
||||
// rmAlarmLogService.insertRmAlarmLog(rmAlarmLog);
|
||||
// sendAlarmPushUtil.sendAlarmPush(rmAlarmLog);
|
||||
//
|
||||
// }
|
||||
// } catch (NumberFormatException e) {
|
||||
// disksToRemove.add(diskName);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// // 4. 删除已处理的磁盘记录
|
||||
// if (!disksToRemove.isEmpty()) {
|
||||
// redisTemplate.opsForHash().delete(diskCountKey, disksToRemove.toArray());
|
||||
// }
|
||||
|
||||
// 5. 数据入库
|
||||
initialDiskInfoService.batchInsertInitialDiskInfo(disks, createTime);
|
||||
|
||||
Reference in New Issue
Block a user