设备监控

monitor
sunjianxi 1 year ago
parent 0fe02fe648
commit 5575423c5d
  1. 34
      src/main/java/org/springblade/modules/monitor/controller/MonitorController.java
  2. 5
      src/main/java/org/springblade/modules/monitor/entity/ConfigMonitor.java
  3. 22
      src/main/java/org/springblade/modules/monitor/service/impl/ConfigMonitorServiceImpl.java
  4. 2
      src/main/java/org/springblade/modules/system/entity/Dict.java

@ -1,36 +1,32 @@
package org.springblade.modules.monitor.controller; package org.springblade.modules.monitor.controller;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springblade.core.tool.api.R;
import org.springblade.modules.monitor.service.IConfigMonitorService; import org.springblade.modules.monitor.service.IConfigMonitorService;
import org.springblade.modules.monitor.vo.ConfigMonitorVO;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController @RestController
@AllArgsConstructor @AllArgsConstructor
@RequestMapping("/monitor") @RequestMapping("/monitor")
public class MonitorController { public class MonitorController {
private final IConfigMonitorService configMonitorService; private final IConfigMonitorService configMonitorService;
/** /**
* 判断设备是否正常 * 判断设备是否正常
*/ */
@GetMapping("/updateMonitorInfo") @GetMapping("/updateMonitorInfo")
public void ifFestival(){ public void ifFestival() {
configMonitorService.updateMonitorInfo(); configMonitorService.updateMonitorInfo();
} }
/** /**
* 定时排查监控设备状态 * 定时排查监控设备状态
*/ */
@GetMapping("/monitoringEquip") @GetMapping("/monitoringEquip")
public void monitoringEquip(){ public void monitoringEquip() {
configMonitorService.monitoringEquip(); configMonitorService.monitoringEquip();
} }
} }

@ -117,9 +117,4 @@ public class ConfigMonitor extends BaseEntity {
@ApiModelProperty(value = "服务颜色") @ApiModelProperty(value = "服务颜色")
private String color; private String color;
/**
* 图标
*/
@ApiModelProperty(value = "图标")
private String icon;
} }

