monitor
liuqingkun 1 year ago
commit e58c456ee0
  1. 8
      src/main/java/org/springblade/modules/monitor/controller/MonitorController.java
  2. 38
      src/main/java/org/springblade/modules/monitor/service/impl/ConfigMonitorServiceImpl.java
  3. 3
      src/main/java/org/springblade/modules/monitor/task/MonitorTaskJob.java
  4. 2
      src/main/java/org/springblade/modules/system/entity/Dict.java

@ -1,15 +1,11 @@
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")
@ -21,7 +17,7 @@ public class MonitorController {
* 判断设备是否正常 * 判断设备是否正常
*/ */
@GetMapping("/updateMonitorInfo") @GetMapping("/updateMonitorInfo")
public void ifFestival(){ public void ifFestival() {
configMonitorService.updateMonitorInfo(); configMonitorService.updateMonitorInfo();
} }
@ -30,7 +26,7 @@ public class MonitorController {
* 定时排查监控设备状态 * 定时排查监控设备状态
*/ */
@GetMapping("/monitoringEquip") @GetMapping("/monitoringEquip")
public void monitoringEquip(){ public void monitoringEquip() {
configMonitorService.monitoringEquip(); configMonitorService.monitoringEquip();
} }
} }

@ -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,13 +83,24 @@ 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];
if(MonitorConstant.RESULT.equals(result)){
monitor.setStatus(MonitorConstant.STATUS_2);
}else{
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)){
if(MonitorConstant.RESULT.equals(result)){
monitor.setColor("red"); monitor.setColor("red");
}else{
monitor.setColor("green");
}
} }
baseMapper.updateById(monitor); baseMapper.updateById(monitor);
log.info("调用api结果:"+s); log.info("调用api结果:"+s);
@ -104,13 +119,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 +140,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 +188,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;
@ -336,6 +363,11 @@ public class ConfigMonitorServiceImpl extends ServiceImpl<ConfigMonitorMapper, C
LambdaQueryWrapper<ConfigMonitor> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<ConfigMonitor> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ConfigMonitor::getType, MonitorConstant.WEB); wrapper.eq(ConfigMonitor::getType, MonitorConstant.WEB);
List<ConfigMonitor> list = baseMapper.selectList(wrapper); List<ConfigMonitor> list = baseMapper.selectList(wrapper);
list.forEach(item ->{
if(!MonitorConstant.RESULT.equals(item.getResult())){
item.setResult(String.format("%.2f",Double.parseDouble(item.getResult()))+"%");
}
});
return list; return list;
} }

@ -11,7 +11,8 @@ public class MonitorTaskJob {
private final IConfigMonitorService configMonitorService; private final IConfigMonitorService configMonitorService;
//更新服务器监控状态 //更新服务器监控状态
@Scheduled(cron ="0 0 0 1/1 * ? ") @Scheduled(cron ="0 0 0/1 * * ? ")
//@Scheduled(cron ="0 0/1 * * * ? ")
public void updateMonitorInfo(){ public void updateMonitorInfo(){
configMonitorService.updateMonitorInfo(); configMonitorService.updateMonitorInfo();
} }

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

Loading…
Cancel
Save