private Health rateLimiterHealth(Status status, int availablePermissions, int numberOfWaitingThreads) { return Health.status(status) .withDetail("availablePermissions", availablePermissions) .withDetail("numberOfWaitingThreads", numberOfWaitingThreads) .build(); } }
@Override public Health health() { int errorCode = check(); if (errorCode != 0) { return Health.down().withDetail("Error Code", errorCode).build(); } return Health.up().build(); }
@Override protected void doHealthCheck(Health.Builder builder) throws Exception { for (String dataId : dataIds) { try { String config = ConfigService.getConfig(dataId, acmProperties.getGroup(), acmProperties.getTimeout()); if (StringUtils.isEmpty(config)) { builder.down().withDetail(String.format("dataId: '%s', group: '%s'", dataId, acmProperties.getGroup()), "config is empty"); } } catch (Exception e) { builder.down().withDetail(String.format("dataId: '%s', group: '%s'", dataId, acmProperties.getGroup()), e.getMessage()); } } builder.up().withDetail("dataIds", dataIds); } }
@Override public void doHealthCheck(Health.Builder builder) throws Exception { boolean up = true; for (ClassIdBean classIdBean : ConsumerSubscribeListener.SUBSCRIBEDINTERFACES_SET) { Object service = DubboConsumerAutoConfiguration.getDubboReference(classIdBean); EchoService echoService = (EchoService) service; if (echoService != null) { try { echoService.$echo("Hello"); builder.withDetail(classIdBean.toString(), Status.UP.getCode()); } catch (Throwable t) { up = false; builder.withDetail(classIdBean.toString(), Status.DOWN.getCode() + ", message: " + t.getMessage()); } } } if (up) { builder.up(); } else { builder.down(); } } }
private Health mapBackendMonitorState(CircuitBreaker circuitBreaker) { switch (circuitBreaker.getState()) { case CLOSED: return addDetails(Health.up(), circuitBreaker).build(); case OPEN: return addDetails(Health.down(), circuitBreaker).build(); case HALF_OPEN: return addDetails(Health.unknown(),circuitBreaker).build(); default: return addDetails(Health.unknown(), circuitBreaker).build(); } }
@Override protected void doHealthCheck(Health.Builder builder) throws Exception { if (instrumentationManager != null) { if (instrumentationManager.getHealthInstrumentations().stream() .allMatch(Instrumentation::isUp)) { builder.up(); return; } if (instrumentationManager.getHealthInstrumentations().stream() .allMatch(Instrumentation::isOutOfService)) { builder.outOfService(); return; } builder.down(); instrumentationManager.getHealthInstrumentations().stream() .filter(instrumentation -> !instrumentation.isStarted()) .forEach(instrumentation1 -> builder .withException(instrumentation1.getStartException())); } else { builder.down(); builder.withDetail("warning", "please add metrics-core dependency, we use it for metrics"); } } }
@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"); } }
private Health.Builder addDetails(Health.Builder builder, CircuitBreaker circuitBreaker) { CircuitBreaker.Metrics metrics = circuitBreaker.getMetrics(); CircuitBreakerConfig config = circuitBreaker.getCircuitBreakerConfig(); builder.withDetail(FAILURE_RATE, metrics.getFailureRate() + "%") .withDetail(FAILURE_RATE_THRESHOLD, config.getFailureRateThreshold() + "%") .withDetail(MAX_BUFFERED_CALLS, metrics.getMaxNumberOfBufferedCalls()) .withDetail(BUFFERED_CALLS, metrics.getNumberOfBufferedCalls()) .withDetail(FAILED_CALLS, metrics.getNumberOfFailedCalls()) .withDetail(NOT_PERMITTED, metrics.getNumberOfNotPermittedCalls()); return builder; } }
then(health.getStatus()).isEqualTo(Status.UP); then(health.getStatus()).isEqualTo(Status.UNKNOWN); then(health.getStatus()).isEqualTo(Status.DOWN); then(health.getDetails()) .contains( entry("availablePermissions", -2),
@Override public Health health() { int errorCode = check(); if (errorCode != 0) { return Health.down().withDetail("Error Code", errorCode).build(); } return Health.up().build(); }
@Override protected void doHealthCheck(Health.Builder builder) throws Exception { for (String dataId : dataIds) { try { String config = configService.getConfig(dataId, nacosConfigProperties.getGroup(), nacosConfigProperties.getTimeout()); if (StringUtils.isEmpty(config)) { builder.down().withDetail(String.format("dataId: '%s', group: '%s'", dataId, nacosConfigProperties.getGroup()), "config is empty"); } } catch (Exception e) { builder.down().withDetail(String.format("dataId: '%s', group: '%s'", dataId, nacosConfigProperties.getGroup()), e.getMessage()); } } builder.up().withDetail("dataIds", dataIds); } }
private Health mapBackendMonitorState(CircuitBreaker circuitBreaker) { switch (circuitBreaker.getState()) { case CLOSED: return addDetails(Health.up(), circuitBreaker).build(); case OPEN: return addDetails(Health.down(), circuitBreaker).build(); case HALF_OPEN: return addDetails(Health.unknown(),circuitBreaker).build(); default: return addDetails(Health.unknown(), circuitBreaker).build(); } }
private Health rateLimiterHealth(Status status, int availablePermissions, int numberOfWaitingThreads) { return Health.status(status) .withDetail("availablePermissions", availablePermissions) .withDetail("numberOfWaitingThreads", numberOfWaitingThreads) .build(); } }
private Health.Builder addDetails(Health.Builder builder, CircuitBreaker circuitBreaker) { CircuitBreaker.Metrics metrics = circuitBreaker.getMetrics(); CircuitBreakerConfig config = circuitBreaker.getCircuitBreakerConfig(); builder.withDetail(FAILURE_RATE, metrics.getFailureRate() + "%") .withDetail(FAILURE_RATE_THRESHOLD, config.getFailureRateThreshold() + "%") .withDetail(MAX_BUFFERED_CALLS, metrics.getMaxNumberOfBufferedCalls()) .withDetail(BUFFERED_CALLS, metrics.getNumberOfBufferedCalls()) .withDetail(FAILED_CALLS, metrics.getNumberOfFailedCalls()) .withDetail(NOT_PERMITTED, metrics.getNumberOfNotPermittedCalls()); return builder; } }
then(health.getStatus()).isEqualTo(Status.UP); then(health.getStatus()).isEqualTo(Status.DOWN); then(health.getStatus()).isEqualTo(Status.UNKNOWN); then(health.getStatus()).isEqualTo(Status.UP); then(health.getDetails()) .contains( entry("failureRate", "0.2%"),
@Override protected void doHealthCheck(Health.Builder builder) throws Exception { try { Pod current = utils.currentPod().get(); if (current != null) { builder.up().withDetail("inside", true) .withDetail("namespace", current.getMetadata().getNamespace()) .withDetail("podName", current.getMetadata().getName()) .withDetail("podIp", current.getStatus().getPodIP()) .withDetail("serviceAccount", current.getSpec().getServiceAccountName()) .withDetail("nodeName", current.getSpec().getNodeName()) .withDetail("hostIp", current.getStatus().getHostIP()); } else { builder.up().withDetail("inside", false); } } catch (Exception e) { builder.down(e); } } }