Move HttpHeadersConfig methods back to instrumentation-api (#4298)

* Move HttpHeadersConfig methods back to instrumentation-api

* remove unnecessary method
This commit is contained in:
Mateusz Rzeszutek 2021-10-06 10:51:45 +02:00 committed by GitHub
parent 441ce3d115
commit d3dbe415a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
25 changed files with 68 additions and 151 deletions

View File

@ -8,33 +8,58 @@ package io.opentelemetry.instrumentation.api.instrumenter.http;
import static java.util.Collections.emptyList;
import com.google.auto.value.AutoValue;
import io.opentelemetry.instrumentation.api.config.Config;
import java.util.List;
import java.util.Locale;
import java.util.stream.Collectors;
/**
* Represents the configuration that specifies which HTTP request/response headers should be
* captured as span attributes.
* Represents the configuration that specifies which HTTP request and response headers should be
* captured as span attributes as described in <a
* href="https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/semantic_conventions/http.md#http-request-and-response-headers">HTTP
* semantic conventions</a>.
*
* <p>The HTTP request header values will be captured under the {@code http.request.header.<name>}
* attribute key. The HTTP response header values will be captured under the {@code
* http.response.header.<name>} attribute key. The {@code <name>} part in the attribute key is the
* normalized header name: lowercase, with dashes replaced by underscores.
*/
@AutoValue
public abstract class CapturedHttpHeaders {
private static final CapturedHttpHeaders EMPTY = create(emptyList(), emptyList());
/** Don't capture any HTTP headers as span attributes. */
/** Returns a configuration that does not capture any HTTP headers as span attributes. */
public static CapturedHttpHeaders empty() {
return EMPTY;
}
/**
* Captures the configured HTTP request and response headers as span attributes as described in <a
* href="https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/semantic_conventions/http.md#http-request-and-response-headers">HTTP
* semantic conventions</a>.
*
* <p>The HTTP request header values will be captured under the {@code http.request.header.<name>}
* attribute key. The HTTP response header values will be captured under the {@code
* http.response.header.<name>} attribute key. The {@code <name>} part in the attribute key is the
* normalized header name: lowercase, with dashes replaced by underscores.
* Returns a configuration that captures HTTP client request and response headers as configured in
* the received {@code config}.
*/
public static CapturedHttpHeaders client(Config config) {
return CapturedHttpHeaders.create(
config.getList(
"otel.instrumentation.common.experimental.capture-http-headers.client.request"),
config.getList(
"otel.instrumentation.common.experimental.capture-http-headers.client.response"));
}
/**
* Returns a configuration that captures HTTP server request and response headers as configured in
* the received {@code config}.
*/
public static CapturedHttpHeaders server(Config config) {
return CapturedHttpHeaders.create(
config.getList(
"otel.instrumentation.common.experimental.capture-http-headers.server.request"),
config.getList(
"otel.instrumentation.common.experimental.capture-http-headers.server.response"));
}
/**
* Returns a configuration that captures chosen HTTP request and response headers.
*
* @param capturedRequestHeaders A list of HTTP request header names that are to be captured as
* span attributes.

View File

@ -7,6 +7,7 @@ package io.opentelemetry.instrumentation.api.instrumenter.http;
import io.opentelemetry.api.common.AttributesBuilder;
import io.opentelemetry.context.Context;
import io.opentelemetry.instrumentation.api.config.Config;
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import org.checkerframework.checker.nullness.qual.Nullable;
@ -24,7 +25,7 @@ public abstract class HttpClientAttributesExtractor<REQUEST, RESPONSE>
extends HttpCommonAttributesExtractor<REQUEST, RESPONSE> {
/**
* Create the HTTP client attributes extractor.
* Creates the HTTP client attributes extractor.
*
* @param capturedHttpHeaders A configuration object specifying which HTTP request and response
* headers should be captured as span attributes.
@ -33,6 +34,11 @@ public abstract class HttpClientAttributesExtractor<REQUEST, RESPONSE>
super(capturedHttpHeaders);
}
/** Creates the HTTP client attributes extractor with default configuration. */
protected HttpClientAttributesExtractor() {
this(CapturedHttpHeaders.client(Config.get()));
}
@Override
protected final void onStart(AttributesBuilder attributes, REQUEST request) {
super.onStart(attributes, request);

View File

@ -10,6 +10,7 @@ import static io.opentelemetry.instrumentation.api.instrumenter.http.ForwarderHe
import io.opentelemetry.api.common.AttributesBuilder;
import io.opentelemetry.context.Context;
import io.opentelemetry.instrumentation.api.config.Config;
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import org.checkerframework.checker.nullness.qual.Nullable;
@ -27,7 +28,7 @@ public abstract class HttpServerAttributesExtractor<REQUEST, RESPONSE>
extends HttpCommonAttributesExtractor<REQUEST, RESPONSE> {
/**
* Create the HTTP server attributes extractor.
* Creates the HTTP server attributes extractor.
*
* @param capturedHttpHeaders A configuration object specifying which HTTP request and response
* headers should be captured as span attributes.
@ -36,6 +37,11 @@ public abstract class HttpServerAttributesExtractor<REQUEST, RESPONSE>
super(capturedHttpHeaders);
}
/** Creates the HTTP server attributes extractor with default configuration. */
protected HttpServerAttributesExtractor() {
this(CapturedHttpHeaders.server(Config.get()));
}
@Override
protected final void onStart(AttributesBuilder attributes, REQUEST request) {
super.onStart(attributes, request);

View File

@ -8,7 +8,6 @@ package io.opentelemetry.javaagent.instrumentation.apachehttpasyncclient;
import static io.opentelemetry.javaagent.instrumentation.apachehttpasyncclient.ApacheHttpClientRequest.headersToList;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesExtractor;
import io.opentelemetry.javaagent.instrumentation.api.config.HttpHeadersConfig;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
@ -17,10 +16,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
final class ApacheHttpAsyncClientHttpAttributesExtractor
extends HttpClientAttributesExtractor<ApacheHttpClientRequest, HttpResponse> {
ApacheHttpAsyncClientHttpAttributesExtractor() {
super(HttpHeadersConfig.capturedClientHeaders());
}
@Override
protected String method(ApacheHttpClientRequest request) {
return request.getMethod();

View File

@ -9,7 +9,6 @@ import static java.util.Collections.emptyList;
import static java.util.Collections.singletonList;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesExtractor;
import io.opentelemetry.javaagent.instrumentation.api.config.HttpHeadersConfig;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import java.util.List;
import org.apache.commons.httpclient.Header;
@ -22,10 +21,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
final class ApacheHttpClientHttpAttributesExtractor
extends HttpClientAttributesExtractor<HttpMethod, HttpMethod> {
ApacheHttpClientHttpAttributesExtractor() {
super(HttpHeadersConfig.capturedClientHeaders());
}
@Override
protected String method(HttpMethod request) {
return request.getName();

View File

@ -8,7 +8,6 @@ package io.opentelemetry.javaagent.instrumentation.apachehttpclient.v4_0;
import static io.opentelemetry.javaagent.instrumentation.apachehttpclient.v4_0.ApacheHttpClientRequest.headersToList;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesExtractor;
import io.opentelemetry.javaagent.instrumentation.api.config.HttpHeadersConfig;
import java.util.List;
import org.apache.http.HttpResponse;
import org.checkerframework.checker.nullness.qual.Nullable;
@ -16,10 +15,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
final class ApacheHttpClientHttpAttributesExtractor
extends HttpClientAttributesExtractor<ApacheHttpClientRequest, HttpResponse> {
ApacheHttpClientHttpAttributesExtractor() {
super(HttpHeadersConfig.capturedClientHeaders());
}
@Override
protected String method(ApacheHttpClientRequest request) {
return request.getMethod();

View File

@ -6,7 +6,6 @@
package io.opentelemetry.javaagent.instrumentation.apachehttpclient.v5_0;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesExtractor;
import io.opentelemetry.javaagent.instrumentation.api.config.HttpHeadersConfig;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import java.util.ArrayList;
import java.util.Collections;
@ -26,10 +25,6 @@ final class ApacheHttpClientHttpAttributesExtractor
private static final Logger logger =
LoggerFactory.getLogger(ApacheHttpClientHttpAttributesExtractor.class);
ApacheHttpClientHttpAttributesExtractor() {
super(HttpHeadersConfig.capturedClientHeaders());
}
@Override
protected String method(ClassicHttpRequest request) {
return request.getMethod();

View File

@ -8,7 +8,6 @@ package io.opentelemetry.javaagent.instrumentation.asynchttpclient.v1_9;
import com.ning.http.client.Request;
import com.ning.http.client.Response;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesExtractor;
import io.opentelemetry.javaagent.instrumentation.api.config.HttpHeadersConfig;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import java.util.Collections;
import java.util.List;
@ -17,10 +16,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
final class AsyncHttpClientHttpAttributesExtractor
extends HttpClientAttributesExtractor<Request, Response> {
AsyncHttpClientHttpAttributesExtractor() {
super(HttpHeadersConfig.capturedClientHeaders());
}
@Override
protected String method(Request request) {
return request.getMethod();

View File

@ -6,7 +6,6 @@
package io.opentelemetry.javaagent.instrumentation.asynchttpclient.v2_0;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesExtractor;
import io.opentelemetry.javaagent.instrumentation.api.config.HttpHeadersConfig;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import java.util.List;
import org.asynchttpclient.Response;
@ -16,10 +15,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
final class AsyncHttpClientHttpAttributesExtractor
extends HttpClientAttributesExtractor<RequestContext, Response> {
AsyncHttpClientHttpAttributesExtractor() {
super(HttpHeadersConfig.capturedClientHeaders());
}
@Override
protected String method(RequestContext requestContext) {
return requestContext.getRequest().getMethod();

View File

@ -8,7 +8,6 @@ package io.opentelemetry.javaagent.instrumentation.googlehttpclient;
import com.google.api.client.http.HttpRequest;
import com.google.api.client.http.HttpResponse;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesExtractor;
import io.opentelemetry.javaagent.instrumentation.api.config.HttpHeadersConfig;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import java.util.List;
import org.checkerframework.checker.nullness.qual.Nullable;
@ -16,10 +15,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
final class GoogleHttpClientHttpAttributesExtractor
extends HttpClientAttributesExtractor<HttpRequest, HttpResponse> {
GoogleHttpClientHttpAttributesExtractor() {
super(HttpHeadersConfig.capturedClientHeaders());
}
@Override
protected @Nullable String method(HttpRequest httpRequest) {
return httpRequest.getRequestMethod();

View File

@ -9,7 +9,6 @@ import static java.util.Collections.emptyList;
import static java.util.Collections.singletonList;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesExtractor;
import io.opentelemetry.javaagent.instrumentation.api.config.HttpHeadersConfig;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import java.net.HttpURLConnection;
import java.util.List;
@ -18,10 +17,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
class HttpUrlHttpAttributesExtractor
extends HttpClientAttributesExtractor<HttpURLConnection, Integer> {
HttpUrlHttpAttributesExtractor() {
super(HttpHeadersConfig.capturedClientHeaders());
}
@Override
protected String method(HttpURLConnection connection) {
return connection.getRequestMethod();

View File

@ -6,7 +6,6 @@
package io.opentelemetry.javaagent.instrumentation.httpclient;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesExtractor;
import io.opentelemetry.javaagent.instrumentation.api.config.HttpHeadersConfig;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import java.net.http.HttpClient.Version;
import java.net.http.HttpRequest;
@ -17,10 +16,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
class JdkHttpAttributesExtractor
extends HttpClientAttributesExtractor<HttpRequest, HttpResponse<?>> {
JdkHttpAttributesExtractor() {
super(HttpHeadersConfig.capturedClientHeaders());
}
@Override
protected String method(HttpRequest httpRequest) {
return httpRequest.method();

View File

@ -10,7 +10,6 @@ import static java.util.Collections.emptyList;
import com.sun.jersey.api.client.ClientRequest;
import com.sun.jersey.api.client.ClientResponse;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesExtractor;
import io.opentelemetry.javaagent.instrumentation.api.config.HttpHeadersConfig;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import java.util.ArrayList;
import java.util.List;
@ -19,10 +18,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
final class JaxRsClientHttpAttributesExtractor
extends HttpClientAttributesExtractor<ClientRequest, ClientResponse> {
JaxRsClientHttpAttributesExtractor() {
super(HttpHeadersConfig.capturedClientHeaders());
}
@Override
protected @Nullable String method(ClientRequest httpRequest) {
return httpRequest.getMethod();

View File

@ -8,7 +8,6 @@ package io.opentelemetry.javaagent.instrumentation.jaxrsclient.v2_0;
import static java.util.Collections.emptyList;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesExtractor;
import io.opentelemetry.javaagent.instrumentation.api.config.HttpHeadersConfig;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import java.util.List;
import javax.ws.rs.client.ClientRequestContext;
@ -18,10 +17,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
final class JaxRsClientHttpAttributesExtractor
extends HttpClientAttributesExtractor<ClientRequestContext, ClientResponseContext> {
JaxRsClientHttpAttributesExtractor() {
super(HttpHeadersConfig.capturedClientHeaders());
}
@Override
protected @Nullable String method(ClientRequestContext httpRequest) {
return httpRequest.getMethod();

View File

@ -8,7 +8,6 @@ package io.opentelemetry.javaagent.instrumentation.jaxrsclient.v2_0;
import static java.util.Collections.emptyList;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesExtractor;
import io.opentelemetry.javaagent.instrumentation.api.config.HttpHeadersConfig;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import java.util.ArrayList;
import java.util.List;
@ -19,10 +18,6 @@ import org.jboss.resteasy.client.jaxrs.internal.ClientInvocation;
final class ResteasyClientHttpAttributesExtractor
extends HttpClientAttributesExtractor<ClientInvocation, Response> {
ResteasyClientHttpAttributesExtractor() {
super(HttpHeadersConfig.capturedClientHeaders());
}
@Override
protected @Nullable String method(ClientInvocation httpRequest) {
return httpRequest.getMethod();

View File

@ -9,7 +9,6 @@ import static java.util.Collections.emptyList;
import io.kubernetes.client.openapi.ApiResponse;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesExtractor;
import io.opentelemetry.javaagent.instrumentation.api.config.HttpHeadersConfig;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import java.util.List;
import okhttp3.Request;
@ -18,10 +17,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
class KubernetesHttpAttributesExtractor
extends HttpClientAttributesExtractor<Request, ApiResponse<?>> {
KubernetesHttpAttributesExtractor() {
super(HttpHeadersConfig.capturedClientHeaders());
}
@Override
protected String method(Request request) {
return request.method();

View File

@ -6,17 +6,12 @@
package io.opentelemetry.javaagent.instrumentation.liberty.dispatcher;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractor;
import io.opentelemetry.javaagent.instrumentation.api.config.HttpHeadersConfig;
import java.util.List;
import org.checkerframework.checker.nullness.qual.Nullable;
public class LibertyDispatcherHttpAttributesExtractor
extends HttpServerAttributesExtractor<LibertyRequest, LibertyResponse> {
public LibertyDispatcherHttpAttributesExtractor() {
super(HttpHeadersConfig.capturedServerHeaders());
}
@Override
protected @Nullable String method(LibertyRequest libertyRequest) {
return libertyRequest.getMethod();

View File

@ -8,7 +8,6 @@ package io.opentelemetry.javaagent.instrumentation.okhttp.v2_2;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesExtractor;
import io.opentelemetry.javaagent.instrumentation.api.config.HttpHeadersConfig;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import java.util.List;
import org.checkerframework.checker.nullness.qual.Nullable;
@ -16,10 +15,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
final class OkHttp2HttpAttributesExtractor
extends HttpClientAttributesExtractor<Request, Response> {
OkHttp2HttpAttributesExtractor() {
super(HttpHeadersConfig.capturedClientHeaders());
}
@Override
protected String method(Request request) {
return request.method();

View File

@ -6,7 +6,6 @@
package io.opentelemetry.javaagent.instrumentation.playws;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesExtractor;
import io.opentelemetry.javaagent.instrumentation.api.config.HttpHeadersConfig;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import java.util.List;
import org.checkerframework.checker.nullness.qual.Nullable;
@ -16,10 +15,6 @@ import play.shaded.ahc.org.asynchttpclient.Response;
final class PlayWsClientHttpAttributesExtractor
extends HttpClientAttributesExtractor<Request, Response> {
PlayWsClientHttpAttributesExtractor() {
super(HttpHeadersConfig.capturedClientHeaders());
}
@Override
protected String method(Request request) {
return request.getMethod();

View File

@ -7,7 +7,6 @@ package io.opentelemetry.javaagent.instrumentation.servlet;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractor;
import io.opentelemetry.instrumentation.servlet.ServletAccessor;
import io.opentelemetry.javaagent.instrumentation.api.config.HttpHeadersConfig;
import java.util.List;
import org.checkerframework.checker.nullness.qual.Nullable;
@ -17,7 +16,6 @@ public class ServletHttpAttributesExtractor<REQUEST, RESPONSE>
protected final ServletAccessor<REQUEST, RESPONSE> accessor;
public ServletHttpAttributesExtractor(ServletAccessor<REQUEST, RESPONSE> accessor) {
super(HttpHeadersConfig.capturedServerHeaders());
this.accessor = accessor;
}

View File

@ -19,9 +19,8 @@ import org.springframework.http.client.ClientHttpResponse;
final class SpringWebHttpAttributesExtractor
extends HttpClientAttributesExtractor<HttpRequest, ClientHttpResponse> {
// TODO: add support for capturing HTTP headers in library instrumentations
SpringWebHttpAttributesExtractor() {
super(CapturedHttpHeaders.empty());
SpringWebHttpAttributesExtractor(CapturedHttpHeaders capturedHttpHeaders) {
super(capturedHttpHeaders);
}
@Override

View File

@ -6,8 +6,10 @@
package io.opentelemetry.instrumentation.spring.web;
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.instrumentation.api.config.Config;
import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
import io.opentelemetry.instrumentation.api.instrumenter.http.CapturedHttpHeaders;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientMetrics;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanNameExtractor;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanStatusExtractor;
@ -23,6 +25,7 @@ public final class SpringWebTracingBuilder {
private final OpenTelemetry openTelemetry;
private final List<AttributesExtractor<HttpRequest, ClientHttpResponse>> additionalExtractors =
new ArrayList<>();
private CapturedHttpHeaders capturedHttpHeaders = CapturedHttpHeaders.client(Config.get());
SpringWebTracingBuilder(OpenTelemetry openTelemetry) {
this.openTelemetry = openTelemetry;
@ -38,13 +41,25 @@ public final class SpringWebTracingBuilder {
return this;
}
/**
* Configure the instrumentation to capture chosen HTTP request and response headers as span
* attributes.
*
* @param capturedHttpHeaders An instance of {@link CapturedHttpHeaders} containing the configured
* HTTP request and response names.
*/
public SpringWebTracingBuilder captureHttpHeaders(CapturedHttpHeaders capturedHttpHeaders) {
this.capturedHttpHeaders = capturedHttpHeaders;
return this;
}
/**
* Returns a new {@link SpringWebTracing} with the settings of this {@link
* SpringWebTracingBuilder}.
*/
public SpringWebTracing build() {
SpringWebHttpAttributesExtractor httpAttributesExtractor =
new SpringWebHttpAttributesExtractor();
new SpringWebHttpAttributesExtractor(capturedHttpHeaders);
SpringWebNetAttributesExtractor netAttributesExtractor = new SpringWebNetAttributesExtractor();
Instrumenter<HttpRequest, ClientHttpResponse> instrumenter =

View File

@ -6,7 +6,6 @@
package io.opentelemetry.javaagent.instrumentation.tomcat.common;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractor;
import io.opentelemetry.javaagent.instrumentation.api.config.HttpHeadersConfig;
import java.util.Collections;
import java.util.List;
import org.apache.coyote.Request;
@ -17,10 +16,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
public class TomcatHttpAttributesExtractor
extends HttpServerAttributesExtractor<Request, Response> {
public TomcatHttpAttributesExtractor() {
super(HttpHeadersConfig.capturedServerHeaders());
}
@Override
protected String method(Request request) {
return request.method().toString();

View File

@ -6,7 +6,6 @@
package io.opentelemetry.javaagent.instrumentation.undertow;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractor;
import io.opentelemetry.javaagent.instrumentation.api.config.HttpHeadersConfig;
import io.undertow.server.HttpServerExchange;
import io.undertow.util.HeaderValues;
import java.util.Collections;
@ -16,10 +15,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
public class UndertowHttpAttributesExtractor
extends HttpServerAttributesExtractor<HttpServerExchange, HttpServerExchange> {
public UndertowHttpAttributesExtractor() {
super(HttpHeadersConfig.capturedServerHeaders());
}
@Override
protected String method(HttpServerExchange exchange) {
return exchange.getRequestMethod().toString();

View File

@ -1,42 +0,0 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
package io.opentelemetry.javaagent.instrumentation.api.config;
import io.opentelemetry.instrumentation.api.config.Config;
import io.opentelemetry.instrumentation.api.instrumenter.http.CapturedHttpHeaders;
/** Javaagent configuration of captured HTTP request/response headers. */
public final class HttpHeadersConfig {
private static final CapturedHttpHeaders CLIENT;
private static final CapturedHttpHeaders SERVER;
static {
Config config = Config.get();
CLIENT =
CapturedHttpHeaders.create(
config.getList(
"otel.instrumentation.common.experimental.capture-http-headers.client.request"),
config.getList(
"otel.instrumentation.common.experimental.capture-http-headers.client.response"));
SERVER =
CapturedHttpHeaders.create(
config.getList(
"otel.instrumentation.common.experimental.capture-http-headers.server.request"),
config.getList(
"otel.instrumentation.common.experimental.capture-http-headers.server.response"));
}
public static CapturedHttpHeaders capturedClientHeaders() {
return CLIENT;
}
public static CapturedHttpHeaders capturedServerHeaders() {
return SERVER;
}
private HttpHeadersConfig() {}
}