package com.landtool.lanbase.common; import java.io.IOException; import java.net.*; import java.sql.Timestamp; import java.time.LocalDateTime; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; import com.landtool.lanbase.common.utils.ShiroUtils; import com.landtool.lanbase.modules.sys.entity.SysSystemProblemTrack; import com.landtool.lanbase.modules.sys.entity.SysSysteminfo; import com.landtool.lanbase.modules.sys.redis.OnlineUserRedis; import com.landtool.lanbase.modules.sys.service.impl.MonitorServiceImpl; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.client.HttpClients; import org.apache.shiro.session.mgt.SessionManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import com.landtool.lanbase.config.WebSocketServer; import com.landtool.lanbase.modules.sys.controller.SecModController; @Component @Configuration @EnableScheduling public class ScheduleTask { private Logger log=LoggerFactory.getLogger(ScheduleTask.class); @Autowired public SecModController secModController; @Autowired public MonitorServiceImpl monitorService; @Autowired private OnlineUserRedis onlineUserRedis; @Scheduled(fixedRate=10*1000) public void pushMonitorInfo() throws InterruptedException { //人员在线状态 String onlineUser=secModController.queryonlineUser(); String serverinfo=secModController.serverstatus(); String errorSystem=secModController.queryErrorSystem(null,null); //用户使用行为 //服务资源状态 //服务资源调用情况 try { WebSocketServer.BroadCastInfo(onlineUser); WebSocketServer.BroadCastInfo(serverinfo); WebSocketServer.BroadCastInfo(errorSystem); } catch (IOException e) { log.error("WEBSOCKET PUSHH ERROR"+e.toString()); e.printStackTrace(); } } // @Scheduled(fixedRate=10*1000) // public void removeDownlineUser() throws InterruptedException { // // onlineUserRedis.removeDownlineUser(); // } @Scheduled(fixedRate=100*1000) public void checkSystemStatus() throws InterruptedException { Map map=new HashMap<>(); List sysSysteminfos=monitorService.querySysSystemInfo(map); sysSysteminfos.forEach(new Consumer() { @Override public void accept(SysSysteminfo sysSysteminfo) { Socket s=new Socket(); //ping通地址 try { URI uri=new URI(sysSysteminfo.getSysaddress()); SocketAddress add=new InetSocketAddress(uri.getHost(),uri.getPort()==-1?80:uri.getPort()); s.connect(add,5000); } catch ( IOException e) { log.debug(sysSysteminfo.getSysaddress()+"服务异常"+e.getMessage()); //此处更新系统状态记录表 SysSystemProblemTrack sysSystemProblemTrack=new SysSystemProblemTrack(); sysSystemProblemTrack.setAppid(sysSysteminfo.getAppid()); sysSystemProblemTrack.setAddress(sysSysteminfo.getSysaddress()); sysSystemProblemTrack.setStatus("fail"); sysSystemProblemTrack.setCreatetime(Timestamp.valueOf(LocalDateTime.now())); sysSystemProblemTrack.setProblemreason("网络问题"); monitorService.insertSystemProblem(sysSystemProblemTrack); } catch (URISyntaxException e) { e.printStackTrace(); } finally { try { s.close(); } catch (IOException e) { e.printStackTrace(); } } } }); } // @Scheduled(fixedRate=360*1000) // public void checkSystemStatus() throws InterruptedException { // Map map=new HashMap<>(); // List sysSysteminfos=monitorService.querySysSystemInfo(map); // sysSysteminfos.forEach(new Consumer() { // @Override // public void accept(SysSysteminfo sysSysteminfo) { // // //ping通地址 // try { // URI uri=new URI(sysSysteminfo.getSysaddress()); // CloseableHttpClient httpClient=HttpClients.createDefault(); // HttpGet get=new HttpGet(sysSysteminfo.getSysaddress()); // HttpResponse httpResponse=httpClient.execute(get); // if(httpResponse.getStatusLine().getStatusCode()!=200){ // SysSystemProblemTrack sysSystemProblemTrack=new SysSystemProblemTrack(); // sysSystemProblemTrack.setAppid(sysSysteminfo.getAppid()); // sysSystemProblemTrack.setAddress(sysSysteminfo.getSysaddress()); // sysSystemProblemTrack.setStatus("fail"); // sysSystemProblemTrack.setProblemreason("网络问题:"+httpResponse.getStatusLine().getStatusCode()+httpResponse.getEntity().getContent()); // monitorService.insertSystemProblem(sysSystemProblemTrack); // } // } catch ( IOException e) { // //此处更新系统状态记录 // e.printStackTrace(); // } catch (URISyntaxException e) { // e.printStackTrace(); // } finally { // try { // s.close(); // } catch (IOException e) { // e.printStackTrace(); // } // } // // } // }); // // } }