From ae152651fb1c74f916cabb79e5a0a4a211cc0dc9 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Thu, 16 Oct 2025 14:22:41 +0200 Subject: [PATCH 1/3] fix micrometer bridge --- .../micrometer/MicrometerBridgeAutoConfiguration.java | 2 +- .../spring-boot-common/src/main/resources/application.yaml | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/micrometer/MicrometerBridgeAutoConfiguration.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/micrometer/MicrometerBridgeAutoConfiguration.java index 703051d24146..670f09d1cd0a 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/micrometer/MicrometerBridgeAutoConfiguration.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/micrometer/MicrometerBridgeAutoConfiguration.java @@ -24,7 +24,7 @@ * any time. */ @ConditionalOnEnabledInstrumentation(module = "micrometer", enabledByDefault = false) -@AutoConfigureAfter(MetricsAutoConfiguration.class) +@AutoConfigureAfter({MetricsAutoConfiguration.class, OpenTelemetryAutoConfiguration.class}) @AutoConfigureBefore(CompositeMeterRegistryAutoConfiguration.class) @ConditionalOnBean(Clock.class) @ConditionalOnClass(MeterRegistry.class) diff --git a/smoke-tests-otel-starter/spring-boot-common/src/main/resources/application.yaml b/smoke-tests-otel-starter/spring-boot-common/src/main/resources/application.yaml index 4da76f769a0d..e90cccdb66c6 100644 --- a/smoke-tests-otel-starter/spring-boot-common/src/main/resources/application.yaml +++ b/smoke-tests-otel-starter/spring-boot-common/src/main/resources/application.yaml @@ -8,6 +8,8 @@ otel: logback-appender: experimental: capture-code-attributes: true + micrometer: + enabled: true http: client: emit-experimental-telemetry: true From 8748096b57698222be566c632f6f709bf4ce995b Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Thu, 16 Oct 2025 14:58:32 +0200 Subject: [PATCH 2/3] fix micrometer bridge --- .../micrometer/MicrometerBridgeAutoConfiguration.java | 1 + 1 file changed, 1 insertion(+) diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/micrometer/MicrometerBridgeAutoConfiguration.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/micrometer/MicrometerBridgeAutoConfiguration.java index 670f09d1cd0a..89e5c21032e7 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/micrometer/MicrometerBridgeAutoConfiguration.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/micrometer/MicrometerBridgeAutoConfiguration.java @@ -9,6 +9,7 @@ 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.OpenTelemetryAutoConfiguration; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.ConditionalOnEnabledInstrumentation; import org.springframework.boot.actuate.autoconfigure.metrics.CompositeMeterRegistryAutoConfiguration; import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration; From c04f139b1a39ba3f78d92695fbaddcee03c653ff Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Thu, 16 Oct 2025 17:48:45 +0200 Subject: [PATCH 3/3] add test --- .../spring-boot-2/build.gradle.kts | 1 + .../spring/smoketest/OtelSpringStarterSmokeTest.java | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/smoke-tests-otel-starter/spring-boot-2/build.gradle.kts b/smoke-tests-otel-starter/spring-boot-2/build.gradle.kts index a48842a73e42..3aed6f536441 100644 --- a/smoke-tests-otel-starter/spring-boot-2/build.gradle.kts +++ b/smoke-tests-otel-starter/spring-boot-2/build.gradle.kts @@ -7,6 +7,7 @@ description = "smoke-tests-otel-starter-spring-boot-2" dependencies { implementation("org.springframework.boot:spring-boot-starter-web") implementation("org.springframework.boot:spring-boot-starter-data-jdbc") + implementation("org.springframework.boot:spring-boot-starter-actuator") runtimeOnly("com.h2database:h2") implementation("org.apache.commons:commons-dbcp2") implementation("org.springframework.kafka:spring-kafka") diff --git a/smoke-tests-otel-starter/spring-boot-2/src/test/java/io/opentelemetry/spring/smoketest/OtelSpringStarterSmokeTest.java b/smoke-tests-otel-starter/spring-boot-2/src/test/java/io/opentelemetry/spring/smoketest/OtelSpringStarterSmokeTest.java index f911cc5aea78..95d86d5d4dc2 100644 --- a/smoke-tests-otel-starter/spring-boot-2/src/test/java/io/opentelemetry/spring/smoketest/OtelSpringStarterSmokeTest.java +++ b/smoke-tests-otel-starter/spring-boot-2/src/test/java/io/opentelemetry/spring/smoketest/OtelSpringStarterSmokeTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.spring.smoketest; +import org.assertj.core.api.AbstractIterableAssert; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest( @@ -20,4 +21,11 @@ "otel.instrumentation.runtime-telemetry.emit-experimental-telemetry=true", "otel.instrumentation.common.thread_details.enabled=true", }) -class OtelSpringStarterSmokeTest extends AbstractOtelSpringStarterSmokeTest {} +class OtelSpringStarterSmokeTest extends AbstractOtelSpringStarterSmokeTest { + + @Override + protected void assertAdditionalMetrics() { + testing.waitAndAssertMetrics( + "io.opentelemetry.micrometer-1.5", "disk.total", AbstractIterableAssert::isNotEmpty); + } +}