Skip to content

Commit 759bae8

Browse files
committed
add thread details to spring starter
1 parent a7248cb commit 759bae8

File tree

19 files changed

+120
-57
lines changed

19 files changed

+120
-57
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.thread;
7+
8+
import io.opentelemetry.instrumentation.internal.thread.AddThreadDetailsSpanProcessor;
9+
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.ConditionalOnEnabledInstrumentation;
10+
import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider;
11+
import org.springframework.context.annotation.Bean;
12+
import org.springframework.context.annotation.Configuration;
13+
14+
/**
15+
* This class is internal and is hence not for public use. Its APIs are unstable and can change at
16+
* any time.
17+
*/
18+
@ConditionalOnEnabledInstrumentation(module = "common.thread-details", enabledByDefault = false)
19+
@Configuration
20+
@SuppressWarnings("OtelPrivateConstructorForUtilityClass")
21+
public class ThreadDetailsAutoConfiguration {
22+
23+
@Bean
24+
public AutoConfigurationCustomizerProvider threadDetailOtelCustomizer() {
25+
return p ->
26+
p.addTracerProviderCustomizer(
27+
(builder, config) -> {
28+
builder.addSpanProcessor(new AddThreadDetailsSpanProcessor());
29+
return builder;
30+
});
31+
}
32+
}

instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/SpringConfigProperties.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import io.opentelemetry.api.internal.ConfigUtil;
99
import io.opentelemetry.exporter.otlp.internal.OtlpConfigUtil;
10-
import io.opentelemetry.instrumentation.resources.ResourceProviderPropertiesCustomizer;
10+
import io.opentelemetry.instrumentation.internal.resources.ResourceProviderPropertiesCustomizer;
1111
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
1212
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
1313
import java.time.Duration;

instrumentation/spring/spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.w
1313
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.scheduling.SpringSchedulingInstrumentationAutoConfiguration,\
1414
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.RuntimeMetricsAutoConfiguration,\
1515
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.Java8RuntimeMetricsProvider,\
16-
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.Java17RuntimeMetricsProvider
16+
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.Java17RuntimeMetricsProvider,\
17+
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.thread.ThreadDetailsAutoConfiguration
1718

1819
org.springframework.context.ApplicationListener=\
1920
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.logging.LogbackAppenderApplicationListener

instrumentation/spring/spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,4 @@ io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.s
1414
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.RuntimeMetricsAutoConfiguration
1515
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.Java8RuntimeMetricsProvider
1616
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.Java17RuntimeMetricsProvider
17+
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.thread.ThreadDetailsAutoConfiguration

instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/OpenTelemetryAutoConfigurationTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ void specialListProperties() {
100100
"io.opentelemetry.contrib.aws.resource.LambdaResourceProvider",
101101
"io.opentelemetry.contrib.gcp.resource.GCPResourceProvider",
102102
"io.opentelemetry.contrib.cloudfoundry.resources.CloudFoundryResourceProvider",
103-
"io.opentelemetry.instrumentation.resources.ResourceProviderPropertiesCustomizerTest$Provider");
103+
"io.opentelemetry.instrumentation.internal.resources.ResourceProviderPropertiesCustomizerTest$Provider");
104104
}));
105105
}
106106

javaagent-tooling/src/test/groovy/io/opentelemetry/javaagent/tooling/AddThreadDetailsSpanProcessorTest.groovy

Lines changed: 0 additions & 35 deletions
This file was deleted.

sdk-autoconfigure-support/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@ plugins {
66
group = "io.opentelemetry.instrumentation"
77

88
dependencies {
9+
compileOnly("io.opentelemetry:opentelemetry-exporter-logging")
910
api("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure")
1011

1112
compileOnly("com.google.code.findbugs:annotations")
1213
testCompileOnly("com.google.code.findbugs:annotations")
14+
testImplementation(project(":testing-common"))
1315
}
Lines changed: 6 additions & 2 deletions
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.resources;
6+
package io.opentelemetry.instrumentation.internal.resources;
77

88
import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizer;
99
import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider;
@@ -17,6 +17,10 @@
1717
import java.util.Set;
1818
import javax.annotation.Nullable;
1919

20+
/**
21+
* This class is internal and is hence not for public use. Its APIs are unstable and can change at
22+
* any time.
23+
*/
2024
public class ResourceProviderPropertiesCustomizer implements AutoConfigurationCustomizerProvider {
2125

2226
private static final Map<String, String> DISABLED_BY_DEFAULT_RESOURCE_PROVIDERS = new HashMap<>();
@@ -49,7 +53,7 @@ public class ResourceProviderPropertiesCustomizer implements AutoConfigurationCu
4953
"cloudfoundry");
5054
// for testing
5155
DISABLED_BY_DEFAULT_RESOURCE_PROVIDERS.put(
52-
"io.opentelemetry.instrumentation.resources.ResourceProviderPropertiesCustomizerTest$Provider",
56+
"io.opentelemetry.instrumentation.internal.resources.ResourceProviderPropertiesCustomizerTest$Provider",
5357
"test");
5458
}
5559

javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AddThreadDetailsSpanProcessor.java renamed to sdk-autoconfigure-support/src/main/java/io/opentelemetry/instrumentation/internal/thread/AddThreadDetailsSpanProcessor.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,33 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.javaagent.tooling;
6+
package io.opentelemetry.instrumentation.internal.thread;
77

8+
import static io.opentelemetry.api.common.AttributeKey.longKey;
9+
import static io.opentelemetry.api.common.AttributeKey.stringKey;
10+
11+
import io.opentelemetry.api.common.AttributeKey;
812
import io.opentelemetry.context.Context;
913
import io.opentelemetry.sdk.common.CompletableResultCode;
1014
import io.opentelemetry.sdk.trace.ReadWriteSpan;
1115
import io.opentelemetry.sdk.trace.ReadableSpan;
1216
import io.opentelemetry.sdk.trace.SpanProcessor;
13-
import io.opentelemetry.semconv.incubating.ThreadIncubatingAttributes;
1417

18+
/**
19+
* This class is internal and is hence not for public use. Its APIs are unstable and can change at
20+
* any time.
21+
*/
1522
public class AddThreadDetailsSpanProcessor implements SpanProcessor {
1623

24+
// attributes are not stable yet
25+
public static final AttributeKey<Long> THREAD_ID = longKey("thread.id");
26+
public static final AttributeKey<String> THREAD_NAME = stringKey("thread.name");
27+
1728
@Override
1829
public void onStart(Context context, ReadWriteSpan span) {
1930
Thread currentThread = Thread.currentThread();
20-
span.setAttribute(ThreadIncubatingAttributes.THREAD_ID, currentThread.getId());
21-
span.setAttribute(ThreadIncubatingAttributes.THREAD_NAME, currentThread.getName());
31+
span.setAttribute(THREAD_ID, currentThread.getId());
32+
span.setAttribute(THREAD_NAME, currentThread.getName());
2233
}
2334

2435
@Override
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
io.opentelemetry.instrumentation.resources.ResourceProviderPropertiesCustomizer
1+
io.opentelemetry.instrumentation.internal.resources.ResourceProviderPropertiesCustomizer

0 commit comments

Comments
 (0)