diff --git a/app/server/appsmith-server/pom.xml b/app/server/appsmith-server/pom.xml
index 033b93315bbb..e50a3e0d5b0f 100644
--- a/app/server/appsmith-server/pom.xml
+++ b/app/server/appsmith-server/pom.xml
@@ -32,7 +32,7 @@
io.opentelemetry
opentelemetry-bom
- 1.34.1
+ 1.43.0
pom
import
@@ -40,22 +40,6 @@
-
- io.opentelemetry.instrumentation
- opentelemetry-micrometer-1.5
- 2.0.0-alpha
-
-
- io.opentelemetry
- opentelemetry-sdk
- 1.34.1
-
-
- io.opentelemetry
- opentelemetry-exporter-otlp
- 1.34.1
-
-
+
io.micrometer
- micrometer-tracing-bridge-brave
- 1.3.4
+ micrometer-tracing-bridge-otel
+ 1.3.5
- io.zipkin.reporter2
- zipkin-reporter-brave
+ io.opentelemetry
+ opentelemetry-exporter-otlp
+ 1.43.0
-
-
-
-
-
-
-
org.junit.jupiter
junit-jupiter-engine
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/MetricsConfig.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/MetricsConfig.java
deleted file mode 100644
index dbddf518c23d..000000000000
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/MetricsConfig.java
+++ /dev/null
@@ -1,122 +0,0 @@
-package com.appsmith.server.configurations;
-
-import com.appsmith.server.annotations.ConditionalOnMicrometerMetricsEnabled;
-import io.micrometer.common.KeyValue;
-import io.micrometer.core.aop.TimedAspect;
-import io.micrometer.core.instrument.MeterRegistry;
-import io.micrometer.observation.ObservationFilter;
-import io.micrometer.observation.ObservationRegistry;
-import io.micrometer.observation.aop.ObservedAspect;
-import io.opentelemetry.api.OpenTelemetry;
-import io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporter;
-import io.opentelemetry.instrumentation.micrometer.v1_5.OpenTelemetryMeterRegistry;
-import io.opentelemetry.sdk.OpenTelemetrySdk;
-import io.opentelemetry.sdk.metrics.Aggregation;
-import io.opentelemetry.sdk.metrics.InstrumentType;
-import io.opentelemetry.sdk.metrics.SdkMeterProvider;
-import io.opentelemetry.sdk.metrics.export.AggregationTemporalitySelector;
-import io.opentelemetry.sdk.metrics.export.DefaultAggregationSelector;
-import io.opentelemetry.sdk.metrics.export.PeriodicMetricReader;
-import io.opentelemetry.sdk.resources.Resource;
-import lombok.RequiredArgsConstructor;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.actuate.autoconfigure.observation.ObservationRegistryCustomizer;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import java.time.Duration;
-
-/**
- * This configuration file configures beans as required by NewRelic
- */
-@RequiredArgsConstructor
-@Configuration
-public class MetricsConfig {
-
- public static final String NEW_RELIC_MICROMETER_METRICS_ENDPOINT = "https://otlp.nr-data.net:4317";
- public static final String API_KEY = "api-key";
- public static final String DEPLOYMENT_NAME_KEY = "deployment.name";
- public static final String SERVICE_INSTANCE_ID_KEY = "service.instance.id";
- public static final String SERVICE_NAME_KEY = "service.name";
- public static final String SERVICE_NAME = "appsmith-server";
- public static final String INSTRUMENTATION_PROVIDER_KEY = "instrumentation.provider";
- public static final String MICROMETER = "micrometer";
-
- @Value("${appsmith.newrelic.licensekey}")
- private String newRelicKey;
-
- @Value("${appsmith.observability.deployment.name}")
- private String deploymentName;
-
- @Value("${appsmith.observability.service.instance.id}")
- private String serviceInstanceId;
-
- private final CommonConfig commonConfig;
-
- @Bean
- @ConditionalOnMicrometerMetricsEnabled
- public TimedAspect timedAspect(MeterRegistry registry) {
- return new TimedAspect(registry);
- }
-
- @Bean
- @ConditionalOnMicrometerMetricsEnabled
- public MeterRegistry meterRegistry(OpenTelemetry openTelemetry) {
- return OpenTelemetryMeterRegistry.builder(openTelemetry).build();
- }
-
- @Bean
- @ConditionalOnMicrometerMetricsEnabled
- public OpenTelemetry openTelemetry() {
- return OpenTelemetrySdk.builder()
- .setMeterProvider(SdkMeterProvider.builder()
- .setResource(Resource.getDefault().toBuilder()
- .put(DEPLOYMENT_NAME_KEY, deploymentName)
- .put(SERVICE_NAME_KEY, SERVICE_NAME)
- // Include instrumentation.provider=micrometer to enable micrometer metrics
- // experience in New Relic
- .put(INSTRUMENTATION_PROVIDER_KEY, MICROMETER)
- .put(SERVICE_INSTANCE_ID_KEY, serviceInstanceId)
- .build())
- .registerMetricReader(PeriodicMetricReader.builder(OtlpGrpcMetricExporter.builder()
- .setEndpoint(NEW_RELIC_MICROMETER_METRICS_ENDPOINT)
- .addHeader(API_KEY, newRelicKey)
- // IMPORTANT: New Relic requires metrics to be delta temporality
-
- .setAggregationTemporalitySelector(
- AggregationTemporalitySelector.deltaPreferred())
- // Use exponential histogram aggregation for histogram instruments
- // to produce better data and compression
- .setDefaultAggregationSelector(DefaultAggregationSelector.getDefault()
- .with(
- InstrumentType.HISTOGRAM,
- Aggregation.base2ExponentialBucketHistogram()))
- .build())
- // Match default micrometer collection interval of 60 seconds
- .setInterval(Duration.ofMillis(commonConfig.getMetricsIntervalMillis()))
- .build())
- .build())
- .build();
- }
-
- @Bean
- @ConditionalOnExpression("${logging.verbose.enabled}")
- ObservedAspect observedAspect(ObservationRegistry observationRegistry) {
- return new ObservedAspect(observationRegistry);
- }
-
- @Bean
- public ObservationRegistryCustomizer observationRegistryCustomizer() {
- return registry -> registry.observationConfig().observationFilter(addGlobalTags());
- }
-
- private ObservationFilter addGlobalTags() {
- return (observation) -> {
- observation.addLowCardinalityKeyValue(KeyValue.of(DEPLOYMENT_NAME_KEY, deploymentName));
- observation.addLowCardinalityKeyValue(KeyValue.of(SERVICE_NAME_KEY, SERVICE_NAME));
- observation.addLowCardinalityKeyValue(KeyValue.of(SERVICE_INSTANCE_ID_KEY, serviceInstanceId));
- return observation;
- };
- }
-}
diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/ZipkinMicrometerTraceConfiguration.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/ZipkinMicrometerTraceConfiguration.java
deleted file mode 100644
index 7ac8b9719247..000000000000
--- a/app/server/appsmith-server/src/main/java/com/appsmith/server/configurations/ZipkinMicrometerTraceConfiguration.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.appsmith.server.configurations;
-
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinWebClientBuilderCustomizer;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-public class ZipkinMicrometerTraceConfiguration {
- public static final String DATA_FORMAT = "zipkin";
- public static final String DATA_VERSION = "2";
-
- @Value("${appsmith.newrelic.licensekey}")
- private String newRelicKey;
-
- @Bean
- public ZipkinWebClientBuilderCustomizer zipkinCustomizer() {
- return webClientBuilder -> webClientBuilder
- .defaultHeader("Api-Key", newRelicKey)
- .defaultHeader("Data-Format", DATA_FORMAT)
- .defaultHeader("Data-Format-Version", DATA_VERSION);
- }
-}
diff --git a/app/server/appsmith-server/src/main/resources/application.properties b/app/server/appsmith-server/src/main/resources/application.properties
index e1794aa238a3..915829656909 100644
--- a/app/server/appsmith-server/src/main/resources/application.properties
+++ b/app/server/appsmith-server/src/main/resources/application.properties
@@ -91,16 +91,17 @@ github_repo = ${APPSMITH_GITHUB_REPO:}
# The following configurations are to help support prometheus scraping for monitoring
management.endpoints.web.exposure.include=prometheus,metrics
management.tracing.enabled=${APPSMITH_TRACING_ENABLED:false}
-management.zipkin.tracing.endpoint=${APPSMITH_TRACING_ENDPOINT:http://localhost:9411/api/v2/spans}
+management.otlp.tracing.endpoint=${APPSMITH_NEW_RELIC_OTEL_EXPORTER_OTLP_ENDPOINT:http://localhost:4318}/v1/traces
+management.otlp.tracing.headers.api-key=${APPSMITH_NEW_RELIC_OTLP_LICENSE_KEY:}
+management.opentelemetry.resource-attributes.service.name=appsmith-server
+management.opentelemetry.resource-attributes.service.instance.id=${HOSTNAME:appsmith-0}
+management.opentelemetry.resource-attributes.deployment.name=${APPSMITH_DEPLOYMENT_NAME:self-hosted}
management.tracing.sampling.probability=${APPSMITH_SAMPLING_PROBABILITY:0.1}
management.prometheus.metrics.export.descriptions=true
management.metrics.distribution.percentiles-histogram.http.server.requests=true
# Observability and Micrometer related configs
# Keeping this license key around, until later
-appsmith.newrelic.licensekey=${APPSMITH_NEW_RELIC_OTLP_LICENSE_KEY:}
-appsmith.observability.deployment.name=${APPSMITH_DEPLOYMENT_NAME:self-hosted}
-appsmith.observability.service.instance.id=${HOSTNAME:appsmith-0}
appsmith.observability.metrics.enabled=${APPSMITH_MICROMETER_METRICS_ENABLED:false}
appsmith.observability.tracing.detail.enabled=${APPSMITH_ENABLE_TRACING_DETAIL:false}
appsmith.observability.metrics.detail.enabled=${APPSMITH_ENABLE_METRICS_DETAIL:false}