don't fail spring application startup if sdk is disabled (#10602)
This commit is contained in:
parent
b5bbc62fa1
commit
4ed5adeb17
|
@ -16,9 +16,12 @@ public final class ExporterConfigEvaluator {
|
|||
|
||||
private ExporterConfigEvaluator() {}
|
||||
|
||||
/**
|
||||
* Returns whether the exporter is enabled. This method is used for OTLP, logging and zipkin
|
||||
* exporters.
|
||||
*/
|
||||
public static boolean isExporterEnabled(
|
||||
Environment environment, String exportersKey, String wantExporter, boolean defaultValue) {
|
||||
|
||||
String exporter = environment.getProperty(exportersKey);
|
||||
if (exporter != null) {
|
||||
return Arrays.asList(exporter.split(",")).contains(wantExporter);
|
||||
|
|
|
@ -8,6 +8,7 @@ package io.opentelemetry.instrumentation.spring.autoconfigure.exporters.logging;
|
|||
import io.opentelemetry.exporter.logging.LoggingMetricExporter;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.OpenTelemetryAutoConfiguration;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.exporters.internal.ExporterConfigEvaluator;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.SdkEnabled;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
|
@ -21,7 +22,7 @@ import org.springframework.core.type.AnnotatedTypeMetadata;
|
|||
/** Configures {@link LoggingMetricExporter} bean for tracing. */
|
||||
@Configuration
|
||||
@AutoConfigureBefore(OpenTelemetryAutoConfiguration.class)
|
||||
@Conditional(LoggingMetricExporterAutoConfiguration.CustomCondition.class)
|
||||
@Conditional({LoggingMetricExporterAutoConfiguration.CustomCondition.class, SdkEnabled.class})
|
||||
@ConditionalOnClass(LoggingMetricExporter.class)
|
||||
public class LoggingMetricExporterAutoConfiguration {
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ package io.opentelemetry.instrumentation.spring.autoconfigure.exporters.logging;
|
|||
import io.opentelemetry.exporter.logging.LoggingSpanExporter;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.OpenTelemetryAutoConfiguration;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.exporters.internal.ExporterConfigEvaluator;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.SdkEnabled;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
|
@ -21,7 +22,7 @@ import org.springframework.core.type.AnnotatedTypeMetadata;
|
|||
/** Configures {@link LoggingSpanExporter} bean for tracing. */
|
||||
@Configuration
|
||||
@AutoConfigureBefore(OpenTelemetryAutoConfiguration.class)
|
||||
@Conditional(LoggingSpanExporterAutoConfiguration.CustomCondition.class)
|
||||
@Conditional({LoggingSpanExporterAutoConfiguration.CustomCondition.class, SdkEnabled.class})
|
||||
@ConditionalOnClass(LoggingSpanExporter.class)
|
||||
public class LoggingSpanExporterAutoConfiguration {
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ package io.opentelemetry.instrumentation.spring.autoconfigure.exporters.logging;
|
|||
import io.opentelemetry.exporter.logging.SystemOutLogRecordExporter;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.OpenTelemetryAutoConfiguration;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.exporters.internal.ExporterConfigEvaluator;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.SdkEnabled;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
|
@ -21,7 +22,7 @@ import org.springframework.core.type.AnnotatedTypeMetadata;
|
|||
/** Configures {@link SystemOutLogRecordExporter} bean for tracing. */
|
||||
@Configuration
|
||||
@AutoConfigureBefore(OpenTelemetryAutoConfiguration.class)
|
||||
@Conditional(SystemOutLogRecordExporterAutoConfiguration.CustomCondition.class)
|
||||
@Conditional({SystemOutLogRecordExporterAutoConfiguration.CustomCondition.class, SdkEnabled.class})
|
||||
@ConditionalOnClass(SystemOutLogRecordExporter.class)
|
||||
public class SystemOutLogRecordExporterAutoConfiguration {
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@ import io.opentelemetry.exporter.otlp.internal.OtlpLogRecordExporterProvider;
|
|||
import io.opentelemetry.exporter.otlp.logs.OtlpGrpcLogRecordExporter;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.OpenTelemetryAutoConfiguration;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.exporters.internal.ExporterConfigEvaluator;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.SdkEnabled;
|
||||
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
|
||||
import io.opentelemetry.sdk.logs.export.LogRecordExporter;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
|
||||
|
@ -22,7 +23,7 @@ import org.springframework.context.annotation.Conditional;
|
|||
import org.springframework.core.type.AnnotatedTypeMetadata;
|
||||
|
||||
@AutoConfigureBefore(OpenTelemetryAutoConfiguration.class)
|
||||
@Conditional(OtlpLogRecordExporterAutoConfiguration.CustomCondition.class)
|
||||
@Conditional({OtlpLogRecordExporterAutoConfiguration.CustomCondition.class, SdkEnabled.class})
|
||||
@ConditionalOnClass(OtlpGrpcLogRecordExporter.class)
|
||||
public class OtlpLogRecordExporterAutoConfiguration {
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@ import io.opentelemetry.exporter.otlp.internal.OtlpMetricExporterProvider;
|
|||
import io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporter;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.OpenTelemetryAutoConfiguration;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.exporters.internal.ExporterConfigEvaluator;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.SdkEnabled;
|
||||
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
|
||||
import io.opentelemetry.sdk.metrics.export.MetricExporter;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
|
||||
|
@ -24,7 +25,7 @@ import org.springframework.core.type.AnnotatedTypeMetadata;
|
|||
|
||||
@Configuration
|
||||
@AutoConfigureBefore(OpenTelemetryAutoConfiguration.class)
|
||||
@Conditional(OtlpMetricExporterAutoConfiguration.CustomCondition.class)
|
||||
@Conditional({OtlpMetricExporterAutoConfiguration.CustomCondition.class, SdkEnabled.class})
|
||||
@ConditionalOnClass(OtlpGrpcMetricExporter.class)
|
||||
public class OtlpMetricExporterAutoConfiguration {
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@ import io.opentelemetry.exporter.otlp.internal.OtlpSpanExporterProvider;
|
|||
import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporter;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.OpenTelemetryAutoConfiguration;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.exporters.internal.ExporterConfigEvaluator;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.SdkEnabled;
|
||||
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
|
||||
import io.opentelemetry.sdk.trace.export.SpanExporter;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
|
||||
|
@ -29,7 +30,7 @@ import org.springframework.core.type.AnnotatedTypeMetadata;
|
|||
*/
|
||||
@Configuration
|
||||
@AutoConfigureBefore(OpenTelemetryAutoConfiguration.class)
|
||||
@Conditional(OtlpSpanExporterAutoConfiguration.CustomCondition.class)
|
||||
@Conditional({OtlpSpanExporterAutoConfiguration.CustomCondition.class, SdkEnabled.class})
|
||||
@ConditionalOnClass(OtlpGrpcSpanExporter.class)
|
||||
public class OtlpSpanExporterAutoConfiguration {
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ import io.opentelemetry.exporter.zipkin.ZipkinSpanExporter;
|
|||
import io.opentelemetry.exporter.zipkin.ZipkinSpanExporterBuilder;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.OpenTelemetryAutoConfiguration;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.exporters.internal.ExporterConfigEvaluator;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.SdkEnabled;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
|
@ -28,7 +29,7 @@ import org.springframework.core.type.AnnotatedTypeMetadata;
|
|||
@Configuration
|
||||
@AutoConfigureBefore(OpenTelemetryAutoConfiguration.class)
|
||||
@EnableConfigurationProperties(ZipkinSpanExporterProperties.class)
|
||||
@Conditional(ZipkinSpanExporterAutoConfiguration.CustomCondition.class)
|
||||
@Conditional({ZipkinSpanExporterAutoConfiguration.CustomCondition.class, SdkEnabled.class})
|
||||
@ConditionalOnClass(ZipkinSpanExporter.class)
|
||||
public class ZipkinSpanExporterAutoConfiguration {
|
||||
|
||||
|
|
|
@ -7,11 +7,13 @@ package io.opentelemetry.instrumentation.spring.autoconfigure.instrumentation.an
|
|||
|
||||
import io.opentelemetry.api.OpenTelemetry;
|
||||
import io.opentelemetry.instrumentation.annotations.WithSpan;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.SdkEnabled;
|
||||
import org.aspectj.lang.annotation.Aspect;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Conditional;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.core.DefaultParameterNameDiscoverer;
|
||||
import org.springframework.core.ParameterNameDiscoverer;
|
||||
|
@ -20,6 +22,7 @@ import org.springframework.core.ParameterNameDiscoverer;
|
|||
@ConditionalOnBean(OpenTelemetry.class)
|
||||
@ConditionalOnClass(Aspect.class)
|
||||
@ConditionalOnProperty(name = "otel.instrumentation.annotations.enabled", matchIfMissing = true)
|
||||
@Conditional(SdkEnabled.class)
|
||||
@Configuration
|
||||
public class InstrumentationAnnotationsAutoConfiguration {
|
||||
private final ParameterNameDiscoverer parameterNameDiscoverer =
|
||||
|
|
|
@ -7,6 +7,7 @@ package io.opentelemetry.instrumentation.spring.autoconfigure.instrumentation.jd
|
|||
|
||||
import io.opentelemetry.instrumentation.jdbc.OpenTelemetryDriver;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.OpenTelemetryInjector;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.SdkEnabled;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
|
||||
|
@ -14,12 +15,14 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
|||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Conditional;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@ConditionalOnClass(OpenTelemetryDriver.class)
|
||||
@ConditionalOnProperty(
|
||||
name = "spring.datasource.driver-class-name",
|
||||
havingValue = "io.opentelemetry.instrumentation.jdbc.OpenTelemetryDriver")
|
||||
@Conditional(SdkEnabled.class)
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@AutoConfigureAfter(
|
||||
name = "org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration")
|
||||
|
|
|
@ -7,12 +7,14 @@ package io.opentelemetry.instrumentation.spring.autoconfigure.instrumentation.ka
|
|||
|
||||
import io.opentelemetry.api.OpenTelemetry;
|
||||
import io.opentelemetry.instrumentation.kafkaclients.v2_6.KafkaTelemetry;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.SdkEnabled;
|
||||
import org.springframework.beans.factory.ObjectProvider;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.boot.autoconfigure.kafka.DefaultKafkaProducerFactoryCustomizer;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Conditional;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
|
||||
import org.springframework.kafka.core.KafkaTemplate;
|
||||
|
@ -20,6 +22,7 @@ import org.springframework.kafka.core.KafkaTemplate;
|
|||
@ConditionalOnBean(OpenTelemetry.class)
|
||||
@ConditionalOnClass({KafkaTemplate.class, ConcurrentKafkaListenerContainerFactory.class})
|
||||
@ConditionalOnProperty(name = "otel.instrumentation.kafka.enabled", matchIfMissing = true)
|
||||
@Conditional(SdkEnabled.class)
|
||||
@Configuration
|
||||
public class KafkaInstrumentationAutoConfiguration {
|
||||
|
||||
|
|
|
@ -6,16 +6,19 @@
|
|||
package io.opentelemetry.instrumentation.spring.autoconfigure.instrumentation.logging;
|
||||
|
||||
import io.opentelemetry.api.OpenTelemetry;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.SdkEnabled;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.boot.context.event.ApplicationReadyEvent;
|
||||
import org.springframework.context.ApplicationListener;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Conditional;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@ConditionalOnBean(OpenTelemetry.class)
|
||||
@Configuration
|
||||
@Conditional(SdkEnabled.class)
|
||||
@SuppressWarnings("OtelPrivateConstructorForUtilityClass")
|
||||
public class OpenTelemetryAppenderAutoConfiguration {
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ import io.micrometer.core.instrument.Clock;
|
|||
import io.micrometer.core.instrument.MeterRegistry;
|
||||
import io.opentelemetry.api.OpenTelemetry;
|
||||
import io.opentelemetry.instrumentation.micrometer.v1_5.OpenTelemetryMeterRegistry;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.SdkEnabled;
|
||||
import org.springframework.boot.actuate.autoconfigure.metrics.CompositeMeterRegistryAutoConfiguration;
|
||||
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
|
||||
|
@ -17,6 +18,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
|||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Conditional;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@AutoConfigureAfter(MetricsAutoConfiguration.class)
|
||||
|
@ -24,6 +26,7 @@ import org.springframework.context.annotation.Configuration;
|
|||
@ConditionalOnBean({Clock.class, OpenTelemetry.class})
|
||||
@ConditionalOnClass(MeterRegistry.class)
|
||||
@ConditionalOnProperty(name = "otel.instrumentation.micrometer.enabled")
|
||||
@Conditional(SdkEnabled.class)
|
||||
@Configuration
|
||||
public class MicrometerBridgeAutoConfiguration {
|
||||
|
||||
|
|
|
@ -6,11 +6,13 @@
|
|||
package io.opentelemetry.instrumentation.spring.autoconfigure.instrumentation.web;
|
||||
|
||||
import io.opentelemetry.api.OpenTelemetry;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.SdkEnabled;
|
||||
import org.springframework.beans.factory.ObjectProvider;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Conditional;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
|
@ -22,6 +24,7 @@ import org.springframework.web.client.RestTemplate;
|
|||
@ConditionalOnBean(OpenTelemetry.class)
|
||||
@ConditionalOnClass(RestTemplate.class)
|
||||
@ConditionalOnProperty(name = "otel.instrumentation.spring-web.enabled", matchIfMissing = true)
|
||||
@Conditional(SdkEnabled.class)
|
||||
@Configuration
|
||||
public class SpringWebInstrumentationAutoConfiguration {
|
||||
|
||||
|
|
|
@ -6,11 +6,13 @@
|
|||
package io.opentelemetry.instrumentation.spring.autoconfigure.instrumentation.webflux;
|
||||
|
||||
import io.opentelemetry.api.OpenTelemetry;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.SdkEnabled;
|
||||
import org.springframework.beans.factory.ObjectProvider;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Conditional;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.reactive.function.client.WebClient;
|
||||
|
||||
|
@ -22,6 +24,7 @@ import org.springframework.web.reactive.function.client.WebClient;
|
|||
@ConditionalOnBean(OpenTelemetry.class)
|
||||
@ConditionalOnClass(WebClient.class)
|
||||
@ConditionalOnProperty(name = "otel.instrumentation.spring-webflux.enabled", matchIfMissing = true)
|
||||
@Conditional(SdkEnabled.class)
|
||||
@Configuration
|
||||
public class SpringWebfluxInstrumentationAutoConfiguration {
|
||||
|
||||
|
|
|
@ -6,12 +6,14 @@
|
|||
package io.opentelemetry.instrumentation.spring.autoconfigure.instrumentation.webmvc;
|
||||
|
||||
import io.opentelemetry.api.OpenTelemetry;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.SdkEnabled;
|
||||
import io.opentelemetry.instrumentation.spring.webmvc.v5_3.SpringWebMvcTelemetry;
|
||||
import javax.servlet.Filter;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Conditional;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.filter.OncePerRequestFilter;
|
||||
import org.springframework.web.servlet.DispatcherServlet;
|
||||
|
@ -19,6 +21,7 @@ import org.springframework.web.servlet.DispatcherServlet;
|
|||
@ConditionalOnBean(OpenTelemetry.class)
|
||||
@ConditionalOnClass({Filter.class, OncePerRequestFilter.class, DispatcherServlet.class})
|
||||
@ConditionalOnProperty(name = "otel.instrumentation.spring-webmvc.enabled", matchIfMissing = true)
|
||||
@Conditional(SdkEnabled.class)
|
||||
@Configuration
|
||||
@SuppressWarnings("OtelPrivateConstructorForUtilityClass")
|
||||
public class SpringWebMvc5InstrumentationAutoConfiguration {
|
||||
|
|
|
@ -6,12 +6,14 @@
|
|||
package io.opentelemetry.instrumentation.spring.autoconfigure.instrumentation.webmvc;
|
||||
|
||||
import io.opentelemetry.api.OpenTelemetry;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.SdkEnabled;
|
||||
import io.opentelemetry.instrumentation.spring.webmvc.v6_0.SpringWebMvcTelemetry;
|
||||
import jakarta.servlet.Filter;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Conditional;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.filter.OncePerRequestFilter;
|
||||
import org.springframework.web.servlet.DispatcherServlet;
|
||||
|
@ -19,6 +21,7 @@ import org.springframework.web.servlet.DispatcherServlet;
|
|||
@ConditionalOnBean(OpenTelemetry.class)
|
||||
@ConditionalOnClass({Filter.class, OncePerRequestFilter.class, DispatcherServlet.class})
|
||||
@ConditionalOnProperty(name = "otel.instrumentation.spring-webmvc.enabled", matchIfMissing = true)
|
||||
@Conditional(SdkEnabled.class)
|
||||
@Configuration
|
||||
@SuppressWarnings("OtelPrivateConstructorForUtilityClass")
|
||||
public class SpringWebMvc6InstrumentationAutoConfiguration {
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.spring.autoconfigure.internal;
|
||||
|
||||
import org.springframework.boot.autoconfigure.condition.AnyNestedCondition;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
|
||||
/**
|
||||
* This class is internal and is hence not for public use. Its APIs are unstable and can change at
|
||||
* any time.
|
||||
*/
|
||||
public class SdkEnabled extends AnyNestedCondition {
|
||||
public SdkEnabled() {
|
||||
super(ConfigurationPhase.PARSE_CONFIGURATION);
|
||||
}
|
||||
|
||||
@ConditionalOnProperty(name = "otel.sdk.disabled", havingValue = "false", matchIfMissing = true)
|
||||
static class NotDisabled {}
|
||||
}
|
|
@ -8,6 +8,7 @@ package io.opentelemetry.instrumentation.spring.autoconfigure.propagators;
|
|||
import io.opentelemetry.context.propagation.ContextPropagators;
|
||||
import io.opentelemetry.context.propagation.TextMapPropagator;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.OpenTelemetryAutoConfiguration;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.SdkEnabled;
|
||||
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
@ -19,6 +20,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
|
|||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Conditional;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
/** Configures {@link ContextPropagators} bean for propagation. */
|
||||
|
@ -26,6 +28,7 @@ import org.springframework.context.annotation.Configuration;
|
|||
@EnableConfigurationProperties(PropagationProperties.class)
|
||||
@AutoConfigureBefore(OpenTelemetryAutoConfiguration.class)
|
||||
@ConditionalOnProperty(prefix = "otel.propagation", name = "enabled", matchIfMissing = true)
|
||||
@Conditional(SdkEnabled.class)
|
||||
public class PropagationAutoConfiguration {
|
||||
|
||||
private static final List<String> DEFAULT_PROPAGATORS = Arrays.asList("tracecontext", "baggage");
|
||||
|
|
|
@ -16,6 +16,7 @@ import io.opentelemetry.instrumentation.resources.ProcessResourceProvider;
|
|||
import io.opentelemetry.instrumentation.resources.ProcessRuntimeResource;
|
||||
import io.opentelemetry.instrumentation.resources.ProcessRuntimeResourceProvider;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.OpenTelemetryAutoConfiguration;
|
||||
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.SdkEnabled;
|
||||
import io.opentelemetry.instrumentation.spring.resources.SpringBootServiceNameDetector;
|
||||
import io.opentelemetry.instrumentation.spring.resources.SpringBootServiceVersionDetector;
|
||||
import io.opentelemetry.sdk.autoconfigure.internal.EnvironmentResourceProvider;
|
||||
|
@ -25,12 +26,14 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
|||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Conditional;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
@EnableConfigurationProperties({OtelResourceProperties.class})
|
||||
@AutoConfigureBefore(OpenTelemetryAutoConfiguration.class)
|
||||
@ConditionalOnProperty(prefix = "otel.springboot.resource", name = "enabled", matchIfMissing = true)
|
||||
@Conditional(SdkEnabled.class)
|
||||
public class OtelResourceAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.smoketest;
|
||||
|
||||
import io.opentelemetry.spring.smoketest.OtelSpringStarterSmokeTestApplication;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
@SpringBootTest(
|
||||
classes = {
|
||||
OtelSpringStarterSmokeTestApplication.class,
|
||||
OtelSpringStarterSmokeTest.TestConfiguration.class
|
||||
},
|
||||
properties = {"otel.sdk.disabled=true"})
|
||||
class OtelSpringStarterDisabledSmokeTest {
|
||||
|
||||
@Test
|
||||
void shouldStartApplication() {
|
||||
// make sure we can still start the application with the disabled property
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue