| | |
| | | String prefix = "http://"; |
| | | if ("127.0.0.1".equals(monitor.getIp())) { |
| | | monitor.setPingOnline(Boolean.FALSE); |
| | | log.error("ip有误"+monitor.getIp()); |
| | | return monitor; |
| | | } |
| | | try { |
| | |
| | | map = new HashMap<>(); |
| | | } |
| | | if (!monitor.getPingOnline()) { |
| | | try { |
| | | reachable = InetAddress.getByName(monitor.getIp()).isReachable(5000); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | reachable = checkPing(monitor, reachable); |
| | | monitor.setPingOnline(reachable); |
| | | } |
| | | if (!monitor.getPingOnline()) { |
| | |
| | | Date now = new Date(); |
| | | SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | offTimeList.add(dateFormat.format(now)); |
| | | monitor.setOffLineTimeStr(offTimeList); |
| | | //到达产生工单的阈值次数 |
| | | if (continueOffTimes>=times) { |
| | | //产生了工单才会存储离线时间,存储最近一次产生工单的这几个离线时间点 |
| | | monitor.setOffLineTimeStr(offTimeList); |
| | | monitor.setCreateWorkOrder(Boolean.TRUE); |
| | | //产生了一次工单则清除 |
| | | continueOffTimes = 0; |
| | | offTimeList = new ArrayList<>(); |
| | | } |
| | | }else { |
| | | //如果在线了,清空连续离线次数,清空离线时间 |
| | | continueOffTimes = 0; |
| | | offTimeList = new ArrayList<>(); |
| | | } |
| | | map.put("checkTimes", checkTimes); |
| | | map.put("offLineTimes", offLineTimes); |
| | |
| | | return monitor; |
| | | } |
| | | |
| | | private boolean checkPing(TMonitorResult monitor, boolean reachable) { |
| | | try { |
| | | int[] sleepTimes = {5000, 15000, 30000}; |
| | | for (int sleepTime : sleepTimes) { |
| | | reachable = InetAddress.getByName(monitor.getIp()).isReachable(5000); |
| | | if (reachable) { |
| | | break; |
| | | } |
| | | Thread.sleep(sleepTime); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("Ping异常",e); |
| | | } |
| | | return reachable; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 监测点位在线 |