monitor
liuqingkun 1 year ago
commit e58c456ee0
  1. 34
      src/main/java/org/springblade/modules/monitor/controller/MonitorController.java
  2. 40
      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,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();
}
}

@ -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,13 +83,24 @@ 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];
if(MonitorConstant.RESULT.equals(result)){
monitor.setStatus(MonitorConstant.STATUS_2);
}else{
monitor.setStatus(MonitorConstant.STATUS_1);
}
}
monitor.setResult(result);
if(monitor.getType().equals(MonitorConstant.SERVICE) && MonitorConstant.RESULT.equals(result)){
monitor.setColor("red");
if(monitor.getType().equals(MonitorConstant.SERVICE)){
if(MonitorConstant.RESULT.equals(result)){
monitor.setColor("red");
}else{
monitor.setColor("green");
}
}
baseMapper.updateById(monitor);
log.info("调用api结果:"+s);
@ -104,13 +119,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 +140,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 +188,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;
@ -336,6 +363,11 @@ public class ConfigMonitorServiceImpl extends ServiceImpl<ConfigMonitorMapper, C
LambdaQueryWrapper<ConfigMonitor> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ConfigMonitor::getType, MonitorConstant.WEB);
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;
}

@ -11,7 +11,8 @@ public class MonitorTaskJob {
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(){
configMonitorService.updateMonitorInfo();
}

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

Loading…
Cancel
Save