Skip to content

Commit 02939dd

Browse files
committed
agent tracer customizer
1 parent 0e6cf7e commit 02939dd

File tree

6 files changed

+62
-21
lines changed

6 files changed

+62
-21
lines changed

javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentTracerCustomizerProvider.java renamed to sdk-autoconfigure-support/src/main/java/io/opentelemetry/instrumentation/sdk/LoggingSpanExporterCustomizerProvider.java

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

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

8-
import com.google.auto.service.AutoService;
98
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
109
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfigurationCustomizer;
1110
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfigurationCustomizerProvider;
1211
import io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider;
1312
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SpanProcessorModel;
1413
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.TracerProviderModel;
1514

16-
@AutoService(DeclarativeConfigurationCustomizerProvider.class)
17-
public class AgentTracerCustomizerProvider implements DeclarativeConfigurationCustomizerProvider {
15+
public class LoggingSpanExporterCustomizerProvider implements DeclarativeConfigurationCustomizerProvider {
1816
@Override
1917
public void customize(DeclarativeConfigurationCustomizer customizer) {
2018
customizer.addModelCustomizer(
Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,12 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

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

8-
import com.google.auto.service.AutoService;
98
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
10-
import io.opentelemetry.instrumentation.thread.AddThreadDetailsSpanProcessor;
119
import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider;
1210
import io.opentelemetry.sdk.trace.SpanProcessor;
1311

14-
@SuppressWarnings("rawtypes")
15-
@AutoService(ComponentProvider.class)
1612
public class ThreadDetailsComponentProvider implements ComponentProvider<SpanProcessor> {
1713
@Override
1814
public String getName() {
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.instrumentation.thread;
7+
8+
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
9+
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfigurationCustomizer;
10+
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfigurationCustomizerProvider;
11+
import io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider;
12+
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SpanProcessorModel;
13+
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.TracerProviderModel;
14+
15+
public class ThreadDetailsCustomizerProvider implements DeclarativeConfigurationCustomizerProvider {
16+
@Override
17+
public void customize(DeclarativeConfigurationCustomizer customizer) {
18+
customizer.addModelCustomizer(
19+
model -> {
20+
DeclarativeConfigProperties properties =
21+
SdkConfigProvider.create(model).getInstrumentationConfig();
22+
if (properties == null) {
23+
properties = DeclarativeConfigProperties.empty();
24+
}
25+
DeclarativeConfigProperties java =
26+
properties.getStructured("java", DeclarativeConfigProperties.empty());
27+
if (!java.getBoolean("enabled", true)) {
28+
// todo extract this logic to a common place
29+
// todo should this be pulled out or to be reusable by spring?
30+
return model;
31+
}
32+
33+
if (java.getStructured("thread_details", DeclarativeConfigProperties.empty())
34+
.getBoolean("enabled", true)) {
35+
TracerProviderModel tracerProvider = model.getTracerProvider();
36+
if (tracerProvider != null) {
37+
tracerProvider
38+
.getProcessors()
39+
.add(new SpanProcessorModel().withAdditionalProperty("thread_details", null));
40+
}
41+
}
42+
43+
44+
// todo also add logging like in AgentTracerProviderConfigurer
45+
46+
return model;
47+
});
48+
}
49+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
io.opentelemetry.instrumentation.thread.ThreadDetailsComponentProvider
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
io.opentelemetry.instrumentation.thread.ThreadDetailsCustomizerProvider
2+
io.opentelemetry.instrumentation.sdk.LoggingSpanExporterCustomizerProvider

javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/AgentTracerComponentProviderTest.java renamed to sdk-autoconfigure-support/src/test/java/io/opentelemetry/instrumentation/thread/ThreadDetailsConfigurationCustomizerProviderTest.java

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
/*
2-
* Copyright The OpenTelemetry Authors
3-
* SPDX-License-Identifier: Apache-2.0
4-
*/
5-
6-
package io.opentelemetry.javaagent.tooling;
1+
package io.opentelemetry.instrumentation.thread;
72

83
import static org.assertj.core.api.Assertions.assertThat;
94

@@ -14,15 +9,15 @@
149
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.TracerProviderModel;
1510
import org.junit.jupiter.api.Test;
1611

17-
class AgentTracerComponentProviderTest {
12+
class ThreadDetailsConfigurationCustomizerProviderTest {
13+
1814
@Test
1915
void addSpanProcessor() {
2016
OpenTelemetryConfigurationModel model =
21-
new DeclarativeConfigurationBuilder()
22-
.customizeModel(
23-
new OpenTelemetryConfigurationModel()
24-
.withFileFormat("0.4")
25-
.withTracerProvider(new TracerProviderModel()));
17+
new DeclarativeConfigurationBuilder().customizeModel(
18+
new OpenTelemetryConfigurationModel()
19+
.withFileFormat("0.4")
20+
.withTracerProvider(new TracerProviderModel()));
2621

2722
try (OpenTelemetrySdk sdk = DeclarativeConfiguration.create(model)) {
2823
assertThat(sdk.toString()).containsOnlyOnce("AddThreadDetailsSpanProcessor");

0 commit comments

Comments
 (0)