Add builders for setting optional attributes on HTTP extractors (#5347)
* Add builders for setting optional attributes on HTTP extractors * errorprone * fix compilation failure
This commit is contained in:
parent
d80b6f54fd
commit
4a98dae431
|
@ -43,8 +43,9 @@ public class InstrumenterBenchmark {
|
||||||
"benchmark",
|
"benchmark",
|
||||||
HttpSpanNameExtractor.create(ConstantHttpAttributesGetter.INSTANCE))
|
HttpSpanNameExtractor.create(ConstantHttpAttributesGetter.INSTANCE))
|
||||||
.addAttributesExtractor(
|
.addAttributesExtractor(
|
||||||
HttpClientAttributesExtractor.create(
|
HttpClientAttributesExtractor.builder(ConstantHttpAttributesGetter.INSTANCE)
|
||||||
ConstantHttpAttributesGetter.INSTANCE, CapturedHttpHeaders.empty()))
|
.captureHttpHeaders(CapturedHttpHeaders.empty())
|
||||||
|
.build())
|
||||||
.addAttributesExtractor(
|
.addAttributesExtractor(
|
||||||
NetServerAttributesExtractor.create(new ConstantNetAttributesGetter()))
|
NetServerAttributesExtractor.create(new ConstantNetAttributesGetter()))
|
||||||
.newInstrumenter();
|
.newInstrumenter();
|
||||||
|
|
|
@ -7,7 +7,6 @@ package io.opentelemetry.instrumentation.api.instrumenter.http;
|
||||||
|
|
||||||
import io.opentelemetry.api.common.AttributesBuilder;
|
import io.opentelemetry.api.common.AttributesBuilder;
|
||||||
import io.opentelemetry.context.Context;
|
import io.opentelemetry.context.Context;
|
||||||
import io.opentelemetry.instrumentation.api.config.Config;
|
|
||||||
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
|
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
@ -27,23 +26,33 @@ public final class HttpClientAttributesExtractor<REQUEST, RESPONSE>
|
||||||
/** Creates the HTTP client attributes extractor with default configuration. */
|
/** Creates the HTTP client attributes extractor with default configuration. */
|
||||||
public static <REQUEST, RESPONSE> HttpClientAttributesExtractor<REQUEST, RESPONSE> create(
|
public static <REQUEST, RESPONSE> HttpClientAttributesExtractor<REQUEST, RESPONSE> create(
|
||||||
HttpClientAttributesGetter<REQUEST, RESPONSE> getter) {
|
HttpClientAttributesGetter<REQUEST, RESPONSE> getter) {
|
||||||
return create(getter, CapturedHttpHeaders.client(Config.get()));
|
return builder(getter).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: there should be a builder for all optional attributes
|
|
||||||
/**
|
/**
|
||||||
* Creates the HTTP client attributes extractor.
|
* Creates the HTTP client attributes extractor.
|
||||||
*
|
*
|
||||||
* @param capturedHttpHeaders A configuration object specifying which HTTP request and response
|
* @param capturedHttpHeaders A configuration object specifying which HTTP request and response
|
||||||
* headers should be captured as span attributes.
|
* headers should be captured as span attributes.
|
||||||
|
* @deprecated Use {@link #builder(HttpClientAttributesGetter)} instead.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public static <REQUEST, RESPONSE> HttpClientAttributesExtractor<REQUEST, RESPONSE> create(
|
public static <REQUEST, RESPONSE> HttpClientAttributesExtractor<REQUEST, RESPONSE> create(
|
||||||
HttpClientAttributesGetter<REQUEST, RESPONSE> getter,
|
HttpClientAttributesGetter<REQUEST, RESPONSE> getter,
|
||||||
CapturedHttpHeaders capturedHttpHeaders) {
|
CapturedHttpHeaders capturedHttpHeaders) {
|
||||||
return new HttpClientAttributesExtractor<>(getter, capturedHttpHeaders);
|
return builder(getter).captureHttpHeaders(capturedHttpHeaders).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
private HttpClientAttributesExtractor(
|
/**
|
||||||
|
* Returns a new {@link HttpClientAttributesExtractorBuilder} that can be used to configure the
|
||||||
|
* HTTP client attributes extractor.
|
||||||
|
*/
|
||||||
|
public static <REQUEST, RESPONSE> HttpClientAttributesExtractorBuilder<REQUEST, RESPONSE> builder(
|
||||||
|
HttpClientAttributesGetter<REQUEST, RESPONSE> getter) {
|
||||||
|
return new HttpClientAttributesExtractorBuilder<>(getter);
|
||||||
|
}
|
||||||
|
|
||||||
|
HttpClientAttributesExtractor(
|
||||||
HttpClientAttributesGetter<REQUEST, RESPONSE> getter,
|
HttpClientAttributesGetter<REQUEST, RESPONSE> getter,
|
||||||
CapturedHttpHeaders capturedHttpHeaders) {
|
CapturedHttpHeaders capturedHttpHeaders) {
|
||||||
super(getter, capturedHttpHeaders);
|
super(getter, capturedHttpHeaders);
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
/*
|
||||||
|
* Copyright The OpenTelemetry Authors
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.opentelemetry.instrumentation.api.instrumenter.http;
|
||||||
|
|
||||||
|
import io.opentelemetry.instrumentation.api.config.Config;
|
||||||
|
|
||||||
|
/** A builder of {@link HttpClientAttributesExtractor}. */
|
||||||
|
public final class HttpClientAttributesExtractorBuilder<REQUEST, RESPONSE> {
|
||||||
|
|
||||||
|
final HttpClientAttributesGetter<REQUEST, RESPONSE> getter;
|
||||||
|
CapturedHttpHeaders capturedHttpHeaders = CapturedHttpHeaders.client(Config.get());
|
||||||
|
|
||||||
|
HttpClientAttributesExtractorBuilder(HttpClientAttributesGetter<REQUEST, RESPONSE> getter) {
|
||||||
|
this.getter = getter;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configures the HTTP headers that will be captured as span attributes.
|
||||||
|
*
|
||||||
|
* @param capturedHttpHeaders A configuration object specifying which HTTP request and response
|
||||||
|
* headers should be captured as span attributes.
|
||||||
|
*/
|
||||||
|
public HttpClientAttributesExtractorBuilder<REQUEST, RESPONSE> captureHttpHeaders(
|
||||||
|
CapturedHttpHeaders capturedHttpHeaders) {
|
||||||
|
this.capturedHttpHeaders = capturedHttpHeaders;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a new {@link HttpClientAttributesExtractor} with the settings of this {@link
|
||||||
|
* HttpClientAttributesExtractorBuilder}.
|
||||||
|
*/
|
||||||
|
public HttpClientAttributesExtractor<REQUEST, RESPONSE> build() {
|
||||||
|
return new HttpClientAttributesExtractor<>(getter, capturedHttpHeaders);
|
||||||
|
}
|
||||||
|
}
|
|
@ -12,7 +12,6 @@ import static io.opentelemetry.instrumentation.api.instrumenter.http.ForwardedHe
|
||||||
|
|
||||||
import io.opentelemetry.api.common.AttributesBuilder;
|
import io.opentelemetry.api.common.AttributesBuilder;
|
||||||
import io.opentelemetry.context.Context;
|
import io.opentelemetry.context.Context;
|
||||||
import io.opentelemetry.instrumentation.api.config.Config;
|
|
||||||
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
|
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
@ -33,25 +32,40 @@ public final class HttpServerAttributesExtractor<REQUEST, RESPONSE>
|
||||||
/** Creates the HTTP server attributes extractor with default configuration. */
|
/** Creates the HTTP server attributes extractor with default configuration. */
|
||||||
public static <REQUEST, RESPONSE> HttpServerAttributesExtractor<REQUEST, RESPONSE> create(
|
public static <REQUEST, RESPONSE> HttpServerAttributesExtractor<REQUEST, RESPONSE> create(
|
||||||
HttpServerAttributesGetter<REQUEST, RESPONSE> getter) {
|
HttpServerAttributesGetter<REQUEST, RESPONSE> getter) {
|
||||||
return create(getter, CapturedHttpHeaders.server(Config.get()));
|
return builder(getter).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: there should be a builder for all optional attributes
|
|
||||||
/**
|
/**
|
||||||
* Creates the HTTP server attributes extractor.
|
* Creates the HTTP server attributes extractor.
|
||||||
*
|
*
|
||||||
* @param capturedHttpHeaders A configuration object specifying which HTTP request and response
|
* @param capturedHttpHeaders A configuration object specifying which HTTP request and response
|
||||||
* headers should be captured as span attributes.
|
* headers should be captured as span attributes.
|
||||||
|
* @deprecated Use {@link #builder(HttpServerAttributesGetter)} instead.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public static <REQUEST, RESPONSE> HttpServerAttributesExtractor<REQUEST, RESPONSE> create(
|
public static <REQUEST, RESPONSE> HttpServerAttributesExtractor<REQUEST, RESPONSE> create(
|
||||||
HttpServerAttributesGetter<REQUEST, RESPONSE> getter,
|
HttpServerAttributesGetter<REQUEST, RESPONSE> getter,
|
||||||
CapturedHttpHeaders capturedHttpHeaders) {
|
CapturedHttpHeaders capturedHttpHeaders) {
|
||||||
return new HttpServerAttributesExtractor<>(
|
return builder(getter).captureHttpHeaders(capturedHttpHeaders).build();
|
||||||
getter, capturedHttpHeaders, HttpRouteHolder::getRoute);
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a new {@link HttpServerAttributesExtractorBuilder} that can be used to configure the
|
||||||
|
* HTTP client attributes extractor.
|
||||||
|
*/
|
||||||
|
public static <REQUEST, RESPONSE> HttpServerAttributesExtractorBuilder<REQUEST, RESPONSE> builder(
|
||||||
|
HttpServerAttributesGetter<REQUEST, RESPONSE> getter) {
|
||||||
|
return new HttpServerAttributesExtractorBuilder<>(getter);
|
||||||
}
|
}
|
||||||
|
|
||||||
private final Function<Context, String> httpRouteHolderGetter;
|
private final Function<Context, String> httpRouteHolderGetter;
|
||||||
|
|
||||||
|
HttpServerAttributesExtractor(
|
||||||
|
HttpServerAttributesGetter<REQUEST, RESPONSE> getter,
|
||||||
|
CapturedHttpHeaders capturedHttpHeaders) {
|
||||||
|
this(getter, capturedHttpHeaders, HttpRouteHolder::getRoute);
|
||||||
|
}
|
||||||
|
|
||||||
// visible for tests
|
// visible for tests
|
||||||
HttpServerAttributesExtractor(
|
HttpServerAttributesExtractor(
|
||||||
HttpServerAttributesGetter<REQUEST, RESPONSE> getter,
|
HttpServerAttributesGetter<REQUEST, RESPONSE> getter,
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
/*
|
||||||
|
* Copyright The OpenTelemetry Authors
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.opentelemetry.instrumentation.api.instrumenter.http;
|
||||||
|
|
||||||
|
import io.opentelemetry.instrumentation.api.config.Config;
|
||||||
|
|
||||||
|
/** A builder of {@link HttpServerAttributesExtractor}. */
|
||||||
|
public final class HttpServerAttributesExtractorBuilder<REQUEST, RESPONSE> {
|
||||||
|
|
||||||
|
final HttpServerAttributesGetter<REQUEST, RESPONSE> getter;
|
||||||
|
CapturedHttpHeaders capturedHttpHeaders = CapturedHttpHeaders.server(Config.get());
|
||||||
|
|
||||||
|
HttpServerAttributesExtractorBuilder(HttpServerAttributesGetter<REQUEST, RESPONSE> getter) {
|
||||||
|
this.getter = getter;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configures the HTTP headers that will be captured as span attributes.
|
||||||
|
*
|
||||||
|
* @param capturedHttpHeaders A configuration object specifying which HTTP request and response
|
||||||
|
* headers should be captured as span attributes.
|
||||||
|
*/
|
||||||
|
public HttpServerAttributesExtractorBuilder<REQUEST, RESPONSE> captureHttpHeaders(
|
||||||
|
CapturedHttpHeaders capturedHttpHeaders) {
|
||||||
|
this.capturedHttpHeaders = capturedHttpHeaders;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a new {@link HttpServerAttributesExtractor} with the settings of this {@link
|
||||||
|
* HttpServerAttributesExtractorBuilder}.
|
||||||
|
*/
|
||||||
|
public HttpServerAttributesExtractor<REQUEST, RESPONSE> build() {
|
||||||
|
return new HttpServerAttributesExtractor<>(getter, capturedHttpHeaders);
|
||||||
|
}
|
||||||
|
}
|
|
@ -104,10 +104,12 @@ class HttpClientAttributesExtractorTest {
|
||||||
response.put("header.custom-response-header", "654,321");
|
response.put("header.custom-response-header", "654,321");
|
||||||
|
|
||||||
HttpClientAttributesExtractor<Map<String, String>, Map<String, String>> extractor =
|
HttpClientAttributesExtractor<Map<String, String>, Map<String, String>> extractor =
|
||||||
HttpClientAttributesExtractor.create(
|
HttpClientAttributesExtractor.builder(new TestHttpClientAttributesGetter())
|
||||||
new TestHttpClientAttributesGetter(),
|
.captureHttpHeaders(
|
||||||
CapturedHttpHeaders.create(
|
CapturedHttpHeaders.create(
|
||||||
singletonList("Custom-Request-Header"), singletonList("Custom-Response-Header")));
|
singletonList("Custom-Request-Header"),
|
||||||
|
singletonList("Custom-Response-Header")))
|
||||||
|
.build();
|
||||||
|
|
||||||
AttributesBuilder attributes = Attributes.builder();
|
AttributesBuilder attributes = Attributes.builder();
|
||||||
extractor.onStart(attributes, Context.root(), request);
|
extractor.onStart(attributes, Context.root(), request);
|
||||||
|
@ -148,8 +150,9 @@ class HttpClientAttributesExtractorTest {
|
||||||
response.put("statusCode", "0");
|
response.put("statusCode", "0");
|
||||||
|
|
||||||
HttpClientAttributesExtractor<Map<String, String>, Map<String, String>> extractor =
|
HttpClientAttributesExtractor<Map<String, String>, Map<String, String>> extractor =
|
||||||
HttpClientAttributesExtractor.create(
|
HttpClientAttributesExtractor.builder(new TestHttpClientAttributesGetter())
|
||||||
new TestHttpClientAttributesGetter(), CapturedHttpHeaders.empty());
|
.captureHttpHeaders(CapturedHttpHeaders.empty())
|
||||||
|
.build();
|
||||||
|
|
||||||
AttributesBuilder attributes = Attributes.builder();
|
AttributesBuilder attributes = Attributes.builder();
|
||||||
extractor.onStart(attributes, Context.root(), request);
|
extractor.onStart(attributes, Context.root(), request);
|
||||||
|
|
|
@ -184,8 +184,9 @@ class HttpServerAttributesExtractorTest {
|
||||||
request.put("header.x-forwarded-for", "1.1.1.1");
|
request.put("header.x-forwarded-for", "1.1.1.1");
|
||||||
|
|
||||||
HttpServerAttributesExtractor<Map<String, String>, Map<String, String>> extractor =
|
HttpServerAttributesExtractor<Map<String, String>, Map<String, String>> extractor =
|
||||||
HttpServerAttributesExtractor.create(
|
HttpServerAttributesExtractor.builder(new TestHttpServerAttributesExtractor())
|
||||||
new TestHttpServerAttributesExtractor(), CapturedHttpHeaders.empty());
|
.captureHttpHeaders(CapturedHttpHeaders.empty())
|
||||||
|
.build();
|
||||||
|
|
||||||
AttributesBuilder attributes = Attributes.builder();
|
AttributesBuilder attributes = Attributes.builder();
|
||||||
extractor.onStart(attributes, Context.root(), request);
|
extractor.onStart(attributes, Context.root(), request);
|
||||||
|
@ -203,8 +204,9 @@ class HttpServerAttributesExtractorTest {
|
||||||
request.put("header.x-forwarded-proto", "https");
|
request.put("header.x-forwarded-proto", "https");
|
||||||
|
|
||||||
HttpServerAttributesExtractor<Map<String, String>, Map<String, String>> extractor =
|
HttpServerAttributesExtractor<Map<String, String>, Map<String, String>> extractor =
|
||||||
HttpServerAttributesExtractor.create(
|
HttpServerAttributesExtractor.builder(new TestHttpServerAttributesExtractor())
|
||||||
new TestHttpServerAttributesExtractor(), CapturedHttpHeaders.empty());
|
.captureHttpHeaders(CapturedHttpHeaders.empty())
|
||||||
|
.build();
|
||||||
|
|
||||||
AttributesBuilder attributes = Attributes.builder();
|
AttributesBuilder attributes = Attributes.builder();
|
||||||
extractor.onStart(attributes, Context.root(), request);
|
extractor.onStart(attributes, Context.root(), request);
|
||||||
|
|
|
@ -75,7 +75,9 @@ public final class ApacheHttpClientTracingBuilder {
|
||||||
HttpSpanNameExtractor.create(httpAttributesGetter))
|
HttpSpanNameExtractor.create(httpAttributesGetter))
|
||||||
.setSpanStatusExtractor(HttpSpanStatusExtractor.create(httpAttributesGetter))
|
.setSpanStatusExtractor(HttpSpanStatusExtractor.create(httpAttributesGetter))
|
||||||
.addAttributesExtractor(
|
.addAttributesExtractor(
|
||||||
HttpClientAttributesExtractor.create(httpAttributesGetter, capturedHttpHeaders))
|
HttpClientAttributesExtractor.builder(httpAttributesGetter)
|
||||||
|
.captureHttpHeaders(capturedHttpHeaders)
|
||||||
|
.build())
|
||||||
.addAttributesExtractor(NetClientAttributesExtractor.create(netAttributesGetter))
|
.addAttributesExtractor(NetClientAttributesExtractor.create(netAttributesGetter))
|
||||||
.addAttributesExtractors(additionalExtractors)
|
.addAttributesExtractors(additionalExtractors)
|
||||||
// We manually inject because we need to inject internal requests for redirects.
|
// We manually inject because we need to inject internal requests for redirects.
|
||||||
|
|
|
@ -135,7 +135,9 @@ public final class ArmeriaTracingBuilder {
|
||||||
HttpSpanStatusExtractor.create(clientAttributesGetter)))
|
HttpSpanStatusExtractor.create(clientAttributesGetter)))
|
||||||
.addAttributesExtractor(netClientAttributesExtractor)
|
.addAttributesExtractor(netClientAttributesExtractor)
|
||||||
.addAttributesExtractor(
|
.addAttributesExtractor(
|
||||||
HttpClientAttributesExtractor.create(clientAttributesGetter, capturedHttpClientHeaders))
|
HttpClientAttributesExtractor.builder(clientAttributesGetter)
|
||||||
|
.captureHttpHeaders(capturedHttpClientHeaders)
|
||||||
|
.build())
|
||||||
.addRequestMetrics(HttpClientMetrics.get());
|
.addRequestMetrics(HttpClientMetrics.get());
|
||||||
serverInstrumenterBuilder
|
serverInstrumenterBuilder
|
||||||
.setSpanStatusExtractor(
|
.setSpanStatusExtractor(
|
||||||
|
@ -144,7 +146,9 @@ public final class ArmeriaTracingBuilder {
|
||||||
.addAttributesExtractor(
|
.addAttributesExtractor(
|
||||||
NetServerAttributesExtractor.create(new ArmeriaNetServerAttributesGetter()))
|
NetServerAttributesExtractor.create(new ArmeriaNetServerAttributesGetter()))
|
||||||
.addAttributesExtractor(
|
.addAttributesExtractor(
|
||||||
HttpServerAttributesExtractor.create(serverAttributesGetter, capturedHttpServerHeaders))
|
HttpServerAttributesExtractor.builder(serverAttributesGetter)
|
||||||
|
.captureHttpHeaders(capturedHttpServerHeaders)
|
||||||
|
.build())
|
||||||
.addRequestMetrics(HttpServerMetrics.get())
|
.addRequestMetrics(HttpServerMetrics.get())
|
||||||
.addContextCustomizer(HttpRouteHolder.get());
|
.addContextCustomizer(HttpRouteHolder.get());
|
||||||
|
|
||||||
|
|
|
@ -61,7 +61,9 @@ public final class JettyClientInstrumenterBuilder {
|
||||||
HttpSpanNameExtractor.create(httpAttributesGetter))
|
HttpSpanNameExtractor.create(httpAttributesGetter))
|
||||||
.setSpanStatusExtractor(HttpSpanStatusExtractor.create(httpAttributesGetter))
|
.setSpanStatusExtractor(HttpSpanStatusExtractor.create(httpAttributesGetter))
|
||||||
.addAttributesExtractor(
|
.addAttributesExtractor(
|
||||||
HttpClientAttributesExtractor.create(httpAttributesGetter, capturedHttpHeaders))
|
HttpClientAttributesExtractor.builder(httpAttributesGetter)
|
||||||
|
.captureHttpHeaders(capturedHttpHeaders)
|
||||||
|
.build())
|
||||||
.addAttributesExtractor(NetClientAttributesExtractor.create(netAttributesGetter))
|
.addAttributesExtractor(NetClientAttributesExtractor.create(netAttributesGetter))
|
||||||
.addAttributesExtractors(additionalExtractors)
|
.addAttributesExtractors(additionalExtractors)
|
||||||
.addRequestMetrics(HttpClientMetrics.get())
|
.addRequestMetrics(HttpClientMetrics.get())
|
||||||
|
|
|
@ -102,7 +102,7 @@ class KtorServerTracing private constructor(
|
||||||
with(instrumenterBuilder) {
|
with(instrumenterBuilder) {
|
||||||
setSpanStatusExtractor(configuration.statusExtractor(HttpSpanStatusExtractor.create(httpAttributesGetter)))
|
setSpanStatusExtractor(configuration.statusExtractor(HttpSpanStatusExtractor.create(httpAttributesGetter)))
|
||||||
addAttributesExtractor(NetServerAttributesExtractor.create(KtorNetServerAttributesGetter()))
|
addAttributesExtractor(NetServerAttributesExtractor.create(KtorNetServerAttributesGetter()))
|
||||||
addAttributesExtractor(HttpServerAttributesExtractor.create(httpAttributesGetter, configuration.capturedHttpHeaders))
|
addAttributesExtractor(HttpServerAttributesExtractor.builder(httpAttributesGetter).captureHttpHeaders(configuration.capturedHttpHeaders).build())
|
||||||
addRequestMetrics(HttpServerMetrics.get())
|
addRequestMetrics(HttpServerMetrics.get())
|
||||||
addContextCustomizer(HttpRouteHolder.get())
|
addContextCustomizer(HttpRouteHolder.get())
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,7 +70,9 @@ public final class OkHttpTracingBuilder {
|
||||||
HttpSpanNameExtractor.create(httpAttributesGetter))
|
HttpSpanNameExtractor.create(httpAttributesGetter))
|
||||||
.setSpanStatusExtractor(HttpSpanStatusExtractor.create(httpAttributesGetter))
|
.setSpanStatusExtractor(HttpSpanStatusExtractor.create(httpAttributesGetter))
|
||||||
.addAttributesExtractor(
|
.addAttributesExtractor(
|
||||||
HttpClientAttributesExtractor.create(httpAttributesGetter, capturedHttpHeaders))
|
HttpClientAttributesExtractor.builder(httpAttributesGetter)
|
||||||
|
.captureHttpHeaders(capturedHttpHeaders)
|
||||||
|
.build())
|
||||||
.addAttributesExtractor(NetClientAttributesExtractor.create(attributesGetter))
|
.addAttributesExtractor(NetClientAttributesExtractor.create(attributesGetter))
|
||||||
.addAttributesExtractors(additionalExtractors)
|
.addAttributesExtractors(additionalExtractors)
|
||||||
.addRequestMetrics(HttpClientMetrics.get())
|
.addRequestMetrics(HttpClientMetrics.get())
|
||||||
|
|
|
@ -111,7 +111,9 @@ public final class RatpackTracingBuilder {
|
||||||
.setSpanStatusExtractor(HttpSpanStatusExtractor.create(httpAttributes))
|
.setSpanStatusExtractor(HttpSpanStatusExtractor.create(httpAttributes))
|
||||||
.addAttributesExtractor(NetServerAttributesExtractor.create(netAttributes))
|
.addAttributesExtractor(NetServerAttributesExtractor.create(netAttributes))
|
||||||
.addAttributesExtractor(
|
.addAttributesExtractor(
|
||||||
HttpServerAttributesExtractor.create(httpAttributes, capturedHttpServerHeaders))
|
HttpServerAttributesExtractor.builder(httpAttributes)
|
||||||
|
.captureHttpHeaders(capturedHttpServerHeaders)
|
||||||
|
.build())
|
||||||
.addAttributesExtractors(additionalExtractors)
|
.addAttributesExtractors(additionalExtractors)
|
||||||
.addRequestMetrics(HttpServerMetrics.get())
|
.addRequestMetrics(HttpServerMetrics.get())
|
||||||
.newServerInstrumenter(RatpackGetter.INSTANCE);
|
.newServerInstrumenter(RatpackGetter.INSTANCE);
|
||||||
|
@ -128,7 +130,9 @@ public final class RatpackTracingBuilder {
|
||||||
.setSpanStatusExtractor(HttpSpanStatusExtractor.create(httpAttributes))
|
.setSpanStatusExtractor(HttpSpanStatusExtractor.create(httpAttributes))
|
||||||
.addAttributesExtractor(NetClientAttributesExtractor.create(netAttributes))
|
.addAttributesExtractor(NetClientAttributesExtractor.create(netAttributes))
|
||||||
.addAttributesExtractor(
|
.addAttributesExtractor(
|
||||||
HttpClientAttributesExtractor.create(httpAttributes, capturedHttpClientHeaders))
|
HttpClientAttributesExtractor.builder(httpAttributes)
|
||||||
|
.captureHttpHeaders(capturedHttpClientHeaders)
|
||||||
|
.build())
|
||||||
.addAttributesExtractors(additionalHttpClientExtractors)
|
.addAttributesExtractors(additionalHttpClientExtractors)
|
||||||
.addRequestMetrics(HttpServerMetrics.get())
|
.addRequestMetrics(HttpServerMetrics.get())
|
||||||
.newClientInstrumenter(RequestHeaderSetter.INSTANCE);
|
.newClientInstrumenter(RequestHeaderSetter.INSTANCE);
|
||||||
|
|
|
@ -70,7 +70,9 @@ public final class RestletTracingBuilder {
|
||||||
HttpSpanNameExtractor.create(httpAttributesGetter))
|
HttpSpanNameExtractor.create(httpAttributesGetter))
|
||||||
.setSpanStatusExtractor(HttpSpanStatusExtractor.create(httpAttributesGetter))
|
.setSpanStatusExtractor(HttpSpanStatusExtractor.create(httpAttributesGetter))
|
||||||
.addAttributesExtractor(
|
.addAttributesExtractor(
|
||||||
HttpServerAttributesExtractor.create(httpAttributesGetter, capturedHttpHeaders))
|
HttpServerAttributesExtractor.builder(httpAttributesGetter)
|
||||||
|
.captureHttpHeaders(capturedHttpHeaders)
|
||||||
|
.build())
|
||||||
.addAttributesExtractor(NetServerAttributesExtractor.create(netAttributesGetter))
|
.addAttributesExtractor(NetServerAttributesExtractor.create(netAttributesGetter))
|
||||||
.addAttributesExtractors(additionalExtractors)
|
.addAttributesExtractors(additionalExtractors)
|
||||||
.addRequestMetrics(HttpServerMetrics.get())
|
.addRequestMetrics(HttpServerMetrics.get())
|
||||||
|
|
|
@ -45,7 +45,9 @@ public class RestletInstrumenterFactory {
|
||||||
openTelemetry, INSTRUMENTATION_NAME, HttpSpanNameExtractor.create(httpAttributesGetter))
|
openTelemetry, INSTRUMENTATION_NAME, HttpSpanNameExtractor.create(httpAttributesGetter))
|
||||||
.setSpanStatusExtractor(HttpSpanStatusExtractor.create(httpAttributesGetter))
|
.setSpanStatusExtractor(HttpSpanStatusExtractor.create(httpAttributesGetter))
|
||||||
.addAttributesExtractor(
|
.addAttributesExtractor(
|
||||||
HttpServerAttributesExtractor.create(httpAttributesGetter, capturedHttpHeaders))
|
HttpServerAttributesExtractor.builder(httpAttributesGetter)
|
||||||
|
.captureHttpHeaders(capturedHttpHeaders)
|
||||||
|
.build())
|
||||||
.addAttributesExtractor(NetServerAttributesExtractor.create(netAttributesGetter))
|
.addAttributesExtractor(NetServerAttributesExtractor.create(netAttributesGetter))
|
||||||
.addAttributesExtractors(additionalExtractors)
|
.addAttributesExtractors(additionalExtractors)
|
||||||
.addRequestMetrics(HttpServerMetrics.get())
|
.addRequestMetrics(HttpServerMetrics.get())
|
||||||
|
|
|
@ -70,7 +70,9 @@ public final class SpringWebTracingBuilder {
|
||||||
HttpSpanNameExtractor.create(httpAttributeGetter))
|
HttpSpanNameExtractor.create(httpAttributeGetter))
|
||||||
.setSpanStatusExtractor(HttpSpanStatusExtractor.create(httpAttributeGetter))
|
.setSpanStatusExtractor(HttpSpanStatusExtractor.create(httpAttributeGetter))
|
||||||
.addAttributesExtractor(
|
.addAttributesExtractor(
|
||||||
HttpClientAttributesExtractor.create(httpAttributeGetter, capturedHttpHeaders))
|
HttpClientAttributesExtractor.builder(httpAttributeGetter)
|
||||||
|
.captureHttpHeaders(capturedHttpHeaders)
|
||||||
|
.build())
|
||||||
.addAttributesExtractor(NetClientAttributesExtractor.create(netAttributesGetter))
|
.addAttributesExtractor(NetClientAttributesExtractor.create(netAttributesGetter))
|
||||||
.addAttributesExtractors(additionalExtractors)
|
.addAttributesExtractors(additionalExtractors)
|
||||||
.addRequestMetrics(HttpClientMetrics.get())
|
.addRequestMetrics(HttpClientMetrics.get())
|
||||||
|
|
|
@ -76,7 +76,9 @@ public final class SpringWebfluxTracingBuilder {
|
||||||
HttpSpanNameExtractor.create(httpAttributesGetter))
|
HttpSpanNameExtractor.create(httpAttributesGetter))
|
||||||
.setSpanStatusExtractor(HttpSpanStatusExtractor.create(httpAttributesGetter))
|
.setSpanStatusExtractor(HttpSpanStatusExtractor.create(httpAttributesGetter))
|
||||||
.addAttributesExtractor(
|
.addAttributesExtractor(
|
||||||
HttpClientAttributesExtractor.create(httpAttributesGetter, capturedHttpHeaders))
|
HttpClientAttributesExtractor.builder(httpAttributesGetter)
|
||||||
|
.captureHttpHeaders(capturedHttpHeaders)
|
||||||
|
.build())
|
||||||
.addAttributesExtractor(attributesExtractor)
|
.addAttributesExtractor(attributesExtractor)
|
||||||
.addAttributesExtractor(PeerServiceAttributesExtractor.create(attributesGetter))
|
.addAttributesExtractor(PeerServiceAttributesExtractor.create(attributesGetter))
|
||||||
.addAttributesExtractors(additionalExtractors)
|
.addAttributesExtractors(additionalExtractors)
|
||||||
|
|
|
@ -71,7 +71,9 @@ public final class SpringWebMvcTracingBuilder {
|
||||||
HttpSpanNameExtractor.create(httpAttributesGetter))
|
HttpSpanNameExtractor.create(httpAttributesGetter))
|
||||||
.setSpanStatusExtractor(HttpSpanStatusExtractor.create(httpAttributesGetter))
|
.setSpanStatusExtractor(HttpSpanStatusExtractor.create(httpAttributesGetter))
|
||||||
.addAttributesExtractor(
|
.addAttributesExtractor(
|
||||||
HttpServerAttributesExtractor.create(httpAttributesGetter, capturedHttpHeaders))
|
HttpServerAttributesExtractor.builder(httpAttributesGetter)
|
||||||
|
.captureHttpHeaders(capturedHttpHeaders)
|
||||||
|
.build())
|
||||||
.addAttributesExtractor(new StatusCodeExtractor())
|
.addAttributesExtractor(new StatusCodeExtractor())
|
||||||
.addAttributesExtractor(
|
.addAttributesExtractor(
|
||||||
NetServerAttributesExtractor.create(new SpringWebMvcNetAttributesGetter()))
|
NetServerAttributesExtractor.create(new SpringWebMvcNetAttributesGetter()))
|
||||||
|
|
Loading…
Reference in New Issue