@Override protected void doHealthCheck(Builder builder) throws Exception { RefreshScope refreshScope = this.scope.getIfAvailable(); if (refreshScope != null) { Map<String, Exception> errors = new HashMap<>(refreshScope.getErrors()); errors.putAll(this.rebinder.getErrors()); if (errors.isEmpty()) { builder.up(); } else { builder.down(); if (errors.size() == 1) { builder.withException(errors.values().iterator().next()); } else { for (String name : errors.keySet()) { builder.withDetail(name, errors.get(name)); } } } } }
@Override public final Health health() { Health.Builder builder = new Health.Builder(); try { doHealthCheck(builder); } catch (Exception ex) { if (this.logger.isWarnEnabled()) { String message = this.healthCheckFailedMessage.apply(ex); this.logger.warn(StringUtils.hasText(message) ? message : DEFAULT_MESSAGE, ex); } builder.down(ex); } return builder.build(); }
val statistics = getStatistics(); if (statistics == null || statistics.length == 0) { builder.outOfService().withDetail("message", "Cache statistics are not available."); return; builder.outOfService(); } else if (statuses.contains(Status.DOWN)) { builder.down(); } else if (statuses.contains(new Status("WARN"))) { builder.status("WARN"); } else { builder.up(); map.put("evictions", s.getEvictions()); map.put("percentFree", s.getPercentFree()); builder.withDetail(s.getName(), map); }); } catch (final Exception e) { LOGGER.error(e.getMessage(), e); builder.down(e);
@SuppressWarnings("unchecked") @Override protected void doHealthCheck(Health.Builder builder) throws Exception { URI uri = this.properties.getHealthUri(); if (uri == null) { builder.up(); return; } Map<String, Object> map = restTemplate.getForObject(uri, Map.class); Object status = map.get("status"); if (status instanceof String) { builder.status(status.toString()); } else if (status instanceof Map) { Map<String, Object> statusMap = (Map<String, Object>) status; Object code = statusMap.get("code"); if (code != null) { builder.status(code.toString()); } else { getWarning(builder); } } else { getWarning(builder); } }
@Override protected void doHealthCheck(Builder builder) throws Exception { List<String> openCircuitBreakers = new ArrayList<>(); // Collect all open circuit breakers from Hystrix for (HystrixCommandMetrics metrics : HystrixCommandMetrics.getInstances()) { HystrixCircuitBreaker circuitBreaker = HystrixCircuitBreaker.Factory .getInstance(metrics.getCommandKey()); if (circuitBreaker != null && circuitBreaker.isOpen()) { openCircuitBreakers.add(metrics.getCommandGroup().name() + "::" + metrics.getCommandKey().name()); } } // If there is at least one open circuit report OUT_OF_SERVICE adding the command // group // and key name if (!openCircuitBreakers.isEmpty()) { builder.status(CIRCUIT_OPEN).withDetail("openCircuitBreakers", openCircuitBreakers); } else { builder.up(); } }
@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 public Health health() { Health.Builder builder = new Health.Builder(); if (this.discoveryInitialized.get()) { try { DiscoveryClient client = this.discoveryClient.getIfAvailable(); List<String> services = client.getServices(); String description = (this.properties.isIncludeDescription()) ? client.description() : ""; builder.status(new Status("UP", description)) .withDetail("services", services); } catch (Exception e) { log.error("Error", e); builder.down(e); } } else { builder.status(new Status(Status.UNKNOWN.getCode(), "Discovery Client not initialized")); } return builder.build(); }
public Health doHealthCheck() { boolean allPassed = true; Health.Builder builder = new Health.Builder(); for (ComponentInfo componentInfo : sofaRuntimeContext.getComponentManager().getComponents()) { HealthResult healthy = componentInfo.isHealthy(); if (healthy.isHealthy()) { builder.withDetail(healthy.getHealthName(), "passed"); } else { builder.withDetail(healthy.getHealthName(), healthy.getHealthReport()); allPassed = false; } } if (allPassed) { return builder.status(Status.UP).build(); } else { return builder.status(Status.DOWN).build(); } } }
/** * 健康检查 * * @param applicationContext Spring 上下文 * @return 健康检查结果 */ @Override public Health onHealthy(ApplicationContext applicationContext) { Health.Builder builder = new Health.Builder(); //rpc 开始启动事件监听器 applicationContext.publishEvent(new SofaBootRpcStartEvent(applicationContext)); //rpc 启动完毕事件监听器 applicationContext.publishEvent(new SofaBootRpcStartAfterEvent(applicationContext)); return builder.status(Status.UP).build(); }
@Override protected void doHealthCheck(final Health.Builder builder) throws Exception { logger.debug("Reading Event Store for health check"); ReadAllEventsCompleted res = completeFuture(connection.readAllEventsBackward( Position.Last$.MODULE$, 1, false, null)); logger.debug("Event store successfully pinged"); builder .status(Status.UP) .withDetail("position", res.position().toString()); }
@Override public Mono<Health> health() { Health.Builder builder = new Health.Builder(); if (curator.getZookeeperClient().isConnected()) { builder.up(); } else { builder.down(); } return Mono.just(builder.build()); } }
@Override protected void doHealthCheck(Health.Builder builder) throws Exception { int code = check(); if (code != 0) { builder.down().withDetail("code", code).withDetail("version", VERSION).build(); } builder.withDetail("code", code) .withDetail("version", VERSION).up().build(); }
@Override public Mono<Health> health() { return checkDownstreamServiceHealth().onErrorResume( ex -> Mono.just(new Health.Builder().down(ex).build()) ); }
@Override protected void doHealthCheck(Builder builder) throws Exception { builder.status(Status.UP); builder.withDetail("hello", "world"); }
@Override protected void doHealthCheck(Builder builder) throws Exception { boolean active = jobExecutor.isActive(); if (active) { builder = builder.up(); } else { builder = builder.down(); } builder.withDetail("jobExecutor", Details.from(jobExecutor)); }
@Override protected void doHealthCheck(Builder builder) throws Exception { boolean active = jobExecutor.isActive(); if (active) { builder = builder.up(); } else { builder = builder.down(); } builder.withDetail("jobExecutor", Details.from(jobExecutor)); }
@Override protected void doHealthCheck(final Health.Builder builder) throws Exception { logger.debug("Reading Event Store for health check"); AllEventsSlice res = completeReadFuture( eventStore.readAllEventsBackward(Position.END, 1, false)); logger.debug("Event store successfully pinged"); builder .status(Status.UP) .withDetail("position", res.nextPosition.toString()); }
@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(); }