Move HttpHeadersConfig methods back to instrumentation-api (#4298)
* Move HttpHeadersConfig methods back to instrumentation-api * remove unnecessary method
This commit is contained in:
parent
441ce3d115
commit
d3dbe415a1
|
@ -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.
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 =
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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() {}
|
||||
}
|
Loading…
Reference in New Issue