diff --git a/src/main/java/net/siegeln/cameleer/saas/observability/ConnectivityHealthCheck.java b/src/main/java/net/siegeln/cameleer/saas/observability/ConnectivityHealthCheck.java new file mode 100644 index 0000000..e8e109b --- /dev/null +++ b/src/main/java/net/siegeln/cameleer/saas/observability/ConnectivityHealthCheck.java @@ -0,0 +1,48 @@ +package net.siegeln.cameleer.saas.observability; + +import net.siegeln.cameleer.saas.runtime.RuntimeConfig; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; +import org.springframework.web.client.RestClient; + +@Component +public class ConnectivityHealthCheck { + + private static final Logger log = LoggerFactory.getLogger(ConnectivityHealthCheck.class); + + private final RuntimeConfig runtimeConfig; + + public ConnectivityHealthCheck(RuntimeConfig runtimeConfig) { + this.runtimeConfig = runtimeConfig; + } + + @EventListener(ApplicationReadyEvent.class) + public void verifyConnectivity() { + checkCameleer3Server(); + } + + private void checkCameleer3Server() { + try { + var client = RestClient.builder() + .baseUrl(runtimeConfig.getCameleer3ServerEndpoint()) + .build(); + var response = client.get() + .uri("/actuator/health") + .retrieve() + .toBodilessEntity(); + if (response.getStatusCode().is2xxSuccessful()) { + log.info("cameleer3-server connectivity: OK ({})", + runtimeConfig.getCameleer3ServerEndpoint()); + } else { + log.warn("cameleer3-server connectivity: HTTP {} ({})", + response.getStatusCode(), runtimeConfig.getCameleer3ServerEndpoint()); + } + } catch (Exception e) { + log.warn("cameleer3-server connectivity: FAILED ({}) - {}", + runtimeConfig.getCameleer3ServerEndpoint(), e.getMessage()); + } + } +}