spring boot starter: add service.version detection, improve service.name detection (#10457)

This commit is contained in:
Gregor Zeitlinger 2024-02-21 21:46:58 +01:00 committed by GitHub
parent 9eb73127ca
commit 1cd768e294
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 20 additions and 0 deletions

View File

@ -46,6 +46,7 @@ dependencies {
compileOnly(project(":instrumentation-annotations")) compileOnly(project(":instrumentation-annotations"))
compileOnly(project(":instrumentation:resources:library")) compileOnly(project(":instrumentation:resources:library"))
compileOnly(project(":instrumentation:spring:spring-boot-resources:library"))
annotationProcessor("com.google.auto.service:auto-service") annotationProcessor("com.google.auto.service:auto-service")
compileOnly("com.google.auto.service:auto-service-annotations") compileOnly("com.google.auto.service:auto-service-annotations")
@ -60,6 +61,7 @@ dependencies {
testImplementation("io.opentelemetry:opentelemetry-sdk") testImplementation("io.opentelemetry:opentelemetry-sdk")
testImplementation("io.opentelemetry:opentelemetry-sdk-testing") testImplementation("io.opentelemetry:opentelemetry-sdk-testing")
testImplementation(project(":instrumentation:resources:library")) testImplementation(project(":instrumentation:resources:library"))
testImplementation(project(":instrumentation:spring:spring-boot-resources:library"))
testImplementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi") testImplementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi")
testImplementation("io.opentelemetry:opentelemetry-extension-trace-propagators") testImplementation("io.opentelemetry:opentelemetry-extension-trace-propagators")
testImplementation("io.opentelemetry.contrib:opentelemetry-aws-xray-propagator") testImplementation("io.opentelemetry.contrib:opentelemetry-aws-xray-propagator")

View File

@ -16,6 +16,8 @@ import io.opentelemetry.instrumentation.resources.ProcessResourceProvider;
import io.opentelemetry.instrumentation.resources.ProcessRuntimeResource; import io.opentelemetry.instrumentation.resources.ProcessRuntimeResource;
import io.opentelemetry.instrumentation.resources.ProcessRuntimeResourceProvider; import io.opentelemetry.instrumentation.resources.ProcessRuntimeResourceProvider;
import io.opentelemetry.instrumentation.spring.autoconfigure.OpenTelemetryAutoConfiguration; import io.opentelemetry.instrumentation.spring.autoconfigure.OpenTelemetryAutoConfiguration;
import io.opentelemetry.instrumentation.spring.resources.SpringBootServiceNameDetector;
import io.opentelemetry.instrumentation.spring.resources.SpringBootServiceVersionDetector;
import io.opentelemetry.sdk.autoconfigure.internal.EnvironmentResourceProvider; import io.opentelemetry.sdk.autoconfigure.internal.EnvironmentResourceProvider;
import io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider; import io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider;
import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.AutoConfigureBefore;
@ -46,6 +48,18 @@ public class OtelResourceAutoConfiguration {
return new DistroVersionResourceProvider(); return new DistroVersionResourceProvider();
} }
@Bean
@ConditionalOnClass(SpringBootServiceNameDetector.class)
public ResourceProvider otelSpringBootServiceNameResourceProvider() {
return new SpringBootServiceNameDetector();
}
@Bean
@ConditionalOnClass(SpringBootServiceVersionDetector.class)
public ResourceProvider otelSpringBootServiceVersionResourceProvider() {
return new SpringBootServiceVersionDetector();
}
@Bean @Bean
@ConditionalOnClass(OsResource.class) @ConditionalOnClass(OsResource.class)
public ResourceProvider otelOsResourceProvider() { public ResourceProvider otelOsResourceProvider() {

View File

@ -45,6 +45,9 @@ import org.snakeyaml.engine.v2.api.LoadSettings;
* <li>Check for --spring.application.name program argument (not jvm arg) via ProcessHandle * <li>Check for --spring.application.name program argument (not jvm arg) via ProcessHandle
* <li>Check for --spring.application.name program argument via sun.java.command system property * <li>Check for --spring.application.name program argument via sun.java.command system property
* </ul> * </ul>
*
* <p>Note: should not be used inside a spring application, where the spring.application.name is
* already available.
*/ */
@AutoService(ResourceProvider.class) @AutoService(ResourceProvider.class)
public class SpringBootServiceNameDetector implements ConditionalResourceProvider { public class SpringBootServiceNameDetector implements ConditionalResourceProvider {

View File

@ -14,6 +14,7 @@ dependencies {
api(project(":instrumentation:spring:spring-boot-autoconfigure")) api(project(":instrumentation:spring:spring-boot-autoconfigure"))
api(project(":instrumentation-annotations")) api(project(":instrumentation-annotations"))
implementation(project(":instrumentation:resources:library")) implementation(project(":instrumentation:resources:library"))
implementation(project(":instrumentation:spring:spring-boot-resources:library"))
api("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi") api("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi")
api("io.opentelemetry:opentelemetry-api") api("io.opentelemetry:opentelemetry-api")
api("io.opentelemetry:opentelemetry-exporter-logging") api("io.opentelemetry:opentelemetry-exporter-logging")