设备监控

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;
import lombok.AllArgsConstructor;
import org.springblade.core.tool.api.R;
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.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@AllArgsConstructor
@RequestMapping("/monitor")
public class MonitorController {
private final IConfigMonitorService configMonitorService;
private final IConfigMonitorService configMonitorService;
/**
* 判断设备是否正常
*/
@GetMapping("/updateMonitorInfo")
public void ifFestival(){
configMonitorService.updateMonitorInfo();
}
/**
* 判断设备是否正常
*/
@GetMapping("/updateMonitorInfo")
public void ifFestival() {
configMonitorService.updateMonitorInfo();
}
/**
* 定时排查监控设备状态
*/
@GetMapping("/monitoringEquip")
public void monitoringEquip(){
configMonitorService.monitoringEquip();
}
/**
* 定时排查监控设备状态
*/
@GetMapping("/monitoringEquip")
public void monitoringEquip() {
configMonitorService.monitoringEquip();
}
}

@ -117,9 +117,4 @@ public class ConfigMonitor extends BaseEntity {
@ApiModelProperty(value = "服务颜色")
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.service.IConfigMonitorService;
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.stereotype.Service;
@ -63,6 +65,8 @@ public class ConfigMonitorServiceImpl extends ServiceImpl<ConfigMonitorMapper, C
private final HttpUtil httpUtil;
private final IDictService dictService;
@Override
public void updateMonitorInfo() {
try {
@ -79,9 +83,11 @@ public class ConfigMonitorServiceImpl extends ServiceImpl<ConfigMonitorMapper, C
String result = null;
if(MonitorConstant.RESULT.equals(s)){
result = s;
monitor.setStatus(MonitorConstant.STATUS_2);
}else{
String[] strs = s.split("\"");
result = strs[strs.length-2];
monitor.setStatus(MonitorConstant.STATUS_1);
}
monitor.setResult(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() {
//查询所有设备
Date nowDate = new Date();
Date time = DateUtils.addMinutes(nowDate,-30);
LambdaQueryWrapper<ConfigMonitor> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ConfigMonitor::getType, MonitorConstant.EQUIP);
queryWrapper.eq(BaseEntity::getIsDeleted,0);
List<ConfigMonitor> list = baseMapper.selectList(queryWrapper);
//按照父级id分组
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()){
Long parentId = entry.getKey();
List<ConfigMonitor> monitorList = entry.getValue();
@ -119,6 +131,12 @@ public class ConfigMonitorServiceImpl extends ServiceImpl<ConfigMonitorMapper, C
if(item.getUpdateTime() == null){
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;
}).collect(Collectors.toList());
List<Long> parentIdList = new ArrayList<>();
@ -161,7 +179,7 @@ public class ConfigMonitorServiceImpl extends ServiceImpl<ConfigMonitorMapper, C
//mqtt服务排查
if (configMonitor.getType().equals(MonitorConstant.MIDDLEWARE) && configMonitor.getMonitorType().equals(MonitorConstant.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出现问题
if (count == 0) {
flag = false;

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

Loading…
Cancel
Save