Skip to content

Commit fd8e361

Browse files
Mateusz Rzeszutektrask
Mateusz Rzeszutek
andauthored
Refactor Spring starter's instrumentation auto configuration classes (open-telemetry#8950)
Co-authored-by: Trask Stalnaker <[email protected]>
1 parent d17876e commit fd8e361

File tree

47 files changed

+544
-835
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+544
-835
lines changed

instrumentation/opentelemetry-instrumentation-annotations-1.16/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/instrumentationannotations/AnnotationInstrumentationModule.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
public class AnnotationInstrumentationModule extends InstrumentationModule {
2525

2626
public AnnotationInstrumentationModule() {
27-
super("opentelemetry-instrumentation-annotations");
27+
super("opentelemetry-instrumentation-annotations", "annotations");
2828
}
2929

3030
@Override

instrumentation/spring/spring-boot-autoconfigure/README.md

+10-10
Original file line numberDiff line numberDiff line change
@@ -398,16 +398,16 @@ If an exporter is present in the classpath during runtime and a spring bean of t
398398

399399
##### Enabling/Disabling Features
400400

401-
| Feature | Property | Default Value | ConditionalOnClass |
402-
| ---------------- | ----------------------------------- | ------------- | ---------------------- |
403-
| spring-web | otel.springboot.httpclients.enabled | `true` | RestTemplate |
404-
| spring-webmvc | otel.springboot.httpclients.enabled | `true` | OncePerRequestFilter |
405-
| spring-webflux | otel.springboot.httpclients.enabled | `true` | WebClient |
406-
| @WithSpan | otel.springboot.aspects.enabled | `true` | WithSpan, Aspect |
407-
| Otlp Exporter | otel.exporter.otlp.enabled | `true` | OtlpGrpcSpanExporter |
408-
| Jaeger Exporter | otel.exporter.jaeger.enabled | `true` | JaegerGrpcSpanExporter |
409-
| Zipkin Exporter | otel.exporter.zipkin.enabled | `true` | ZipkinSpanExporter |
410-
| Logging Exporter | otel.exporter.logging.enabled | `true` | LoggingSpanExporter |
401+
| Feature | Property | Default Value | ConditionalOnClass |
402+
|------------------|---------------------------------------------|---------------|------------------------|
403+
| spring-web | otel.instrumentation.spring-webmvc.enabled | `true` | RestTemplate |
404+
| spring-webmvc | otel.instrumentation.spring-web.enabled | `true` | OncePerRequestFilter |
405+
| spring-webflux | otel.instrumentation.spring-webflux.enabled | `true` | WebClient |
406+
| @WithSpan | otel.instrumentation.annotations.enabled | `true` | WithSpan, Aspect |
407+
| Otlp Exporter | otel.exporter.otlp.enabled | `true` | OtlpGrpcSpanExporter |
408+
| Jaeger Exporter | otel.exporter.jaeger.enabled | `true` | JaegerGrpcSpanExporter |
409+
| Zipkin Exporter | otel.exporter.zipkin.enabled | `true` | ZipkinSpanExporter |
410+
| Logging Exporter | otel.exporter.logging.enabled | `true` | LoggingSpanExporter |
411411

412412
<!-- Slf4j Log Correlation otel.springboot.loggers.slf4j.enabled true org.slf4j.MDC -->
413413

instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/aspects/TraceAspectProperties.java

-22
This file was deleted.

instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/httpclients/HttpClientsProperties.java

-27
This file was deleted.

instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/httpclients/resttemplate/RestTemplateAutoConfiguration.java

-37
This file was deleted.

instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/httpclients/webclient/WebClientAutoConfiguration.java

-37
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -3,44 +3,44 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.instrumentation.spring.autoconfigure.aspects;
6+
package io.opentelemetry.instrumentation.spring.autoconfigure.instrumentation.annotations;
77

88
import io.opentelemetry.api.OpenTelemetry;
99
import io.opentelemetry.instrumentation.annotations.WithSpan;
1010
import org.aspectj.lang.annotation.Aspect;
11+
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
1112
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
1213
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
1314
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
14-
import org.springframework.boot.context.properties.EnableConfigurationProperties;
1515
import org.springframework.context.annotation.Bean;
1616
import org.springframework.context.annotation.Configuration;
1717
import org.springframework.core.DefaultParameterNameDiscoverer;
1818
import org.springframework.core.ParameterNameDiscoverer;
1919

2020
/** Configures {@link WithSpanAspect} to trace bean methods annotated with {@link WithSpan}. */
21-
@Configuration
22-
@EnableConfigurationProperties(TraceAspectProperties.class)
23-
@ConditionalOnProperty(prefix = "otel.springboot.aspects", name = "enabled", matchIfMissing = true)
21+
@ConditionalOnBean(OpenTelemetry.class)
2422
@ConditionalOnClass(Aspect.class)
25-
public class TraceAspectAutoConfiguration {
23+
@ConditionalOnProperty(name = "otel.instrumentation.annotations.enabled", matchIfMissing = true)
24+
@Configuration
25+
public class InstrumentationAnnotationsAutoConfiguration {
2626

2727
@Bean
2828
@ConditionalOnMissingBean
29-
public ParameterNameDiscoverer parameterNameDiscoverer() {
29+
ParameterNameDiscoverer parameterNameDiscoverer() {
3030
return new DefaultParameterNameDiscoverer();
3131
}
3232

3333
@Bean
3434
@ConditionalOnClass(WithSpan.class)
35-
public InstrumentationWithSpanAspect instrumentationWithSpanAspect(
35+
InstrumentationWithSpanAspect otelInstrumentationWithSpanAspect(
3636
OpenTelemetry openTelemetry, ParameterNameDiscoverer parameterNameDiscoverer) {
3737
return new InstrumentationWithSpanAspect(openTelemetry, parameterNameDiscoverer);
3838
}
3939

4040
@Bean
4141
@SuppressWarnings("deprecation") // instrumenting deprecated class for backwards compatibility
4242
@ConditionalOnClass(io.opentelemetry.extension.annotations.WithSpan.class)
43-
public SdkExtensionWithSpanAspect sdkExtensionWithSpanAspect(
43+
SdkExtensionWithSpanAspect otelSdkExtensionWithSpanAspect(
4444
OpenTelemetry openTelemetry, ParameterNameDiscoverer parameterNameDiscoverer) {
4545
return new SdkExtensionWithSpanAspect(openTelemetry, parameterNameDiscoverer);
4646
}
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.instrumentation.spring.autoconfigure.aspects;
6+
package io.opentelemetry.instrumentation.spring.autoconfigure.instrumentation.annotations;
77

88
import io.opentelemetry.api.OpenTelemetry;
99
import org.aspectj.lang.ProceedingJoinPoint;
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.instrumentation.spring.autoconfigure.aspects;
6+
package io.opentelemetry.instrumentation.spring.autoconfigure.instrumentation.annotations;
77

88
import io.opentelemetry.api.trace.SpanKind;
99
import io.opentelemetry.instrumentation.annotations.WithSpan;
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.instrumentation.spring.autoconfigure.aspects;
6+
package io.opentelemetry.instrumentation.spring.autoconfigure.instrumentation.annotations;
77

88
import io.opentelemetry.instrumentation.api.instrumenter.code.CodeAttributesGetter;
99

Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.instrumentation.spring.autoconfigure.aspects;
6+
package io.opentelemetry.instrumentation.spring.autoconfigure.instrumentation.annotations;
77

88
import io.opentelemetry.api.OpenTelemetry;
99
import org.aspectj.lang.ProceedingJoinPoint;
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.instrumentation.spring.autoconfigure.aspects;
6+
package io.opentelemetry.instrumentation.spring.autoconfigure.instrumentation.annotations;
77

88
import io.opentelemetry.api.OpenTelemetry;
99
import io.opentelemetry.api.trace.Span;
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.instrumentation.spring.autoconfigure.aspects;
6+
package io.opentelemetry.instrumentation.spring.autoconfigure.instrumentation.annotations;
77

88
import io.opentelemetry.instrumentation.annotations.SpanAttribute;
99
import io.opentelemetry.instrumentation.api.annotation.support.ParameterAttributeNamesExtractor;
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.instrumentation.spring.autoconfigure.kafka;
6+
package io.opentelemetry.instrumentation.spring.autoconfigure.instrumentation.kafka;
77

88
import io.opentelemetry.api.OpenTelemetry;
99
import io.opentelemetry.instrumentation.spring.kafka.v2_7.SpringKafkaTelemetry;
Original file line numberDiff line numberDiff line change
@@ -3,35 +3,35 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.instrumentation.spring.autoconfigure.kafka;
6+
package io.opentelemetry.instrumentation.spring.autoconfigure.instrumentation.kafka;
77

88
import io.opentelemetry.api.OpenTelemetry;
99
import io.opentelemetry.instrumentation.kafkaclients.v2_6.KafkaTelemetry;
10+
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
1011
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
1112
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
1213
import org.springframework.boot.autoconfigure.kafka.DefaultKafkaProducerFactoryCustomizer;
13-
import org.springframework.boot.context.properties.EnableConfigurationProperties;
1414
import org.springframework.context.annotation.Bean;
1515
import org.springframework.context.annotation.Configuration;
1616
import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
1717
import org.springframework.kafka.core.KafkaTemplate;
1818

19-
@Configuration
20-
@EnableConfigurationProperties(KafkaInstrumentationProperties.class)
21-
@ConditionalOnProperty(name = "otel.springboot.kafka.enabled", matchIfMissing = true)
19+
@ConditionalOnBean(OpenTelemetry.class)
2220
@ConditionalOnClass({KafkaTemplate.class, ConcurrentKafkaListenerContainerFactory.class})
21+
@ConditionalOnProperty(name = "otel.instrumentation.kafka.enabled", matchIfMissing = true)
22+
@Configuration
2323
public class KafkaInstrumentationAutoConfiguration {
2424

2525
@Bean
26-
public DefaultKafkaProducerFactoryCustomizer producerInstrumentation(
26+
DefaultKafkaProducerFactoryCustomizer otelKafkaProducerFactoryCustomizer(
2727
OpenTelemetry openTelemetry) {
2828
KafkaTelemetry kafkaTelemetry = KafkaTelemetry.create(openTelemetry);
2929
return producerFactory -> producerFactory.addPostProcessor(kafkaTelemetry::wrap);
3030
}
3131

3232
@Bean
33-
public ConcurrentKafkaListenerContainerFactoryPostProcessor
34-
concurrentKafkaListenerContainerFactoryPostProcessor(OpenTelemetry openTelemetry) {
33+
ConcurrentKafkaListenerContainerFactoryPostProcessor
34+
otelKafkaListenerContainerFactoryBeanPostProcessor(OpenTelemetry openTelemetry) {
3535
return new ConcurrentKafkaListenerContainerFactoryPostProcessor(openTelemetry);
3636
}
3737
}
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.instrumentation.spring.autoconfigure.logging;
6+
package io.opentelemetry.instrumentation.spring.autoconfigure.instrumentation.logging;
77

88
import io.opentelemetry.api.OpenTelemetry;
99
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
@@ -14,19 +14,16 @@
1414
import org.springframework.context.annotation.Bean;
1515
import org.springframework.context.annotation.Configuration;
1616

17+
@ConditionalOnBean(OpenTelemetry.class)
1718
@Configuration
1819
@SuppressWarnings("OtelPrivateConstructorForUtilityClass")
19-
@ConditionalOnBean(OpenTelemetry.class)
2020
public class OpenTelemetryAppenderAutoConfiguration {
2121

22-
@Configuration
22+
@ConditionalOnClass(org.apache.logging.log4j.core.LoggerContext.class)
2323
@ConditionalOnProperty(
24-
prefix = "otel.springboot.log4j-appender",
25-
name = "enabled",
24+
name = "otel.instrumentation.log4j-appender.enabled",
2625
matchIfMissing = true)
27-
@ConditionalOnClass({
28-
io.opentelemetry.instrumentation.log4j.appender.v2_17.OpenTelemetryAppender.class
29-
})
26+
@Configuration
3027
static class Log4jAppenderConfig {
3128

3229
@Bean
@@ -39,14 +36,11 @@ ApplicationListener<ApplicationReadyEvent> log4jOtelAppenderInitializer(
3936
}
4037
}
4138

42-
@Configuration
39+
@ConditionalOnClass(ch.qos.logback.classic.LoggerContext.class)
4340
@ConditionalOnProperty(
44-
prefix = "otel.springboot.logback-appender",
45-
name = "enabled",
41+
name = "otel.instrumentation.logback-appender.enabled",
4642
matchIfMissing = true)
47-
@ConditionalOnClass({
48-
io.opentelemetry.instrumentation.logback.appender.v1_0.OpenTelemetryAppender.class
49-
})
43+
@Configuration
5044
static class LogbackAppenderConfig {
5145

5246
@Bean

0 commit comments

Comments
 (0)