@ -40,6 +40,8 @@ import org.springblade.modules.monitor.entity.ConfigMonitor;
import org.springblade.modules.monitor.mapper.ConfigMonitorMapper; import org.springblade.modules.monitor.mapper.ConfigMonitorMapper;
import org.springblade.modules.monitor.service.IConfigMonitorService; import org.springblade.modules.monitor.service.IConfigMonitorService;
import org.springblade.modules.monitor.vo.ConfigMonitorVO; import org.springblade.modules.monitor.vo.ConfigMonitorVO;
import org.springblade.modules.system.entity.Dict;
import org.springblade.modules.system.service.IDictService;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -63,6 +65,8 @@ public class ConfigMonitorServiceImpl extends ServiceImpl<ConfigMonitorMapper, C
private final HttpUtil httpUtil; private final HttpUtil httpUtil;
private final IDictService dictService;
@Override @Override
public void updateMonitorInfo() { public void updateMonitorInfo() {
try { try {
@ -79,9 +83,11 @@ public class ConfigMonitorServiceImpl extends ServiceImpl<ConfigMonitorMapper, C
String result = null; String result = null;
if(MonitorConstant.RESULT.equals(s)){ if(MonitorConstant.RESULT.equals(s)){
result = s; result = s;
monitor.setStatus(MonitorConstant.STATUS_2);
}else{ }else{
String[] strs = s.split("\""); String[] strs = s.split("\"");
result = strs[strs.length-2]; result = strs[strs.length-2];
monitor.setStatus(MonitorConstant.STATUS_1);
} }
monitor.setResult(result); monitor.setResult(result);
if(monitor.getType().equals(MonitorConstant.SERVICE) && MonitorConstant.RESULT.equals(result)){ if(monitor.getType().equals(MonitorConstant.SERVICE) && MonitorConstant.RESULT.equals(result)){
@ -104,13 +110,19 @@ public class ConfigMonitorServiceImpl extends ServiceImpl<ConfigMonitorMapper, C
public void monitoringEquip() { public void monitoringEquip() {
//查询所有设备 //查询所有设备
Date nowDate = new Date(); Date nowDate = new Date();
Date time = DateUtils.addMinutes(nowDate,-30);
LambdaQueryWrapper<ConfigMonitor> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<ConfigMonitor> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ConfigMonitor::getType, MonitorConstant.EQUIP); queryWrapper.eq(ConfigMonitor::getType, MonitorConstant.EQUIP);
queryWrapper.eq(BaseEntity::getIsDeleted,0); queryWrapper.eq(BaseEntity::getIsDeleted,0);
List<ConfigMonitor> list = baseMapper.selectList(queryWrapper); List<ConfigMonitor> list = baseMapper.selectList(queryWrapper);
//按照父级id分组 //按照父级id分组
Map<Long,List<ConfigMonitor>> map = list.stream().collect(Collectors.groupingBy(ConfigMonitor::getParentId)); Map<Long,List<ConfigMonitor>> map = list.stream().collect(Collectors.groupingBy(ConfigMonitor::getParentId));
//获取取数时间间隔数据字典
List<Dict> dictList = dictService.getList("time_period");
Map<String,String> dictMap = new HashMap<>();
dictList.forEach(item ->{
dictMap.put(item.getDictKey(),item.getDictValue());
});
for(Map.Entry<Long,List<ConfigMonitor>> entry : map.entrySet()){ for(Map.Entry<Long,List<ConfigMonitor>> entry : map.entrySet()){
Long parentId = entry.getKey(); Long parentId = entry.getKey();
List<ConfigMonitor> monitorList = entry.getValue(); List<ConfigMonitor> monitorList = entry.getValue();
@ -119,6 +131,12 @@ public class ConfigMonitorServiceImpl extends ServiceImpl<ConfigMonitorMapper, C
if(item.getUpdateTime() == null){ if(item.getUpdateTime() == null){
return false; return false;
} }
Date time = null;
if(dictMap.containsKey(item.getClassCode())){
time = DateUtils.addMinutes(nowDate,-Integer.parseInt(dictMap.get(item.getClassCode())));
}else{
time = DateUtils.addMinutes(nowDate,-30);
}
return item.getUpdateTime().compareTo(time) < 0; return item.getUpdateTime().compareTo(time) < 0;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
List<Long> parentIdList = new ArrayList<>(); List<Long> parentIdList = new ArrayList<>();
@ -161,7 +179,7 @@ public class ConfigMonitorServiceImpl extends ServiceImpl<ConfigMonitorMapper, C
//mqtt服务排查 //mqtt服务排查
if (configMonitor.getType().equals(MonitorConstant.MIDDLEWARE) && configMonitor.getMonitorType().equals(MonitorConstant.MQTT)) { if (configMonitor.getType().equals(MonitorConstant.MIDDLEWARE) && configMonitor.getMonitorType().equals(MonitorConstant.MQTT)) {
//通过查询所有mqtt相关设备来判断mqtt服务是否正常 //通过查询所有mqtt相关设备来判断mqtt服务是否正常
int count = baseMapper.findMqttEquipCount(DateFormatUtils.format(time, "yyyy-MM-dd HH:mm:ss")); int count = baseMapper.findMqttEquipCount(DateFormatUtils.format(DateUtils.addMinutes(nowDate,-30), "yyyy-MM-dd HH:mm:ss"));
//如果count=0说明所有mqtt相关设备都没取到数,可证明mqtt出现问题 //如果count=0说明所有mqtt相关设备都没取到数,可证明mqtt出现问题
if (count == 0) { if (count == 0) {
flag = false; flag = false;

@ -64,7 +64,7 @@ public class Dict implements Serializable {
* 字典值 * 字典值
*/ */
@ApiModelProperty(value = "字典值") @ApiModelProperty(value = "字典值")
private Integer dictKey; private String dictKey;
/** /**
* 字典名称 * 字典名称

Loading…
Cancel
Save