Skip to content

Commit 81fb2d7

Browse files
committed
add http server builder
1 parent fdc9047 commit 81fb2d7

File tree

2 files changed

+17
-77
lines changed

2 files changed

+17
-77
lines changed

instrumentation/tomcat/tomcat-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tomcat/common/TomcatInstrumenterFactory.java

Lines changed: 8 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,12 @@
55

66
package io.opentelemetry.javaagent.instrumentation.tomcat.common;
77

8-
import io.opentelemetry.api.GlobalOpenTelemetry;
9-
import io.opentelemetry.instrumentation.api.incubator.semconv.http.HttpExperimentalAttributesExtractor;
10-
import io.opentelemetry.instrumentation.api.incubator.semconv.http.HttpServerExperimentalMetrics;
118
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
12-
import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
13-
import io.opentelemetry.instrumentation.api.semconv.http.HttpServerAttributesExtractor;
14-
import io.opentelemetry.instrumentation.api.semconv.http.HttpServerMetrics;
15-
import io.opentelemetry.instrumentation.api.semconv.http.HttpServerRoute;
16-
import io.opentelemetry.instrumentation.api.semconv.http.HttpSpanNameExtractor;
17-
import io.opentelemetry.instrumentation.api.semconv.http.HttpSpanStatusExtractor;
18-
import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig;
9+
import io.opentelemetry.javaagent.bootstrap.internal.JavaagentHttpServerInstrumenterBuilder;
1910
import io.opentelemetry.javaagent.bootstrap.servlet.AppServerBridge;
2011
import io.opentelemetry.javaagent.instrumentation.servlet.ServletAccessor;
2112
import io.opentelemetry.javaagent.instrumentation.servlet.ServletErrorCauseExtractor;
13+
import java.util.Optional;
2214
import org.apache.coyote.Request;
2315
import org.apache.coyote.Response;
2416

@@ -28,39 +20,17 @@ private TomcatInstrumenterFactory() {}
2820

2921
public static <REQUEST, RESPONSE> Instrumenter<Request, Response> create(
3022
String instrumentationName, ServletAccessor<REQUEST, RESPONSE> accessor) {
31-
TomcatHttpAttributesGetter httpAttributesGetter = new TomcatHttpAttributesGetter();
32-
33-
InstrumenterBuilder<Request, Response> builder =
34-
Instrumenter.<Request, Response>builder(
35-
GlobalOpenTelemetry.get(),
36-
instrumentationName,
37-
HttpSpanNameExtractor.builder(httpAttributesGetter)
38-
.setKnownMethods(AgentCommonConfig.get().getKnownHttpRequestMethods())
39-
.build())
40-
.setSpanStatusExtractor(HttpSpanStatusExtractor.create(httpAttributesGetter))
41-
.setErrorCauseExtractor(new ServletErrorCauseExtractor<>(accessor))
42-
.addAttributesExtractor(
43-
HttpServerAttributesExtractor.builder(httpAttributesGetter)
44-
.setCapturedRequestHeaders(AgentCommonConfig.get().getServerRequestHeaders())
45-
.setCapturedResponseHeaders(AgentCommonConfig.get().getServerResponseHeaders())
46-
.setKnownMethods(AgentCommonConfig.get().getKnownHttpRequestMethods())
47-
.build())
48-
.addContextCustomizer(
49-
HttpServerRoute.builder(httpAttributesGetter)
50-
.setKnownMethods(AgentCommonConfig.get().getKnownHttpRequestMethods())
51-
.build())
23+
return JavaagentHttpServerInstrumenterBuilder.createWithCustomizer(
24+
instrumentationName,
25+
new TomcatHttpAttributesGetter(),
26+
Optional.of(TomcatRequestGetter.INSTANCE),
27+
builder -> builder.setErrorCauseExtractor(new ServletErrorCauseExtractor<>(accessor))
5228
.addContextCustomizer(
5329
(context, request, attributes) ->
5430
new AppServerBridge.Builder()
5531
.captureServletAttributes()
5632
.recordException()
5733
.init(context))
58-
.addOperationMetrics(HttpServerMetrics.get());
59-
if (AgentCommonConfig.get().shouldEmitExperimentalHttpServerTelemetry()) {
60-
builder
61-
.addAttributesExtractor(HttpExperimentalAttributesExtractor.create(httpAttributesGetter))
62-
.addOperationMetrics(HttpServerExperimentalMetrics.get());
63-
}
64-
return builder.buildServerInstrumenter(TomcatRequestGetter.INSTANCE);
34+
);
6535
}
6636
}

instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowSingletons.java

Lines changed: 9 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -5,48 +5,25 @@
55

66
package io.opentelemetry.javaagent.instrumentation.undertow;
77

8-
import io.opentelemetry.api.GlobalOpenTelemetry;
9-
import io.opentelemetry.instrumentation.api.incubator.semconv.http.HttpExperimentalAttributesExtractor;
10-
import io.opentelemetry.instrumentation.api.incubator.semconv.http.HttpServerExperimentalMetrics;
118
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
12-
import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
13-
import io.opentelemetry.instrumentation.api.semconv.http.HttpServerAttributesExtractor;
14-
import io.opentelemetry.instrumentation.api.semconv.http.HttpServerMetrics;
15-
import io.opentelemetry.instrumentation.api.semconv.http.HttpServerRoute;
16-
import io.opentelemetry.instrumentation.api.semconv.http.HttpSpanNameExtractor;
17-
import io.opentelemetry.instrumentation.api.semconv.http.HttpSpanStatusExtractor;
18-
import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig;
9+
import io.opentelemetry.javaagent.bootstrap.internal.JavaagentHttpServerInstrumenterBuilder;
1910
import io.opentelemetry.javaagent.bootstrap.servlet.AppServerBridge;
2011
import io.opentelemetry.javaagent.bootstrap.undertow.UndertowActiveHandlers;
2112
import io.undertow.server.HttpServerExchange;
13+
import java.util.Optional;
2214

2315
public final class UndertowSingletons {
2416
private static final String INSTRUMENTATION_NAME = "io.opentelemetry.undertow-1.4";
2517

2618
private static final Instrumenter<HttpServerExchange, HttpServerExchange> INSTRUMENTER;
2719

2820
static {
29-
UndertowHttpAttributesGetter httpAttributesGetter = new UndertowHttpAttributesGetter();
30-
31-
InstrumenterBuilder<HttpServerExchange, HttpServerExchange> builder =
32-
Instrumenter.<HttpServerExchange, HttpServerExchange>builder(
33-
GlobalOpenTelemetry.get(),
34-
INSTRUMENTATION_NAME,
35-
HttpSpanNameExtractor.builder(httpAttributesGetter)
36-
.setKnownMethods(AgentCommonConfig.get().getKnownHttpRequestMethods())
37-
.build())
38-
.setSpanStatusExtractor(HttpSpanStatusExtractor.create(httpAttributesGetter))
39-
.addAttributesExtractor(
40-
HttpServerAttributesExtractor.builder(httpAttributesGetter)
41-
.setCapturedRequestHeaders(AgentCommonConfig.get().getServerRequestHeaders())
42-
.setCapturedResponseHeaders(AgentCommonConfig.get().getServerResponseHeaders())
43-
.setKnownMethods(AgentCommonConfig.get().getKnownHttpRequestMethods())
44-
.build())
45-
.addContextCustomizer(
46-
HttpServerRoute.builder(httpAttributesGetter)
47-
.setKnownMethods(AgentCommonConfig.get().getKnownHttpRequestMethods())
48-
.build())
49-
.addContextCustomizer(
21+
INSTRUMENTER =
22+
JavaagentHttpServerInstrumenterBuilder.createWithCustomizer(
23+
INSTRUMENTATION_NAME,
24+
new UndertowHttpAttributesGetter(),
25+
Optional.of(UndertowExchangeGetter.INSTANCE),
26+
builder -> builder.addContextCustomizer(
5027
(context, request, attributes) -> {
5128
// span is ended when counter reaches 0, we start from 2 which accounts for the
5229
// handler that started the span and exchange completion listener
@@ -56,14 +33,7 @@ public final class UndertowSingletons {
5633
.captureServletAttributes()
5734
.recordException()
5835
.init(context);
59-
})
60-
.addOperationMetrics(HttpServerMetrics.get());
61-
if (AgentCommonConfig.get().shouldEmitExperimentalHttpServerTelemetry()) {
62-
builder
63-
.addAttributesExtractor(HttpExperimentalAttributesExtractor.create(httpAttributesGetter))
64-
.addOperationMetrics(HttpServerExperimentalMetrics.get());
65-
}
66-
INSTRUMENTER = builder.buildServerInstrumenter(UndertowExchangeGetter.INSTANCE);
36+
}));
6737
}
6838

6939
private static final UndertowHelper HELPER = new UndertowHelper(INSTRUMENTER);

0 commit comments

Comments
 (0)