Move and rename NetPeerUtils (#2548)

* Move and rename NetPeerUtils

* Rename NetPeerUtils to NetPeerAttributes; inject instance instead of using a global var
* Rename SpanAttributeSetter to AttributeSetter (might be used to set on AttributesBuilder in the future, who knows)
* Deprecate default BaseTracer constructor: library instrumentations are supposed to inject all dependencies, the javaagent should explicitly pass globals

* fix compilation failure

* Remove peer.service customization from library instrumentation
This commit is contained in:
Mateusz Rzeszutek 2021-03-16 13:50:19 +01:00 committed by GitHub
parent c1718baf23
commit ae23b97ec4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
63 changed files with 300 additions and 113 deletions

View File

@ -50,12 +50,4 @@
<Bug pattern="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD"/>
</Match>
<Match>
<Class name="io.opentelemetry.instrumentation.api.tracer.utils.NetPeerUtils"/>
<Method name="setNetPeer"
params="io.opentelemetry.api.trace.Span,java.lang.String,java.lang.String,int"
returns="void"/>
<Bug pattern="UC_USELESS_VOID_METHOD"/>
</Match>
</FindBugsFilter>

View File

@ -0,0 +1,16 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
package io.opentelemetry.instrumentation.api.tracer;
import io.opentelemetry.api.common.AttributeKey;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.SpanBuilder;
/** This helper interface allows setting attributes on both {@link Span} and {@link SpanBuilder}. */
@FunctionalInterface
public interface AttributeSetter {
<T> void setAttribute(AttributeKey<T> key, T value);
}

View File

@ -55,6 +55,13 @@ public abstract class BaseTracer {
private final Tracer tracer;
private final ContextPropagators propagators;
/**
* Instead of using this always pass an OpenTelemetry instance; javaagent tracers should
* explicitly pass {@code GlobalOpenTelemetry.get()} to the constructor.
*
* @deprecated always pass an OpenTelemetry instance.
*/
@Deprecated
public BaseTracer() {
this(GlobalOpenTelemetry.get());
}

View File

@ -10,7 +10,7 @@ import static io.opentelemetry.api.trace.SpanKind.CLIENT;
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.api.trace.SpanBuilder;
import io.opentelemetry.context.Context;
import io.opentelemetry.instrumentation.api.tracer.utils.NetPeerUtils;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import java.net.InetSocketAddress;
import org.checkerframework.checker.nullness.qual.Nullable;
@ -24,12 +24,17 @@ import org.checkerframework.checker.nullness.qual.Nullable;
*/
public abstract class DatabaseClientTracer<CONNECTION, STATEMENT, SANITIZEDSTATEMENT>
extends BaseTracer {
protected static final String DB_QUERY = "DB Query";
private static final String DB_QUERY = "DB Query";
public DatabaseClientTracer() {}
protected final NetPeerAttributes netPeerAttributes;
public DatabaseClientTracer(OpenTelemetry openTelemetry) {
public DatabaseClientTracer(NetPeerAttributes netPeerAttributes) {
this.netPeerAttributes = netPeerAttributes;
}
public DatabaseClientTracer(OpenTelemetry openTelemetry, NetPeerAttributes netPeerAttributes) {
super(openTelemetry);
this.netPeerAttributes = netPeerAttributes;
}
public boolean shouldStartSpan(Context parentContext) {
@ -121,7 +126,7 @@ public abstract class DatabaseClientTracer<CONNECTION, STATEMENT, SANITIZEDSTATE
}
protected void setNetSemanticConvention(SpanBuilder span, CONNECTION connection) {
NetPeerUtils.INSTANCE.setNetPeer(span, peerAddress(connection));
netPeerAttributes.setNetPeer(span, peerAddress(connection));
}
protected abstract InetSocketAddress peerAddress(CONNECTION connection);

View File

@ -13,7 +13,7 @@ import io.opentelemetry.api.trace.SpanBuilder;
import io.opentelemetry.api.trace.SpanKind;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.tracer.utils.NetPeerUtils;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import java.net.URI;
import java.net.URISyntaxException;
@ -30,12 +30,16 @@ public abstract class HttpClientTracer<REQUEST, CARRIER, RESPONSE> extends BaseT
protected static final String USER_AGENT = "User-Agent";
protected HttpClientTracer() {
protected final NetPeerAttributes netPeerAttributes;
protected HttpClientTracer(NetPeerAttributes netPeerAttributes) {
super();
this.netPeerAttributes = netPeerAttributes;
}
protected HttpClientTracer(OpenTelemetry openTelemetry) {
protected HttpClientTracer(OpenTelemetry openTelemetry, NetPeerAttributes netPeerAttributes) {
super(openTelemetry);
this.netPeerAttributes = netPeerAttributes;
}
protected abstract String method(REQUEST request);
@ -166,7 +170,7 @@ public abstract class HttpClientTracer<REQUEST, CARRIER, RESPONSE> extends BaseT
try {
URI url = url(request);
if (url != null) {
NetPeerUtils.INSTANCE.setNetPeer(span, url.getHost(), null, url.getPort());
netPeerAttributes.setNetPeer(span, url.getHost(), null, url.getPort());
span.setAttribute(SemanticAttributes.HTTP_URL, url.toString());
}
} catch (Exception e) {

View File

@ -154,6 +154,7 @@ public abstract class HttpServerTracer<REQUEST, RESPONSE, CONNECTION, STORAGE> e
public abstract Context getServerContext(STORAGE storage);
protected void onConnection(Span span, CONNECTION connection) {
// TODO: use NetPeerAttributes here
span.setAttribute(SemanticAttributes.NET_PEER_IP, peerHostIP(connection));
Integer port = peerPort(connection);
// Negative or Zero ports might represent an unset/null value for an int type. Skip setting.

View File

@ -3,12 +3,12 @@
* SPDX-License-Identifier: Apache-2.0
*/
package io.opentelemetry.instrumentation.api.tracer.utils;
package io.opentelemetry.instrumentation.api.tracer.net;
import io.opentelemetry.api.common.AttributeKey;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.SpanBuilder;
import io.opentelemetry.instrumentation.api.config.Config;
import io.opentelemetry.instrumentation.api.tracer.AttributeSetter;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import java.net.InetAddress;
import java.net.InetSocketAddress;
@ -16,17 +16,22 @@ import java.util.Collections;
import java.util.Map;
import org.checkerframework.checker.nullness.qual.Nullable;
public final class NetPeerUtils {
public final class NetPeerAttributes {
public static final NetPeerUtils INSTANCE = new NetPeerUtils(Config.get());
// TODO: this should only be used by the javaagent; move to javaagent-api after removing all
// library usages
public static final NetPeerAttributes INSTANCE =
new NetPeerAttributes(
Config.get().getMapProperty("otel.instrumentation.common.peer-service-mapping"));
private final Map<String, String> peerServiceMapping;
// visible for testing
NetPeerUtils(Config config) {
this.peerServiceMapping =
Collections.unmodifiableMap(
config.getMapProperty("otel.instrumentation.common.peer-service-mapping"));
public NetPeerAttributes() {
this(Collections.emptyMap());
}
public NetPeerAttributes(Map<String, String> peerServiceMapping) {
this.peerServiceMapping = peerServiceMapping;
}
public void setNetPeer(Span span, @Nullable InetSocketAddress remoteConnection) {
@ -37,7 +42,7 @@ public final class NetPeerUtils {
setNetPeer(span::setAttribute, remoteConnection);
}
public void setNetPeer(SpanAttributeSetter span, @Nullable InetSocketAddress remoteConnection) {
public void setNetPeer(AttributeSetter span, @Nullable InetSocketAddress remoteConnection) {
if (remoteConnection != null) {
InetAddress remoteAddress = remoteConnection.getAddress();
if (remoteAddress != null) {
@ -58,16 +63,6 @@ public final class NetPeerUtils {
span::setAttribute, remoteAddress.getHostName(), remoteAddress.getHostAddress(), port);
}
public void setNetPeer(Span span, String nameOrIp, int port) {
try {
InetSocketAddress address = new InetSocketAddress(nameOrIp, port);
setNetPeer(span, address);
} catch (IllegalArgumentException iae) {
// can't create address, try setting directly
setNetPeer(span::setAttribute, nameOrIp, null, port);
}
}
public void setNetPeer(Span span, String peerName, String peerIp) {
setNetPeer(span::setAttribute, peerName, peerIp, -1);
}
@ -77,7 +72,7 @@ public final class NetPeerUtils {
}
public void setNetPeer(
SpanAttributeSetter span, @Nullable String peerName, @Nullable String peerIp, int port) {
AttributeSetter span, @Nullable String peerName, @Nullable String peerIp, int port) {
if (peerName != null && !peerName.equals(peerIp)) {
span.setAttribute(SemanticAttributes.NET_PEER_NAME, peerName);
}
@ -104,12 +99,4 @@ public final class NetPeerUtils {
return peerServiceMapping.get(endpoint);
}
/**
* This helper interface allows setting attributes on both {@link Span} and {@link SpanBuilder}.
*/
@FunctionalInterface
public interface SpanAttributeSetter {
<T> void setAttribute(AttributeKey<T> key, T value);
}
}

View File

@ -16,9 +16,6 @@ class BaseTracerTest extends Specification {
@Shared
def tracer = newTracer()
@Shared
def resolvedAddress = new InetSocketAddress("github.com", 999)
def span = Mock(Span)
@Shared

View File

@ -7,23 +7,12 @@ package io.opentelemetry.instrumentation.api.tracer
import io.opentelemetry.api.trace.Span
import io.opentelemetry.context.propagation.TextMapSetter
import io.opentelemetry.instrumentation.api.config.Config
import io.opentelemetry.instrumentation.api.config.ConfigBuilder
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes
import spock.lang.Shared
class HttpClientTracerTest extends BaseTracerTest {
def setupSpec() {
Config.INSTANCE = new ConfigBuilder().readProperties([
"otel.instrumentation.common.peer-service-mapping": "1.2.3.4=catservice,dogs.com=dogsservice"
]).build()
}
def cleanupSpec() {
Config.INSTANCE = null
}
@Shared
def testUrl = new URI("http://myhost:123/somepath")
@ -162,7 +151,10 @@ class HttpClientTracerTest extends BaseTracerTest {
@Override
def newTracer() {
return new HttpClientTracer<Map, Map, Map>() {
def netPeerAttributes = new NetPeerAttributes([
"1.2.3.4": "catservice", "dogs.com": "dogsservice"
])
return new HttpClientTracer<Map, Map, Map>(netPeerAttributes) {
@Override
protected String method(Map m) {

View File

@ -3,18 +3,23 @@
* SPDX-License-Identifier: Apache-2.0
*/
package io.opentelemetry.instrumentation.api.tracer.utils
package io.opentelemetry.instrumentation.api.tracer.net
import io.opentelemetry.instrumentation.api.config.Config
import io.opentelemetry.instrumentation.api.config.ConfigBuilder
import io.opentelemetry.instrumentation.api.tracer.BaseTracerTest
import io.opentelemetry.api.trace.Span
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes
import spock.lang.Shared
import spock.lang.Specification
class NetPeerUtilsTest extends BaseTracerTest {
class NetPeerAttributesTest extends Specification {
@Shared
def resolvedAddress = new InetSocketAddress("github.com", 999)
def span = Mock(Span)
def "test setAttributes"() {
setup:
def utils = new NetPeerUtils(Config.get())
def utils = new NetPeerAttributes([:])
when:
utils.setNetPeer(span, connection)
@ -39,10 +44,9 @@ class NetPeerUtilsTest extends BaseTracerTest {
def "test setAttributes with mapped peer"() {
setup:
def config = new ConfigBuilder().readProperties([
"otel.instrumentation.common.peer-service-mapping": "1.2.3.4=catservice,dogs.com=dogsservice"
]).build()
def utils = new NetPeerUtils(config)
def utils = new NetPeerAttributes([
"1.2.3.4": "catservice", "dogs.com": "dogsservice"
])
when:
utils.setNetPeer(span, connection)

View File

@ -12,6 +12,7 @@ import akka.http.scaladsl.model.HttpRequest;
import akka.http.scaladsl.model.HttpResponse;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import io.opentelemetry.javaagent.instrumentation.akkahttp.AkkaHttpClientInstrumentationModule.AkkaHttpHeaders;
import java.net.URI;
import java.net.URISyntaxException;
@ -20,6 +21,10 @@ public class AkkaHttpClientTracer
extends HttpClientTracer<HttpRequest, AkkaHttpHeaders, HttpResponse> {
private static final AkkaHttpClientTracer TRACER = new AkkaHttpClientTracer();
private AkkaHttpClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static AkkaHttpClientTracer tracer() {
return TRACER;
}

View File

@ -13,7 +13,7 @@ import io.opentelemetry.api.trace.SpanBuilder;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.TextMapGetter;
import io.opentelemetry.instrumentation.api.tracer.RpcServerTracer;
import io.opentelemetry.instrumentation.api.tracer.utils.NetPeerUtils;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import org.apache.dubbo.rpc.Result;
import org.apache.dubbo.rpc.RpcContext;
@ -30,7 +30,7 @@ class DubboTracer extends RpcServerTracer<RpcInvocation> {
spanBuilder(parentContext, DubboHelper.getSpanName(interfaceName, methodName), SERVER)
.setAttribute(SemanticAttributes.RPC_SYSTEM, "dubbo");
DubboHelper.prepareSpan(spanBuilder, interfaceName, methodName);
NetPeerUtils.INSTANCE.setNetPeer(spanBuilder, RpcContext.getContext().getRemoteAddress());
NetPeerAttributes.INSTANCE.setNetPeer(spanBuilder, RpcContext.getContext().getRemoteAddress());
return withServerSpan(Context.current(), spanBuilder.startSpan());
}
@ -40,7 +40,7 @@ class DubboTracer extends RpcServerTracer<RpcInvocation> {
spanBuilder(parentContext, DubboHelper.getSpanName(interfaceName, methodName), CLIENT)
.setAttribute(SemanticAttributes.RPC_SYSTEM, "dubbo");
DubboHelper.prepareSpan(spanBuilder, interfaceName, methodName);
NetPeerUtils.INSTANCE.setNetPeer(spanBuilder, RpcContext.getContext().getRemoteAddress());
NetPeerAttributes.INSTANCE.setNetPeer(spanBuilder, RpcContext.getContext().getRemoteAddress());
return withClientSpan(parentContext, spanBuilder.startSpan());
}

View File

@ -12,6 +12,7 @@ import io.opentelemetry.api.trace.Span;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.http.Header;
@ -28,6 +29,10 @@ public class ApacheHttpAsyncClientTracer
private static final ApacheHttpAsyncClientTracer TRACER = new ApacheHttpAsyncClientTracer();
private ApacheHttpAsyncClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static ApacheHttpAsyncClientTracer tracer() {
return TRACER;
}

View File

@ -8,6 +8,7 @@ package io.opentelemetry.javaagent.instrumentation.apachehttpclient.v2_0;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.commons.httpclient.Header;
@ -18,6 +19,10 @@ import org.apache.commons.httpclient.URIException;
public class CommonsHttpClientTracer extends HttpClientTracer<HttpMethod, HttpMethod, HttpMethod> {
private static final CommonsHttpClientTracer TRACER = new CommonsHttpClientTracer();
private CommonsHttpClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static CommonsHttpClientTracer tracer() {
return TRACER;
}

View File

@ -10,6 +10,7 @@ import static io.opentelemetry.javaagent.instrumentation.apachehttpclient.v4_0.H
import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import java.net.URI;
import org.apache.http.Header;
import org.apache.http.HttpHost;
@ -24,6 +25,10 @@ public class ApacheHttpClientTracer
private static final ApacheHttpClientTracer TRACER = new ApacheHttpClientTracer();
private ApacheHttpClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static ApacheHttpClientTracer tracer() {
return TRACER;
}

View File

@ -8,6 +8,7 @@ package io.opentelemetry.javaagent.instrumentation.apachehttpclient.v5_0;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.hc.core5.http.ClassicHttpRequest;
@ -24,6 +25,10 @@ public class ApacheHttpClientTracer
private static final ApacheHttpClientTracer TRACER = new ApacheHttpClientTracer();
private ApacheHttpClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static ApacheHttpClientTracer tracer() {
return TRACER;
}

View File

@ -13,6 +13,7 @@ import com.linecorp.armeria.common.logging.RequestLog;
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import java.net.URI;
import java.net.URISyntaxException;
import org.checkerframework.checker.nullness.qual.Nullable;
@ -21,7 +22,7 @@ final class ArmeriaClientTracer
extends HttpClientTracer<ClientRequestContext, ClientRequestContext, RequestLog> {
ArmeriaClientTracer(OpenTelemetry openTelemetry) {
super(openTelemetry);
super(openTelemetry, new NetPeerAttributes());
}
@Override
@ -78,6 +79,10 @@ final class ArmeriaClientTracer
return "io.opentelemetry.armeria-1.3";
}
NetPeerAttributes getNetPeerAttributes() {
return netPeerAttributes;
}
private static class ArmeriaSetter implements TextMapSetter<ClientRequestContext> {
private static final ArmeriaSetter INSTANCE = new ArmeriaSetter();

View File

@ -21,7 +21,7 @@ public final class ArmeriaTracing {
private final ArmeriaClientTracer clientTracer;
private final ArmeriaServerTracer serverTracer;
private ArmeriaTracing(OpenTelemetry openTelemetry) {
ArmeriaTracing(OpenTelemetry openTelemetry) {
clientTracer = new ArmeriaClientTracer(openTelemetry);
serverTracer = new ArmeriaServerTracer(openTelemetry);
}

View File

@ -14,7 +14,6 @@ import com.linecorp.armeria.common.logging.RequestLogProperty;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.Scope;
import io.opentelemetry.instrumentation.api.tracer.utils.NetPeerUtils;
import java.util.concurrent.TimeUnit;
/** Decorates an {@link HttpClient} to trace outbound {@link HttpResponse}s. */
@ -41,7 +40,7 @@ final class OpenTelemetryClient extends SimpleDecoratingHttpClient {
.whenComplete()
.thenAccept(
log -> {
NetPeerUtils.INSTANCE.setNetPeer(span, ctx.remoteAddress());
clientTracer.getNetPeerAttributes().setNetPeer(span, ctx.remoteAddress());
long requestEndTimeNanos = requestStartTimeNanos + log.responseDurationNanos();
if (log.responseCause() != null) {

View File

@ -9,6 +9,7 @@ import com.ning.http.client.Request;
import com.ning.http.client.Response;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import java.net.URI;
import java.net.URISyntaxException;
@ -16,6 +17,10 @@ public class AsyncHttpClientTracer extends HttpClientTracer<Request, Request, Re
private static final AsyncHttpClientTracer TRACER = new AsyncHttpClientTracer();
private AsyncHttpClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static AsyncHttpClientTracer tracer() {
return TRACER;
}

View File

@ -7,6 +7,7 @@ package io.opentelemetry.javaagent.instrumentation.asynchttpclient;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import java.net.URI;
import java.net.URISyntaxException;
import org.asynchttpclient.Request;
@ -16,6 +17,10 @@ public class AsyncHttpClientTracer extends HttpClientTracer<Request, Request, Re
private static final AsyncHttpClientTracer TRACER = new AsyncHttpClientTracer();
private AsyncHttpClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static AsyncHttpClientTracer tracer() {
return TRACER;
}

View File

@ -15,6 +15,7 @@ import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.extension.aws.AwsXrayPropagator;
import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import java.net.URI;
import java.util.concurrent.ConcurrentHashMap;
@ -37,7 +38,7 @@ final class AwsSdkClientTracer extends HttpClientTracer<Request<?>, Request<?>,
private final boolean captureExperimentalSpanAttributes;
AwsSdkClientTracer(OpenTelemetry openTelemetry, boolean captureExperimentalSpanAttributes) {
super(openTelemetry);
super(openTelemetry, new NetPeerAttributes());
this.captureExperimentalSpanAttributes = captureExperimentalSpanAttributes;
}

View File

@ -13,6 +13,7 @@ import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.extension.aws.AwsXrayPropagator;
import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import java.net.URI;
import software.amazon.awssdk.core.interceptor.ExecutionAttributes;
import software.amazon.awssdk.core.interceptor.SdkExecutionAttribute;
@ -24,7 +25,7 @@ final class AwsSdkHttpClientTracer
extends HttpClientTracer<SdkHttpRequest, SdkHttpRequest.Builder, SdkHttpResponse> {
AwsSdkHttpClientTracer(OpenTelemetry openTelemetry) {
super(openTelemetry);
super(openTelemetry, new NetPeerAttributes());
}
public Context startSpan(Context parentContext, ExecutionAttributes attributes) {

View File

@ -14,7 +14,7 @@ import io.opentelemetry.context.Context;
import io.opentelemetry.instrumentation.api.db.SqlStatementInfo;
import io.opentelemetry.instrumentation.api.db.SqlStatementSanitizer;
import io.opentelemetry.instrumentation.api.tracer.DatabaseClientTracer;
import io.opentelemetry.instrumentation.api.tracer.utils.NetPeerUtils;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes.DbSystemValues;
import java.net.InetSocketAddress;
@ -24,6 +24,10 @@ public class CassandraDatabaseClientTracer
extends DatabaseClientTracer<Session, String, SqlStatementInfo> {
private static final CassandraDatabaseClientTracer TRACER = new CassandraDatabaseClientTracer();
private CassandraDatabaseClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static CassandraDatabaseClientTracer tracer() {
return TRACER;
}
@ -104,7 +108,7 @@ public class CassandraDatabaseClientTracer
public void end(Context context, ExecutionInfo executionInfo) {
Span span = Span.fromContext(context);
Host host = executionInfo.getQueriedHost();
NetPeerUtils.INSTANCE.setNetPeer(span, host.getSocketAddress());
NetPeerAttributes.INSTANCE.setNetPeer(span, host.getSocketAddress());
end(context);
}
}

View File

@ -19,7 +19,7 @@ import io.opentelemetry.context.Context;
import io.opentelemetry.instrumentation.api.db.SqlStatementInfo;
import io.opentelemetry.instrumentation.api.db.SqlStatementSanitizer;
import io.opentelemetry.instrumentation.api.tracer.DatabaseClientTracer;
import io.opentelemetry.instrumentation.api.tracer.utils.NetPeerUtils;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes.DbSystemValues;
import java.net.InetSocketAddress;
@ -31,6 +31,10 @@ public class CassandraDatabaseClientTracer
private static final CassandraDatabaseClientTracer TRACER = new CassandraDatabaseClientTracer();
private CassandraDatabaseClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static CassandraDatabaseClientTracer tracer() {
return TRACER;
}
@ -111,7 +115,7 @@ public class CassandraDatabaseClientTracer
if (coordinator != null) {
SocketAddress socketAddress = coordinator.getEndPoint().resolve();
if (socketAddress instanceof InetSocketAddress) {
NetPeerUtils.INSTANCE.setNetPeer(span, ((InetSocketAddress) socketAddress));
NetPeerAttributes.INSTANCE.setNetPeer(span, ((InetSocketAddress) socketAddress));
}
if (coordinator.getDatacenter() != null) {
span.setAttribute(

View File

@ -6,6 +6,7 @@
package io.opentelemetry.javaagent.instrumentation.couchbase.v2_0;
import io.opentelemetry.instrumentation.api.tracer.DatabaseClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes.DbSystemValues;
import java.lang.reflect.Method;
import java.net.InetSocketAddress;
@ -13,6 +14,10 @@ import java.net.InetSocketAddress;
public class CouchbaseClientTracer extends DatabaseClientTracer<Void, Method, Void> {
private static final CouchbaseClientTracer TRACER = new CouchbaseClientTracer();
private CouchbaseClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static CouchbaseClientTracer tracer() {
return TRACER;
}

View File

@ -16,7 +16,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
import com.couchbase.client.core.message.CouchbaseRequest;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.instrumentation.api.tracer.utils.NetPeerUtils;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import io.opentelemetry.javaagent.instrumentation.api.ContextStore;
import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext;
import io.opentelemetry.javaagent.tooling.TypeInstrumentation;
@ -68,7 +68,7 @@ public class CouchbaseNetworkInstrumentation implements TypeInstrumentation {
Span span = contextStore.get(request);
if (span != null) {
NetPeerUtils.INSTANCE.setNetPeer(span, remoteHostname, null);
NetPeerAttributes.INSTANCE.setNetPeer(span, remoteHostname, null);
if (remoteSocket != null) {
int splitIndex = remoteSocket.lastIndexOf(":");

View File

@ -8,7 +8,7 @@ package io.opentelemetry.javaagent.instrumentation.elasticsearch.rest;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.context.Context;
import io.opentelemetry.instrumentation.api.tracer.DatabaseClientTracer;
import io.opentelemetry.instrumentation.api.tracer.utils.NetPeerUtils;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import java.net.InetSocketAddress;
import org.elasticsearch.client.Response;
@ -16,6 +16,10 @@ import org.elasticsearch.client.Response;
public class ElasticsearchRestClientTracer extends DatabaseClientTracer<Void, String, String> {
private static final ElasticsearchRestClientTracer TRACER = new ElasticsearchRestClientTracer();
private ElasticsearchRestClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static ElasticsearchRestClientTracer tracer() {
return TRACER;
}
@ -23,7 +27,7 @@ public class ElasticsearchRestClientTracer extends DatabaseClientTracer<Void, St
public void onResponse(Context context, Response response) {
if (response != null && response.getHost() != null) {
Span span = Span.fromContext(context);
NetPeerUtils.INSTANCE.setNetPeer(span, response.getHost().getHostName(), null);
netPeerAttributes.setNetPeer(span, response.getHost().getHostName(), null);
span.setAttribute(SemanticAttributes.NET_PEER_PORT, (long) response.getHost().getPort());
}
}

View File

@ -10,7 +10,7 @@ import static io.opentelemetry.javaagent.instrumentation.elasticsearch.transport
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.context.Context;
import io.opentelemetry.instrumentation.api.config.Config;
import io.opentelemetry.instrumentation.api.tracer.utils.NetPeerUtils;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.ActionRequest;
@ -73,7 +73,7 @@ public class TransportActionListener<T extends ActionResponse> implements Action
Span span = Span.fromContext(context);
if (response.remoteAddress() != null) {
NetPeerUtils.INSTANCE.setNetPeer(
NetPeerAttributes.INSTANCE.setNetPeer(
span, response.remoteAddress().getHost(), response.remoteAddress().getAddress());
span.setAttribute(
SemanticAttributes.NET_PEER_PORT, (long) response.remoteAddress().getPort());

View File

@ -10,7 +10,7 @@ import static io.opentelemetry.javaagent.instrumentation.elasticsearch.transport
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.context.Context;
import io.opentelemetry.instrumentation.api.config.Config;
import io.opentelemetry.instrumentation.api.tracer.utils.NetPeerUtils;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.ActionRequest;
@ -74,7 +74,7 @@ public class TransportActionListener<T extends ActionResponse> implements Action
Span span = Span.fromContext(context);
if (response.remoteAddress() != null) {
NetPeerUtils.INSTANCE.setNetPeer(
NetPeerAttributes.INSTANCE.setNetPeer(
span, response.remoteAddress().getHost(), response.remoteAddress().getAddress());
span.setAttribute(
SemanticAttributes.NET_PEER_PORT, (long) response.remoteAddress().getPort());

View File

@ -10,7 +10,7 @@ import static io.opentelemetry.javaagent.instrumentation.elasticsearch.transport
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.context.Context;
import io.opentelemetry.instrumentation.api.config.Config;
import io.opentelemetry.instrumentation.api.tracer.utils.NetPeerUtils;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.ActionRequest;
@ -77,7 +77,7 @@ public class TransportActionListener<T extends ActionResponse> implements Action
Span span = Span.fromContext(context);
if (response.remoteAddress() != null) {
NetPeerUtils.INSTANCE.setNetPeer(
NetPeerAttributes.INSTANCE.setNetPeer(
span,
response.remoteAddress().address().getHostName(),
response.remoteAddress().getAddress());

View File

@ -9,6 +9,7 @@ import io.opentelemetry.api.trace.Span;
import io.opentelemetry.context.Context;
import io.opentelemetry.instrumentation.api.config.Config;
import io.opentelemetry.instrumentation.api.tracer.DatabaseClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import java.net.InetSocketAddress;
public class ElasticsearchTransportClientTracer extends DatabaseClientTracer<Void, Object, String> {
@ -21,6 +22,10 @@ public class ElasticsearchTransportClientTracer extends DatabaseClientTracer<Voi
private static final ElasticsearchTransportClientTracer TRACER =
new ElasticsearchTransportClientTracer();
private ElasticsearchTransportClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static ElasticsearchTransportClientTracer tracer() {
return TRACER;
}

View File

@ -12,6 +12,7 @@ import io.opentelemetry.context.Context;
import io.opentelemetry.instrumentation.api.db.SqlStatementInfo;
import io.opentelemetry.instrumentation.api.db.SqlStatementSanitizer;
import io.opentelemetry.instrumentation.api.tracer.DatabaseClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import java.net.InetSocketAddress;
import org.apache.geode.cache.Region;
@ -19,6 +20,10 @@ import org.apache.geode.cache.Region;
public class GeodeTracer extends DatabaseClientTracer<Region<?, ?>, String, SqlStatementInfo> {
private static final GeodeTracer TRACER = new GeodeTracer();
private GeodeTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static GeodeTracer tracer() {
return TRACER;
}

View File

@ -13,6 +13,7 @@ import com.google.api.client.http.HttpResponse;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import java.net.URI;
import java.net.URISyntaxException;
@ -20,6 +21,10 @@ public class GoogleHttpClientTracer
extends HttpClientTracer<HttpRequest, HttpHeaders, HttpResponse> {
private static final GoogleHttpClientTracer TRACER = new GoogleHttpClientTracer();
private GoogleHttpClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static GoogleHttpClientTracer tracer() {
return TRACER;
}

View File

@ -22,7 +22,7 @@ import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.Scope;
import io.opentelemetry.instrumentation.api.tracer.utils.NetPeerUtils;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.util.concurrent.atomic.AtomicLong;
@ -56,7 +56,7 @@ final class TracingClientInterceptor implements ClientInterceptor {
SocketAddress address = result.getAttributes().get(Grpc.TRANSPORT_ATTR_REMOTE_ADDR);
if (address instanceof InetSocketAddress) {
InetSocketAddress inetSocketAddress = (InetSocketAddress) address;
NetPeerUtils.INSTANCE.setNetPeer(span, inetSocketAddress);
NetPeerAttributes.INSTANCE.setNetPeer(span, inetSocketAddress);
}
return new TracingClientCall<>(result, span, context);

View File

@ -10,6 +10,7 @@ import static io.opentelemetry.javaagent.instrumentation.httpurlconnection.Heade
import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import java.net.HttpURLConnection;
import java.net.URI;
import java.net.URISyntaxException;
@ -19,6 +20,10 @@ public class HttpUrlConnectionTracer
private static final HttpUrlConnectionTracer TRACER = new HttpUrlConnectionTracer();
private HttpUrlConnectionTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static HttpUrlConnectionTracer tracer() {
return TRACER;
}

View File

@ -9,6 +9,7 @@ import io.opentelemetry.api.trace.Span;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import java.net.URI;
import java.net.http.HttpClient.Version;
@ -24,6 +25,10 @@ public class JdkHttpClientTracer
extends HttpClientTracer<HttpRequest, HttpRequest, HttpResponse<?>> {
private static final JdkHttpClientTracer TRACER = new JdkHttpClientTracer();
private JdkHttpClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static JdkHttpClientTracer tracer() {
return TRACER;
}

View File

@ -11,12 +11,17 @@ import com.sun.jersey.api.client.ClientRequest;
import com.sun.jersey.api.client.ClientResponse;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import java.net.URI;
public class JaxRsClientV1Tracer
extends HttpClientTracer<ClientRequest, ClientRequest, ClientResponse> {
private static final JaxRsClientV1Tracer TRACER = new JaxRsClientV1Tracer();
private JaxRsClientV1Tracer() {
super(NetPeerAttributes.INSTANCE);
}
public static JaxRsClientV1Tracer tracer() {
return TRACER;
}

View File

@ -9,6 +9,7 @@ import static io.opentelemetry.javaagent.instrumentation.jaxrsclient.v2_0.Inject
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import java.net.URI;
import javax.ws.rs.client.ClientRequestContext;
import javax.ws.rs.client.ClientResponseContext;
@ -17,6 +18,10 @@ public class JaxRsClientTracer
extends HttpClientTracer<ClientRequestContext, ClientRequestContext, ClientResponseContext> {
private static final JaxRsClientTracer TRACER = new JaxRsClientTracer();
private JaxRsClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static JaxRsClientTracer tracer() {
return TRACER;
}

View File

@ -9,6 +9,7 @@ import static io.opentelemetry.javaagent.instrumentation.jaxrsclient.v2_0.Restea
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import java.net.URI;
import javax.ws.rs.core.Response;
import org.jboss.resteasy.client.jaxrs.internal.ClientInvocation;
@ -17,6 +18,10 @@ public class ResteasyClientTracer
extends HttpClientTracer<ClientInvocation, ClientInvocation, Response> {
private static final ResteasyClientTracer TRACER = new ResteasyClientTracer();
private ResteasyClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static ResteasyClientTracer tracer() {
return TRACER;
}

View File

@ -12,6 +12,7 @@ import io.opentelemetry.context.Context;
import io.opentelemetry.instrumentation.api.db.SqlStatementInfo;
import io.opentelemetry.instrumentation.api.db.SqlStatementSanitizer;
import io.opentelemetry.instrumentation.api.tracer.DatabaseClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import java.net.InetSocketAddress;
import java.sql.Connection;
@ -23,6 +24,10 @@ import java.sql.Statement;
public class JdbcTracer extends DatabaseClientTracer<DbInfo, String, SqlStatementInfo> {
private static final JdbcTracer TRACER = new JdbcTracer();
private JdbcTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static JdbcTracer tracer() {
return TRACER;
}

View File

@ -7,6 +7,7 @@ package io.opentelemetry.javaagent.instrumentation.jedis.v1_4;
import io.opentelemetry.instrumentation.api.db.RedisCommandSanitizer;
import io.opentelemetry.instrumentation.api.tracer.DatabaseClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import io.opentelemetry.javaagent.instrumentation.jedis.v1_4.JedisClientTracer.CommandWithArgs;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes.DbSystemValues;
import java.net.InetSocketAddress;
@ -18,6 +19,10 @@ import redis.clients.jedis.Protocol.Command;
public class JedisClientTracer extends DatabaseClientTracer<Connection, CommandWithArgs, String> {
private static final JedisClientTracer TRACER = new JedisClientTracer();
private JedisClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static JedisClientTracer tracer() {
return TRACER;
}

View File

@ -7,6 +7,7 @@ package io.opentelemetry.javaagent.instrumentation.jedis.v3_0;
import io.opentelemetry.instrumentation.api.db.RedisCommandSanitizer;
import io.opentelemetry.instrumentation.api.tracer.DatabaseClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import io.opentelemetry.javaagent.instrumentation.jedis.v3_0.JedisClientTracer.CommandWithArgs;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes.DbSystemValues;
import java.net.InetSocketAddress;
@ -20,6 +21,10 @@ import redis.clients.jedis.commands.ProtocolCommand;
public class JedisClientTracer extends DatabaseClientTracer<Connection, CommandWithArgs, String> {
private static final JedisClientTracer TRACER = new JedisClientTracer();
private JedisClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static JedisClientTracer tracer() {
return TRACER;
}

View File

@ -9,6 +9,7 @@ import static io.opentelemetry.javaagent.instrumentation.khttp.KHttpHeadersInjec
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Map;
@ -17,6 +18,10 @@ import khttp.responses.Response;
public class KHttpTracer extends HttpClientTracer<RequestWrapper, Map<String, String>, Response> {
private static final KHttpTracer TRACER = new KHttpTracer();
private KHttpTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static KHttpTracer tracer() {
return TRACER;
}

View File

@ -12,6 +12,7 @@ import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.config.Config;
import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import java.net.URI;
import java.util.Collections;
@ -29,6 +30,10 @@ public class KubernetesClientTracer
private static final KubernetesClientTracer TRACER = new KubernetesClientTracer();
private KubernetesClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static KubernetesClientTracer tracer() {
return TRACER;
}

View File

@ -8,6 +8,7 @@ package io.opentelemetry.javaagent.instrumentation.lettuce.v4_0;
import com.lambdaworks.redis.RedisURI;
import io.opentelemetry.api.trace.SpanBuilder;
import io.opentelemetry.instrumentation.api.tracer.DatabaseClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes.DbSystemValues;
import java.net.InetSocketAddress;
@ -15,6 +16,10 @@ import java.net.InetSocketAddress;
public abstract class LettuceAbstractDatabaseClientTracer<STATEMENT>
extends DatabaseClientTracer<RedisURI, STATEMENT, String> {
protected LettuceAbstractDatabaseClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
@Override
protected String spanName(RedisURI connection, STATEMENT statement, String operation) {
return operation;

View File

@ -8,12 +8,17 @@ package io.opentelemetry.javaagent.instrumentation.lettuce.v5_0;
import io.lettuce.core.RedisURI;
import io.opentelemetry.api.trace.SpanBuilder;
import io.opentelemetry.instrumentation.api.tracer.DatabaseClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes.DbSystemValues;
import java.net.InetSocketAddress;
public abstract class LettuceAbstractDatabaseClientTracer<STATEMENT>
extends DatabaseClientTracer<RedisURI, STATEMENT, String> {
protected LettuceAbstractDatabaseClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
@Override
protected String getInstrumentationName() {
return "io.opentelemetry.javaagent.lettuce-5.0";

View File

@ -18,8 +18,8 @@ import io.opentelemetry.api.trace.SpanKind;
import io.opentelemetry.api.trace.StatusCode;
import io.opentelemetry.context.Context;
import io.opentelemetry.instrumentation.api.db.RedisCommandSanitizer;
import io.opentelemetry.instrumentation.api.tracer.utils.NetPeerUtils;
import io.opentelemetry.instrumentation.api.tracer.utils.NetPeerUtils.SpanAttributeSetter;
import io.opentelemetry.instrumentation.api.tracer.AttributeSetter;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes.DbSystemValues;
import java.net.InetSocketAddress;
@ -269,9 +269,9 @@ final class OpenTelemetryTracing implements Tracing {
}
}
private static void fillEndpoint(SpanAttributeSetter span, OpenTelemetryEndpoint endpoint) {
private static void fillEndpoint(AttributeSetter span, OpenTelemetryEndpoint endpoint) {
span.setAttribute(SemanticAttributes.NET_TRANSPORT, "IP.TCP");
NetPeerUtils.INSTANCE.setNetPeer(span, endpoint.name, endpoint.ip, endpoint.port);
NetPeerAttributes.INSTANCE.setNetPeer(span, endpoint.name, endpoint.ip, endpoint.port);
StringBuilder redisUrl =
new StringBuilder("redis://").append(endpoint.name != null ? endpoint.name : endpoint.ip);

View File

@ -12,6 +12,7 @@ import com.mongodb.connection.ConnectionDescription;
import com.mongodb.event.CommandStartedEvent;
import io.opentelemetry.api.trace.SpanBuilder;
import io.opentelemetry.instrumentation.api.tracer.DatabaseClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes.DbSystemValues;
import java.io.StringWriter;
@ -41,6 +42,7 @@ public class MongoClientTracer
}
public MongoClientTracer(int maxNormalizedQueryLength) {
super(NetPeerAttributes.INSTANCE);
this.maxNormalizedQueryLength = maxNormalizedQueryLength;
this.jsonWriterSettings = createJsonWriterSettings(maxNormalizedQueryLength);
}

View File

@ -13,7 +13,7 @@ import io.opentelemetry.api.trace.Span;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer;
import io.opentelemetry.instrumentation.api.tracer.utils.NetPeerUtils;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import java.net.InetSocketAddress;
import java.net.URI;
import java.net.URISyntaxException;
@ -27,6 +27,10 @@ public class NettyHttpClientTracer
extends HttpClientTracer<HttpRequest, HttpHeaders, HttpResponse> {
private static final NettyHttpClientTracer TRACER = new NettyHttpClientTracer();
private NettyHttpClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static NettyHttpClientTracer tracer() {
return TRACER;
}
@ -34,7 +38,8 @@ public class NettyHttpClientTracer
public Context startSpan(Context parentContext, ChannelHandlerContext ctx, HttpRequest request) {
Span span = spanBuilder(parentContext, spanNameForRequest(request), CLIENT).startSpan();
onRequest(span, request);
NetPeerUtils.INSTANCE.setNetPeer(span, (InetSocketAddress) ctx.getChannel().getRemoteAddress());
NetPeerAttributes.INSTANCE.setNetPeer(
span, (InetSocketAddress) ctx.getChannel().getRemoteAddress());
Context context = withClientSpan(parentContext, span);
inject(context, request.headers(), SETTER);

View File

@ -17,7 +17,7 @@ import io.opentelemetry.api.trace.Span;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer;
import io.opentelemetry.instrumentation.api.tracer.utils.NetPeerUtils;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import java.net.InetSocketAddress;
import java.net.URI;
import java.net.URISyntaxException;
@ -27,6 +27,10 @@ public class NettyHttpClientTracer
extends HttpClientTracer<HttpRequest, HttpHeaders, HttpResponse> {
private static final NettyHttpClientTracer TRACER = new NettyHttpClientTracer();
private NettyHttpClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static NettyHttpClientTracer tracer() {
return TRACER;
}
@ -34,7 +38,7 @@ public class NettyHttpClientTracer
public Context startSpan(Context parentContext, ChannelHandlerContext ctx, HttpRequest request) {
Span span = spanBuilder(parentContext, spanNameForRequest(request), CLIENT).startSpan();
onRequest(span, request);
NetPeerUtils.INSTANCE.setNetPeer(span, (InetSocketAddress) ctx.channel().remoteAddress());
NetPeerAttributes.INSTANCE.setNetPeer(span, (InetSocketAddress) ctx.channel().remoteAddress());
Context context = withClientSpan(parentContext, span);
inject(context, request.headers(), SETTER);

View File

@ -17,7 +17,7 @@ import io.opentelemetry.api.trace.Span;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer;
import io.opentelemetry.instrumentation.api.tracer.utils.NetPeerUtils;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import java.net.InetSocketAddress;
import java.net.URI;
import java.net.URISyntaxException;
@ -27,6 +27,10 @@ public class NettyHttpClientTracer
extends HttpClientTracer<HttpRequest, HttpHeaders, HttpResponse> {
private static final NettyHttpClientTracer TRACER = new NettyHttpClientTracer();
private NettyHttpClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static NettyHttpClientTracer tracer() {
return TRACER;
}
@ -34,7 +38,7 @@ public class NettyHttpClientTracer
public Context startSpan(Context parentContext, ChannelHandlerContext ctx, HttpRequest request) {
Span span = spanBuilder(parentContext, spanNameForRequest(request), CLIENT).startSpan();
onRequest(span, request);
NetPeerUtils.INSTANCE.setNetPeer(span, (InetSocketAddress) ctx.channel().remoteAddress());
NetPeerAttributes.INSTANCE.setNetPeer(span, (InetSocketAddress) ctx.channel().remoteAddress());
Context context = withClientSpan(parentContext, span);
inject(context, request.headers(), SETTER);

View File

@ -11,12 +11,17 @@ import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import java.net.URI;
import java.net.URISyntaxException;
public class OkHttpClientTracer extends HttpClientTracer<Request, Request.Builder, Response> {
private static final OkHttpClientTracer TRACER = new OkHttpClientTracer();
private OkHttpClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static OkHttpClientTracer tracer() {
return TRACER;
}

View File

@ -10,6 +10,7 @@ import static io.opentelemetry.instrumentation.okhttp.v3_0.RequestBuilderInjectA
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import java.net.URI;
import okhttp3.Request;
import okhttp3.Response;
@ -17,7 +18,7 @@ import okhttp3.Response;
final class OkHttpClientTracer extends HttpClientTracer<Request, Request.Builder, Response> {
OkHttpClientTracer(OpenTelemetry openTelemetry) {
super(openTelemetry);
super(openTelemetry, new NetPeerAttributes());
}
@Override

View File

@ -18,7 +18,7 @@ public final class OkHttpTracing {
private final OkHttpClientTracer tracer;
private OkHttpTracing(OpenTelemetry openTelemetry) {
OkHttpTracing(OpenTelemetry openTelemetry) {
this.tracer = new OkHttpClientTracer(openTelemetry);
}

View File

@ -9,6 +9,7 @@ import static io.opentelemetry.javaagent.instrumentation.playws.HeadersInjectAda
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import java.net.URI;
import java.net.URISyntaxException;
import play.shaded.ahc.io.netty.handler.codec.http.HttpHeaders;
@ -18,6 +19,10 @@ import play.shaded.ahc.org.asynchttpclient.Response;
public class PlayWsClientTracer extends HttpClientTracer<Request, HttpHeaders, Response> {
private static final PlayWsClientTracer TRACER = new PlayWsClientTracer();
private PlayWsClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static PlayWsClientTracer tracer() {
return TRACER;
}

View File

@ -22,7 +22,7 @@ import io.opentelemetry.api.trace.SpanKind;
import io.opentelemetry.context.Context;
import io.opentelemetry.instrumentation.api.config.Config;
import io.opentelemetry.instrumentation.api.tracer.BaseTracer;
import io.opentelemetry.instrumentation.api.tracer.utils.NetPeerUtils;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@ -47,7 +47,7 @@ public class RabbitTracer extends BaseTracer {
.setAttribute(SemanticAttributes.MESSAGING_SYSTEM, "rabbitmq")
.setAttribute(SemanticAttributes.MESSAGING_DESTINATION_KIND, "queue");
NetPeerUtils.INSTANCE.setNetPeer(span, connection.getAddress(), connection.getPort());
NetPeerAttributes.INSTANCE.setNetPeer(span, connection.getAddress(), connection.getPort());
return parentContext.with(span.startSpan());
}
@ -73,7 +73,8 @@ public class RabbitTracer extends BaseTracer {
SemanticAttributes.MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES,
(long) response.getBody().length);
}
NetPeerUtils.INSTANCE.setNetPeer(spanBuilder, connection.getAddress(), connection.getPort());
NetPeerAttributes.INSTANCE.setNetPeer(
spanBuilder, connection.getAddress(), connection.getPort());
onGet(spanBuilder, queue);
// TODO: withClientSpan()?

View File

@ -6,6 +6,7 @@
package io.opentelemetry.javaagent.instrumentation.rediscala;
import io.opentelemetry.instrumentation.api.tracer.DatabaseClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes.DbSystemValues;
import java.net.InetSocketAddress;
import redis.RedisCommand;
@ -15,6 +16,10 @@ public class RediscalaClientTracer
private static final RediscalaClientTracer TRACER = new RediscalaClientTracer();
private RediscalaClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static RediscalaClientTracer tracer() {
return TRACER;
}

View File

@ -12,6 +12,7 @@ import io.netty.buffer.ByteBuf;
import io.netty.channel.Channel;
import io.opentelemetry.instrumentation.api.db.RedisCommandSanitizer;
import io.opentelemetry.instrumentation.api.tracer.DatabaseClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes.DbSystemValues;
import java.net.InetSocketAddress;
import java.util.ArrayList;
@ -27,6 +28,10 @@ public class RedissonClientTracer
private static final RedissonClientTracer TRACER = new RedissonClientTracer();
private RedissonClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static RedissonClientTracer tracer() {
return TRACER;
}

View File

@ -19,6 +19,7 @@ public final class RestTemplateInterceptor implements ClientHttpRequestIntercept
private final RestTemplateTracer tracer;
// TODO: create a SpringWebTracing class that follows the new library instrumentation pattern
public RestTemplateInterceptor(OpenTelemetry openTelemetry) {
this.tracer = new RestTemplateTracer(openTelemetry);
}

View File

@ -10,6 +10,7 @@ import static io.opentelemetry.instrumentation.spring.httpclients.HttpHeadersInj
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import java.io.IOException;
import java.net.URI;
import org.springframework.http.HttpHeaders;
@ -19,7 +20,7 @@ import org.springframework.http.client.ClientHttpResponse;
class RestTemplateTracer extends HttpClientTracer<HttpRequest, HttpHeaders, ClientHttpResponse> {
RestTemplateTracer(OpenTelemetry openTelemetry) {
super(openTelemetry);
super(openTelemetry, new NetPeerAttributes());
}
@Override

View File

@ -12,6 +12,7 @@ import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.config.Config;
import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
@ -25,6 +26,10 @@ public class SpringWebfluxHttpClientTracer
private static final SpringWebfluxHttpClientTracer TRACER = new SpringWebfluxHttpClientTracer();
private SpringWebfluxHttpClientTracer() {
super(new NetPeerAttributes());
}
public static SpringWebfluxHttpClientTracer tracer() {
return TRACER;
}

View File

@ -6,6 +6,7 @@
package io.opentelemetry.javaagent.instrumentation.spymemcached;
import io.opentelemetry.instrumentation.api.tracer.DatabaseClientTracer;
import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
import java.net.InetSocketAddress;
import net.spy.memcached.MemcachedConnection;
@ -13,6 +14,10 @@ public class MemcacheClientTracer
extends DatabaseClientTracer<MemcachedConnection, String, String> {
private static final MemcacheClientTracer TRACER = new MemcacheClientTracer();
private MemcacheClientTracer() {
super(NetPeerAttributes.INSTANCE);
}
public static MemcacheClientTracer tracer() {
return TRACER;
}