diff --git a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/HealthSpan.java b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/HealthSpan.java new file mode 100644 index 0000000000..52cdc7b82b --- /dev/null +++ b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/HealthSpan.java @@ -0,0 +1,5 @@ +package com.appsmith.external.constants.spans; + +import com.appsmith.external.constants.spans.ce.HealthSpanCE; + +public class HealthSpan extends HealthSpanCE {} diff --git a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/HealthSpanCE.java b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/HealthSpanCE.java new file mode 100644 index 0000000000..7c13af4664 --- /dev/null +++ b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/constants/spans/ce/HealthSpanCE.java @@ -0,0 +1,10 @@ +package com.appsmith.external.constants.spans.ce; + +import com.appsmith.external.constants.spans.BaseSpan; + +public class HealthSpanCE { + + public static final String HEALTH = "health."; + public static final String MONGO_HEALTH = BaseSpan.APPSMITH_SPAN_PREFIX + HEALTH + "mongo"; + public static final String REDIS_HEALTH = BaseSpan.APPSMITH_SPAN_PREFIX + HEALTH + "redis"; +} diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/HealthCheckServiceImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/HealthCheckServiceImpl.java index 64a6614d4a..b83bc7d465 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/HealthCheckServiceImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/HealthCheckServiceImpl.java @@ -1,6 +1,7 @@ package com.appsmith.server.services; import com.appsmith.server.services.ce.HealthCheckServiceCEImpl; +import io.micrometer.observation.ObservationRegistry; import org.springframework.data.mongodb.core.ReactiveMongoTemplate; import org.springframework.data.redis.connection.ReactiveRedisConnectionFactory; import org.springframework.stereotype.Component; @@ -9,7 +10,8 @@ import org.springframework.stereotype.Component; public class HealthCheckServiceImpl extends HealthCheckServiceCEImpl implements HealthCheckService { public HealthCheckServiceImpl( ReactiveRedisConnectionFactory reactiveRedisConnectionFactory, - ReactiveMongoTemplate reactiveMongoTemplate) { - super(reactiveRedisConnectionFactory, reactiveMongoTemplate); + ReactiveMongoTemplate reactiveMongoTemplate, + ObservationRegistry observationRegistry) { + super(reactiveRedisConnectionFactory, reactiveMongoTemplate, observationRegistry); } } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/HealthCheckServiceCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/HealthCheckServiceCEImpl.java index e1059fd389..f18dcd7acf 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/HealthCheckServiceCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/HealthCheckServiceCEImpl.java @@ -2,29 +2,37 @@ package com.appsmith.server.services.ce; import com.appsmith.server.exceptions.AppsmithError; import com.appsmith.server.exceptions.AppsmithException; +import io.micrometer.observation.ObservationRegistry; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.actuate.data.mongo.MongoReactiveHealthIndicator; import org.springframework.boot.actuate.data.redis.RedisReactiveHealthIndicator; import org.springframework.boot.actuate.health.Health; import org.springframework.data.mongodb.core.ReactiveMongoTemplate; import org.springframework.data.redis.connection.ReactiveRedisConnectionFactory; +import reactor.core.observability.micrometer.Micrometer; import reactor.core.publisher.Mono; import java.time.Duration; import java.util.concurrent.TimeoutException; import java.util.function.Function; +import static com.appsmith.external.constants.spans.ce.HealthSpanCE.MONGO_HEALTH; +import static com.appsmith.external.constants.spans.ce.HealthSpanCE.REDIS_HEALTH; + @Slf4j public class HealthCheckServiceCEImpl implements HealthCheckServiceCE { private final ReactiveRedisConnectionFactory reactiveRedisConnectionFactory; private final ReactiveMongoTemplate reactiveMongoTemplate; + private final ObservationRegistry observationRegistry; public HealthCheckServiceCEImpl( ReactiveRedisConnectionFactory reactiveRedisConnectionFactory, - ReactiveMongoTemplate reactiveMongoTemplate) { + ReactiveMongoTemplate reactiveMongoTemplate, + ObservationRegistry observationRegistry) { this.reactiveRedisConnectionFactory = reactiveRedisConnectionFactory; this.reactiveMongoTemplate = reactiveMongoTemplate; + this.observationRegistry = observationRegistry; } @Override @@ -42,7 +50,9 @@ public class HealthCheckServiceCEImpl implements HealthCheckServiceCE { return redisReactiveHealthIndicator .health() .timeout(Duration.ofSeconds(3)) - .onErrorMap(TimeoutException.class, healthTimeout); + .onErrorMap(TimeoutException.class, healthTimeout) + .name(REDIS_HEALTH) + .tap(Micrometer.observation(observationRegistry)); } private Mono getMongoHealth() { @@ -55,6 +65,8 @@ public class HealthCheckServiceCEImpl implements HealthCheckServiceCE { return mongoReactiveHealthIndicator .health() .timeout(Duration.ofSeconds(1)) - .onErrorMap(TimeoutException.class, healthTimeout); + .onErrorMap(TimeoutException.class, healthTimeout) + .name(MONGO_HEALTH) + .tap(Micrometer.observation(observationRegistry)); } }