@Override protected void doHealthCheck(Health.Builder builder) throws Exception { ExtensionLoader<StatusChecker> extensionLoader = getExtensionLoader(StatusChecker.class); Map<String, String> statusCheckerNamesMap = resolveStatusCheckerNamesMap(); boolean hasError = false; boolean hasUnknown = false; // Up first builder.up(); for (Map.Entry<String, String> entry : statusCheckerNamesMap.entrySet()) { String statusCheckerName = entry.getKey(); String source = entry.getValue(); StatusChecker checker = extensionLoader.getExtension(statusCheckerName); com.alibaba.dubbo.common.status.Status status = checker.check(); com.alibaba.dubbo.common.status.Status.Level level = status.getLevel(); if (!hasError && level.equals(com.alibaba.dubbo.common.status.Status.Level.ERROR)) { hasError = true; builder.down(); } if (!hasError && !hasUnknown && level.equals(com.alibaba.dubbo.common.status.Status.Level.UNKNOWN)) { hasUnknown = true; builder.unknown(); } Map<String, Object> detail = new LinkedHashMap<>(); detail.put("source", source); detail.put("status", status); builder.withDetail(statusCheckerName, detail); } }
@Override protected void doHealthCheck(Builder builder) throws Exception { PropertySource<?> propertySource = getPropertySource(); builder.up(); if (propertySource instanceof CompositePropertySource) { List<String> sources = new ArrayList<>(); for (PropertySource<?> ps : ((CompositePropertySource) propertySource).getPropertySources()) { sources.add(ps.getName()); } builder.withDetail("propertySources", sources); } else if (propertySource!=null) { builder.withDetail("propertySources", propertySource.toString()); } else { builder.unknown().withDetail("error", "no property sources located"); } }
@Override protected void doHealthCheck(Health.Builder builder) throws Exception { if (getGemFireCache().isPresent()) { Set<Region<?, ?>> rootRegions = getGemFireCache() .map(GemFireCache::rootRegions) .orElseGet(Collections::emptySet); builder.withDetail("geode.cache.regions", rootRegions.stream() .filter(Objects::nonNull) .map(Region::getFullPath) .sorted() .collect(Collectors.toList())); builder.withDetail("geode.cache.regions.count", rootRegions.stream().filter(Objects::nonNull).count()); rootRegions.stream() .filter(Objects::nonNull) .forEach(region -> getGemfireRegionHealthIndicatorConsumers().accept(region, builder)); builder.up(); return; } builder.unknown(); }
@Override protected void doHealthCheck(Health.Builder builder) throws Exception { if (getApplicationContext().isPresent()) { Map<String, DiskStore> diskStores = getApplicationContext() .map(it -> it.getBeansOfType(DiskStore.class)) .orElseGet(Collections::emptyMap); builder.withDetail("geode.disk-store.count", diskStores.size()); diskStores.values().forEach(diskStore -> { String diskStoreName = diskStore.getName(); builder.withDetail(diskStoreKey(diskStoreName, "allow-force-compaction"), toYesNoString(diskStore.getAllowForceCompaction())) .withDetail(diskStoreKey(diskStoreName, "auto-compact"), toYesNoString(diskStore.getAutoCompact())) .withDetail(diskStoreKey(diskStoreName, "compaction-threshold"), diskStore.getCompactionThreshold()) .withDetail(diskStoreKey(diskStoreName, "disk-directories"), toFileAbsolutePathStrings(diskStore.getDiskDirs())) .withDetail(diskStoreKey(diskStoreName, "disk-directory-sizes"), Arrays.toString(nullSafeArray(diskStore.getDiskDirSizes()))) .withDetail(diskStoreKey(diskStoreName, "disk-usage-critical-percentage"), diskStore.getDiskUsageCriticalPercentage()) .withDetail(diskStoreKey(diskStoreName, "disk-usage-warning-percentage"), diskStore.getDiskUsageWarningPercentage()) .withDetail(diskStoreKey(diskStoreName, "max-oplog-size"), diskStore.getMaxOplogSize()) .withDetail(diskStoreKey(diskStoreName, "queue-size"), diskStore.getQueueSize()) .withDetail(diskStoreKey(diskStoreName, "time-interval"), diskStore.getTimeInterval()) .withDetail(diskStoreKey(diskStoreName, "uuid"), diskStore.getDiskStoreUUID().toString()) .withDetail(diskStoreKey(diskStoreName, "write-buffer-size"), diskStore.getWriteBufferSize()); }); builder.up(); return; } builder.unknown(); }
@Override protected void doHealthCheck(Health.Builder builder) throws Exception { if (getGemFireCache().filter(CacheUtils::isPeer).isPresent()) { AtomicInteger globalIndex = new AtomicInteger(0); Set<GatewayReceiver> gatewayReceivers = getGemFireCache() .map(Cache.class::cast) .map(Cache::getGatewayReceivers) .orElseGet(Collections::emptySet); builder.withDetail("geode.gateway-receiver.count", gatewayReceivers.size()); gatewayReceivers.stream() .filter(Objects::nonNull) .forEach(gatewayReceiver -> { int index = globalIndex.getAndIncrement(); builder.withDetail(gatewayReceiverKey(index, "bind-address"), gatewayReceiver.getBindAddress()) .withDetail(gatewayReceiverKey(index, "end-port"), gatewayReceiver.getEndPort()) .withDetail(gatewayReceiverKey(index, "host"), gatewayReceiver.getHost()) .withDetail(gatewayReceiverKey(index, "max-time-between-pings"), gatewayReceiver.getMaximumTimeBetweenPings()) .withDetail(gatewayReceiverKey(index, "port"), gatewayReceiver.getPort()) .withDetail(gatewayReceiverKey(index, "running"), toYesNoString(gatewayReceiver.isRunning())) .withDetail(gatewayReceiverKey(index, "socket-buffer-size"), gatewayReceiver.getSocketBufferSize()) .withDetail(gatewayReceiverKey(index, "start-port"), gatewayReceiver.getStartPort()); }); builder.up(); return; } builder.unknown(); }
@Override protected void doHealthCheck(Health.Builder builder) throws Exception { ExtensionLoader<StatusChecker> extensionLoader = getExtensionLoader(StatusChecker.class); Map<String, String> statusCheckerNamesMap = resolveStatusCheckerNamesMap(); boolean hasError = false; boolean hasUnknown = false; // Up first builder.up(); for (Map.Entry<String, String> entry : statusCheckerNamesMap.entrySet()) { String statusCheckerName = entry.getKey(); String source = entry.getValue(); StatusChecker checker = extensionLoader.getExtension(statusCheckerName); com.alibaba.dubbo.common.status.Status status = checker.check(); com.alibaba.dubbo.common.status.Status.Level level = status.getLevel(); if (!hasError && level.equals(com.alibaba.dubbo.common.status.Status.Level.ERROR)) { hasError = true; builder.down(); } if (!hasError && !hasUnknown && level.equals(com.alibaba.dubbo.common.status.Status.Level.UNKNOWN)) { hasUnknown = true; builder.unknown(); } Map<String, Object> detail = new LinkedHashMap<>(); detail.put("source", source); detail.put("status", status); builder.withDetail(statusCheckerName, detail); } }
@Override protected void doHealthCheck(Health.Builder builder) throws Exception { if (camelContext == null) { builder.unknown(); } else { builder.withDetail("name", camelContext.getName()); builder.withDetail("version", camelContext.getVersion()); if (camelContext.getUptime() != null) { builder.withDetail("uptime", camelContext.getUptime()); builder.withDetail("uptimeMillis", camelContext.getUptimeMillis()); } builder.withDetail("status", camelContext.getStatus().name()); if (camelContext.getStatus().isStarted()) { builder.up(); } else if (camelContext.getStatus().isStopped()) { builder.down(); } else { builder.unknown(); } } } }
@Override protected void doHealthCheck(final Health.Builder builder) { val sessionCount = this.registryState.sessionCount(); val ticketCount = this.registryState.serviceTicketCount(); if (sessionCount == Integer.MIN_VALUE || ticketCount == Integer.MIN_VALUE) { val msg = String.format("Ticket registry %s reports unknown session and/or ticket counts.", this.registryState.getClass().getName()); buildHealthCheckStatus(builder.unknown(), sessionCount, ticketCount, msg); return; } if (this.sessionCountWarnThreshold > -1 && sessionCount > this.sessionCountWarnThreshold) { val msg = String.format("Session count (%s) is above threshold %s. ", sessionCount, this.sessionCountWarnThreshold); buildHealthCheckStatus(builder.status("WARN"), sessionCount, ticketCount, msg); return; } if (this.serviceTicketCountWarnThreshold > -1 && ticketCount > this.serviceTicketCountWarnThreshold) { val msg = String.format("Service ticket count (%s) is above threshold %s.", ticketCount, this.serviceTicketCountWarnThreshold); buildHealthCheckStatus(builder.status("WARN"), sessionCount, ticketCount, msg); return; } buildHealthCheckStatus(builder.up(), sessionCount, ticketCount, "OK"); }
@Override protected void doHealthCheck(Builder builder) throws Exception { PropertySource<?> propertySource = getPropertySource(); builder.up(); if (propertySource instanceof CompositePropertySource) { List<String> sources = new ArrayList<>(); for (PropertySource<?> ps : ((CompositePropertySource) propertySource).getPropertySources()) { sources.add(ps.getName()); } builder.withDetail("propertySources", sources); } else if (propertySource!=null) { builder.withDetail("propertySources", propertySource.toString()); } else { builder.unknown().withDetail("error", "no property sources located"); } }
private void polledRecently(Health.Builder builder) { Instant lastPollTimestamp = poller.getLastPollTimestamp(); if (lastPollTimestamp == null) { builder.unknown(); } else { val timeSinceLastPoll = Duration.between(lastPollTimestamp, now()); builder.withDetail("last.polled", formatDurationWords(timeSinceLastPoll.toMillis(), true, true) + " ago"); builder.withDetail("last.polled.at", ISO_LOCAL_DATE_TIME.format(lastPollTimestamp.atZone(ZoneId.systemDefault()))); if (timeSinceLastPoll.compareTo(Duration.of(poller.getPollingIntervalSeconds() * 2, SECONDS)) <= 0) { builder.up(); } else { builder.down(); } } } }
private Health.Builder getWarning(Health.Builder builder) { return builder.unknown().withDetail("warning", "no status field in response"); } }
@Override protected void doHealthCheck(Health.Builder builder) throws Exception { if (getGemFireCache().isPresent()) { getGemfireHealthIndicatorFunctions().apply(builder); builder.status(getGemFireCache().map(GemFireCache::isClosed).orElse(true) ? Status.DOWN : Status.UP); return; } builder.unknown(); }
@Override public Health health() { if (hasInitialized.get() == Boolean.TRUE) { // avoid being marked unhealthy once connectivity to all accounts has been verified at least once return new Health.Builder().up().build(); } Exception ex = lastException.get(); if (ex != null) { throw new HealthIndicatorWrappedException(ex); } return new Health.Builder().unknown().build(); }
@Override public Health health() { return new Health.Builder().unknown().build(); } };
@Override protected void doHealthCheck(Health.Builder builder) throws Exception { builder.unknown(); } }
@Override public Health health() { return new Health.Builder().unknown().build(); } };