/** * <p>available</p> * * @return a {@link org.opennms.netmgt.poller.PollStatus} object. */ public static PollStatus available() { return available(null); }
/** * <p>up</p> * * @param responseTime a {@link java.lang.Double} object. * @return a {@link org.opennms.netmgt.poller.PollStatus} object. */ public static PollStatus up(final Double responseTime) { return available(responseTime); }
@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; } }
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; } }
@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; }
status = PollStatus.available();
ps = PollStatus.available(responseTime); } else if (SSH_AUTHENTICATION_PATTERN.matcher(errorMessage).find()) { ps = PollStatus.unavailable("authentication failed");
status = PollStatus.available();
/** {@inheritDoc} */ @Override public PollStatus poll(MonitoredService svc, Map<String, Object> parameters) { int retries = ParameterMap.getKeyedInteger(parameters, "retry", PingConstants.DEFAULT_RETRIES); long timeout = ParameterMap.getKeyedLong(parameters, "timeout", PingConstants.DEFAULT_TIMEOUT); Long rtt = null; String phoneNumber = null; try { phoneNumber = phonebook.getTargetForAddress(svc.getIpAddr()); } catch (final PhonebookException e) { LOG.warn("Unable to get phonebook target for {}", svc.getIpAddr(), e); } if (phoneNumber != null) { try { rtt = SmsPinger.ping(phoneNumber, timeout, retries); } catch (final Exception e) { LOG.warn("Unable to ping phone number: {}", phoneNumber, e); } } if (rtt != null) { return PollStatus.available(rtt.doubleValue()); } else { return PollStatus.unavailable(); } } }
ps = PollStatus.available(responseTime); } else if (errorMessage.matches("^.*Authentication:.*$")) { ps = PollStatus.unavailable("authentication failed");
serviceStatus = PollStatus.available((double)responseTime);
ps = PollStatus.available(responseTime); } else if (errorMessage.matches("^.*Authentication:.*$")) { ps = PollStatus.unavailable("authentication failed");
double responseTime = tracker.elapsedTimeInMillis(); serviceStatus = PollStatus.available();
return PollStatus.available(getResponseTime()); } else { return PollStatus.get(getPollStatus(), getReason());
return PollStatus.available(rtt.doubleValue()); } else {
@Override public PollStatus poll(final MonitoredService svc, final Map<String, Object> parameters) { Long ttlInMs = ParameterMap.getKeyedLong(parameters, "ttl", DEFAULT_TTL_IN_MS); if (ttlInMs < 1) { // Use the global default ttlInMs = null; } int messageSize = ParameterMap.getKeyedInteger(parameters, "message-size", DEFAULT_MESSAGE_SIZE); if (messageSize < 0) { messageSize = 0; } // Create the client final RpcClient<EchoRequest, EchoResponse> client = rpcClientFactory.get().getClient(EchoRpcModule.INSTANCE); // Build the request final OnmsNode node = nodeDao.get().get(svc.getNodeId()); final EchoRequest request = new EchoRequest(); request.setId(System.currentTimeMillis()); request.setMessage(Strings.repeat("*", messageSize)); request.setLocation(node.getLocation().getLocationName()); request.setSystemId(node.getForeignId()); request.setTimeToLiveMs(ttlInMs); try { final EchoResponse response = client.execute(request).get(); final Long responseTime = System.currentTimeMillis() - response.getId(); return PollStatus.available(responseTime.doubleValue()); } catch (InterruptedException|ExecutionException t) { return RpcExceptionUtils.handleException(t, this); } }
serviceStatus = PollStatus.available();
/** {@inheritDoc} */ @Override public PollStatus poll(MonitoredService svc, Map<String, Object> parameters) { TimeoutTracker timeoutTracker = new TimeoutTracker(parameters, DEFAULT_RETRY, DEFAULT_TIMEOUT); for(timeoutTracker.reset(); timeoutTracker.shouldRetry(); timeoutTracker.nextAttempt()) { try { timeoutTracker.startAttempt(); if (svc.getAddress().isReachable(timeoutTracker.getSoTimeout())) { return PollStatus.available(timeoutTracker.elapsedTimeInMillis()); } } catch (IOException e) { LOG.debug("Unable to contact {}", svc.getIpAddr(), e); } } String reason = svc+" failed to respond"; LOG.debug(reason); return PollStatus.unavailable(reason); }
serviceStatus = PollStatus.available(); serviceStatus.setProperties(responseTimes); }else {
/** * Sends message based on properties and fields configured for the service. * * @param mailParms * @return a PollStatus */ private PollStatus sendTestMessage(final MailTransportParameters mailParms) { PollStatus status = PollStatus.unavailable("Test not completed."); final long interval = mailParms.getSendTestAttemptInterval(); final TimeoutTracker tracker = new TimeoutTracker(mailParms.getParameterMap(), mailParms.getRetries(), mailParms.getTimeout()); for (tracker.reset(); tracker.shouldRetry(); tracker.nextAttempt()) { tracker.startAttempt(); LOG.debug("sendTestMessage: sending mail attempt: {}, elapsed time: {}ms", (tracker.getAttempt() + 1), String.format("%.2f", tracker.elapsedTimeInMillis())); try { final JavaMailer sendMailer = createMailer(mailParms); overRideDefaultProperties(mailParms, sendMailer); sendMailer.mailSend(); status = PollStatus.available(); break; } catch (final JavaMailerException e) { status = PollStatus.unavailable(e.getLocalizedMessage()); } if (tracker.shouldRetry()) { delayTest(status, interval); } } return status; }