@Override public PollStatus handlePollResult(MonitoredService svc, Map<String, Object> parameters, PollStatus status) { if ("true".equals(ParameterMap.getKeyedString(parameters, "invert-status", "false"))) { if (status.isAvailable()) { return PollStatus.unavailable("This is an inverted service and the underlying service has started responding"); } else { return PollStatus.available(); } } return status; } }
public SnmpMinimalPollInterface(int ifindex, int adminstatus, int operstatus) { this.ifindex = ifindex; this.adminstatus = adminstatus; this.operstatus = operstatus; m_status = PollStatus.unknown(); }
/** {@inheritDoc} */ @Override public PollStatus poll(PolledService polledService) { PollStatus status = m_currentStatus; m_pollCount++; if (m_pollCount % m_repetitions == 0) { m_currentStatus = (m_currentStatus.isDown() ? PollStatus.up(100.0+m_pollCount) : PollStatus.down("pollCount is "+m_pollCount)); } return status; }
private String getResponseText(PollStatus status) { if (status.isAvailable()) { Double responseTime = status.getResponseTime(); if (responseTime != null && responseTime >= 0) { return responseTime + "ms"; } else { return ""; } } else { return status.getReason(); } }
/** * TODO: Use the enum for these string values */ private String getStyleForPollResult(PollStatus status) { if (status.isAvailable()) { return "Normal"; } else if (status.isUnresponsive()) { return "Warning"; } else if (status.isUnknown()) { return "Indeterminate"; } else { return "Critical"; } }
PollStatus serviceStatus = PollStatus.unknown(); for (tracker.reset(); tracker.shouldRetry() && !serviceStatus.isAvailable(); tracker.nextAttempt()) { } catch (MalformedURLException e) { logger.warn("Error connecting VMware management server '{}': '{}' exception: {} cause: '{}'", vmwareManagementServer, e.getMessage(), e.getClass().getName(), e.getCause()); return PollStatus.unavailable("Error connecting VMware management server '" + vmwareManagementServer + "'"); } catch (RemoteException e) { logger.warn("Error connecting VMware management server '{}': '{}' exception: {} cause: '{}'", vmwareManagementServer, e.getMessage(), e.getClass().getName(), e.getCause()); return PollStatus.unavailable("Error connecting VMware management server '" + vmwareManagementServer + "'"); return PollStatus.unknown("hostSystem=null"); } else { HostRuntimeInfo hostRuntimeInfo = hostSystem.getRuntime(); return PollStatus.unknown("hostRuntimeInfo=null"); } else { HostSystemPowerState hostSystemPowerState = hostRuntimeInfo.getPowerState(); if (hostSystemPowerState == null) { return PollStatus.unknown("hostSystemPowerState=null"); } else { powerState = hostSystemPowerState.toString(); return PollStatus.unavailable("Error retrieving cim values from host system '" + vmwareManagedObjectId + "'"); serviceStatus = PollStatus.available(); } else { serviceStatus = PollStatus.unavailable(reason.toString());
private synchronized PollStatus executeScript(MonitoredService svc, Map<String, Object> map) { PollStatus pollStatus = PollStatus.unavailable(); String fileName = ParameterMap.getKeyedString(map,"file-name", null); String lang = ParameterMap.getKeyedString(map, "lang-class", null); pollStatus = PollStatus.unknown("The script did not update the service status"); pollStatus = PollStatus.unknown(results.get("reason")); } else if (STATUS_UNRESPONSIVE.equals(results.get("status"))) { pollStatus = PollStatus.unresponsive(results.get("reason")); } else if (STATUS_AVAILABLE.equals(results.get("status"))){ pollStatus = PollStatus.available(); } else if (STATUS_UNAVAILABLE.equals(results.get("status"))) { pollStatus = PollStatus.unavailable(results.get("reason")); } else { pollStatus = PollStatus.unavailable(results.get("status")); pollStatus.setProperties(times); pollStatus = PollStatus.unavailable("Cannot locate or read BSF script file: " + fileName); pollStatus = PollStatus.unavailable(e.getMessage()); } catch (FileNotFoundException e){ LOG.warn("Could not find BSF script file '{}'. Marking service '{}' down.", fileName, svc.getSvcName()); pollStatus = PollStatus.unavailable("Could not find BSF script file: " + fileName); } catch (IOException e) { pollStatus = PollStatus.unavailable(e.getMessage()); LOG.warn("BSFMonitor poll for service '{}' failed with IOException: {}", svc.getSvcName(), e.getMessage(), e); } catch (Throwable e) {
public PollStatus poll(MonitoredService svc, Map<String, Object> parameters) { PollStatus status = PollStatus.unavailable(); Driver driver = null; Connection con = null; status = PollStatus.unresponsive(); status = PollStatus.unavailable("Wrong kind of JDBC driver to connect to the JDBC URL"); break; } else { if (status.isAvailable()) { double responseTime = tracker.elapsedTimeInMillis(); status = PollStatus.available(responseTime); status = PollStatus.unavailable(reason);
@Override public org.opennms.netmgt.poller.PollStatus poll(MonitoredService svc, Map<String, Object> parameters) { Map<String, String> attributes = getAttributes(parameters); PollerRequest monitoredService = new PollerRequestImpl(svc, attributes); ServicePoller servicePoller = servicePollerFactory.createPoller(); CompletableFuture<PollerResult> future = servicePoller.poll(monitoredService); PollerResult pollStatus; try { pollStatus = future.get(); switch (pollStatus.getStatus()) { case Up: return PollStatus.up(); case Down: return PollStatus.down(pollStatus.getReason()); case UnResponsive: return PollStatus.unresponsive(pollStatus.getReason()); case Unknown: return PollStatus.unknown(pollStatus.getReason()); } } catch (InterruptedException | ExecutionException e) { return PollStatus.down(e.getMessage()); } return PollStatus.unknown(pollStatus.getReason()); }
private PollStatus qualifyTime(int remoteTime, int localTime, int allowedSkew, PollStatus serviceStatus, double responseTime, boolean persistSkew) { LOG.debug("qualifyTime: checking remote time {} against local time {} with max skew of {}", remoteTime, localTime, allowedSkew); if ((localTime - remoteTime > allowedSkew) || (remoteTime - localTime > allowedSkew)) { String reason = "Remote time is " + (localTime > remoteTime ? ""+(localTime-remoteTime)+" seconds slow" : ""+(remoteTime-localTime)+" seconds fast"); LOG.debug(reason); serviceStatus = PollStatus.unavailable(reason); } if ((localTime > remoteTime) && (localTime - remoteTime > allowedSkew)) { String reason = "Remote time is " + (localTime - remoteTime) + " seconds behind local, more than the allowable " + allowedSkew; LOG.debug(reason); serviceStatus = PollStatus.unavailable(reason); } else if ((remoteTime > localTime) && (remoteTime - localTime > allowedSkew)) { String reason = "Remote time is " + (remoteTime - localTime) + " seconds ahead of local, more than the allowable " + allowedSkew; LOG.debug(reason); serviceStatus = PollStatus.unavailable(reason); } else { serviceStatus = PollStatus.available(); } storeResult(serviceStatus, remoteTime - localTime, responseTime, persistSkew); return serviceStatus; } }
System.out.printf("Available ? %s (status %s[%s])%n", status.isAvailable(), status.getStatusName(), status.getStatusCode()); if (status.isAvailable()) { System.out.printf("Response time: %s%n", status.getResponseTime()); } else { if (status.getReason() != null) { System.out.printf("Reason: %s%n", status.getReason());
private PollStatus doPoll(int nodeId, String ipAddr, String svcName) { synchronized (m_network) { MockService svc = m_network.getService(nodeId, ipAddr, svcName); if (svc == null) { LOG.info("Invalid Poll: {}/{}/{}", nodeId, ipAddr, svcName); m_network.receivedInvalidPoll(ipAddr, svcName); return PollStatus.unknown("Mock."); } else { LOG.info("Poll: [{}/{}/{}]", svc.getInterface().getNode().getLabel(), ipAddr, svcName); PollStatus pollStatus = svc.poll(); return PollStatus.get(pollStatus.getStatusCode(), pollStatus.getReason()); } } }
@Override public PollStatus poll(final MonitoredService svc, final Map<String, Object> parameters) { // Minions send heartbeat every 30 seconds - we check that we can skip not more than one beat final int period = 2 * ParameterMap.getKeyedInteger(parameters, "period", 30 * 1000); // Get the minion to test whereas the minion ID is the nodes foreign ID by convention final OnmsNode node = nodeDao.get().get(svc.getNodeId()); final OnmsMinion minion = minionDao.get().findById(node.getForeignId()); // Calculate the time since the last heartbeat was received final long lastSeen = System.currentTimeMillis() - minion.getLastUpdated().getTime(); final PollStatus status; if (lastSeen <= period) { status = PollStatus.available(); } else if (ManagementFactory.getRuntimeMXBean().getUptime() < period) { status = PollStatus.unknown("JVM has not been started long enough to process a heartbeat."); } else { status = PollStatus.unavailable(String.format("Last heartbeat was %.2f seconds ago", lastSeen / 1000.0)); } return status; }
PollStatus status = PollStatus.unavailable("Unable to retrieve database catalogs"); ResultSet resultset = null; try status = PollStatus.unresponsive(); status = PollStatus.available(); status = PollStatus.unavailable(reason);
double responseTime = tracker.elapsedTimeInMillis(); PollStatus ps = PollStatus.unavailable(); ps.setReason(errorMessage); ps = PollStatus.available(responseTime); } else if (errorMessage.matches("^.*Authentication:.*$")) { ps = PollStatus.unavailable("authentication failed"); } else if (errorMessage.matches("^.*java.net.NoRouteToHostException.*$")) { ps = PollStatus.unavailable("no route to host"); } else if (errorMessage.matches("^.*(timeout: socket is not established|java.io.InterruptedIOException|java.net.SocketTimeoutException).*$")) { ps = PollStatus.unavailable("connection timed out"); } else if (errorMessage.matches("^.*(connection is closed by foreign host|java.net.ConnectException).*$")) { ps = PollStatus.unavailable("connection exception"); } else if (errorMessage.matches("^.*NumberFormatException.*$")) { ps = PollStatus.unavailable("an error occurred parsing the server version number"); } else if (errorMessage.matches("^.*java.io.IOException.*$")) { ps = PollStatus.unavailable("I/O exception");
HttpMonitor.LOG.debug("checkStatus: Reason: \""+getReason()+"\""); return PollStatus.unavailable(getReason()); return PollStatus.available(getResponseTime()); } else { return PollStatus.get(getPollStatus(), getReason());
private void sendRegainedOrLostServiceEvent(final OnmsLocationSpecificStatus newStatus, final PollStatus pollResult) { final String uei = pollResult.isAvailable() ? EventConstants.REMOTE_NODE_REGAINED_SERVICE_UEI : EventConstants.REMOTE_NODE_LOST_SERVICE_UEI; final EventBuilder builder = createEventBuilder(newStatus.getLocationMonitor(), uei) .setMonitoredService(newStatus.getMonitoredService()); if (!pollResult.isAvailable() && pollResult.getReason() != null) { builder.addParam(EventConstants.PARM_LOSTSERVICE_REASON, pollResult.getReason()); } m_eventIpcManager.sendNow(builder.getEvent()); }
/** * <p>recalculateStatus</p> */ @Override public void recalculateStatus() { PollableService criticalSvc = getCriticalService(); if (criticalSvc != null) { criticalSvc.recalculateStatus(); updateStatus(criticalSvc.getStatus().isUp() ? PollStatus.up() : PollStatus.down()); } else { super.recalculateStatus(); } }
try { PollStatus pollStatus = future.get(1, TimeUnit.SECONDS).getPollStatus(); if (pollStatus.getStatusCode() == PollStatus.SERVICE_AVAILABLE) { System.out.printf("\nService is %s on %s using %s:\n", pollStatus.getStatusName(), host, className); final Map<String, Number> properties = pollStatus.getProperties(); if (properties.size() > 0) { properties.entrySet().stream().forEach(e -> { System.out.printf("\nService is %s on %s using %s\n", pollStatus.getStatusName(), host, className); System.out.printf("\tReason: %s\n", pollStatus.getReason());
public void testPoll() throws UnknownHostException { PassiveStatusKeeper psk = PassiveStatusKeeper.getInstance(); psk.setStatus("localhost", "127.0.0.1", "my-passive-service", PollStatus.get(PollStatus.SERVICE_UNAVAILABLE, "testing failure")); ServiceMonitor sm = new PassiveServiceMonitor(); MonitoredService ms = createMonitoredService(1, "localhost", null, "127.0.0.1", "my-passive-service"); PollStatus ps = sm.poll(ms, new HashMap<String, Object>()); assertEquals(PollStatus.down("fail."), ps); psk.setStatus("localhost", "127.0.0.1", "my-passive-service", PollStatus.get(PollStatus.SERVICE_AVAILABLE, "testing failure")); ps = sm.poll(ms, new HashMap<String, Object>()); assertEquals(PollStatus.up(), ps); }