Update instrumentation to be compliant with HTTP semantic conventions (#227)
* Update HTTP client-side span names * Add query and fragment to http.url for HTTP client spans * Add query and fragment to http.url for HTTP server spans * Update HTTP server span names to be the matched route or resource * Use net.peer.* instead of peer.* attributes
This commit is contained in:
parent
f5c5e57020
commit
5b1218cdb8
|
@ -22,8 +22,6 @@ import io.opentelemetry.trace.Status;
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
import java.io.StringWriter;
|
import java.io.StringWriter;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.net.Inet4Address;
|
|
||||||
import java.net.Inet6Address;
|
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
|
@ -69,8 +67,8 @@ public abstract class BaseDecorator {
|
||||||
if (remoteConnection != null) {
|
if (remoteConnection != null) {
|
||||||
onPeerConnection(span, remoteConnection.getAddress());
|
onPeerConnection(span, remoteConnection.getAddress());
|
||||||
|
|
||||||
span.setAttribute(Tags.PEER_HOSTNAME, remoteConnection.getHostName());
|
span.setAttribute(MoreTags.NET_PEER_NAME, remoteConnection.getHostName());
|
||||||
span.setAttribute(Tags.PEER_PORT, remoteConnection.getPort());
|
span.setAttribute(MoreTags.NET_PEER_PORT, remoteConnection.getPort());
|
||||||
}
|
}
|
||||||
return span;
|
return span;
|
||||||
}
|
}
|
||||||
|
@ -78,12 +76,8 @@ public abstract class BaseDecorator {
|
||||||
public Span onPeerConnection(final Span span, final InetAddress remoteAddress) {
|
public Span onPeerConnection(final Span span, final InetAddress remoteAddress) {
|
||||||
assert span != null;
|
assert span != null;
|
||||||
if (remoteAddress != null) {
|
if (remoteAddress != null) {
|
||||||
span.setAttribute(Tags.PEER_HOSTNAME, remoteAddress.getHostName());
|
span.setAttribute(MoreTags.NET_PEER_NAME, remoteAddress.getHostName());
|
||||||
if (remoteAddress instanceof Inet4Address) {
|
span.setAttribute(MoreTags.NET_PEER_IP, remoteAddress.getHostAddress());
|
||||||
span.setAttribute(Tags.PEER_HOST_IPV4, remoteAddress.getHostAddress());
|
|
||||||
} else if (remoteAddress instanceof Inet6Address) {
|
|
||||||
span.setAttribute(Tags.PEER_HOST_IPV6, remoteAddress.getHostAddress());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return span;
|
return span;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,8 @@ import lombok.extern.slf4j.Slf4j;
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public abstract class HttpClientDecorator<REQUEST, RESPONSE> extends ClientDecorator {
|
public abstract class HttpClientDecorator<REQUEST, RESPONSE> extends ClientDecorator {
|
||||||
|
|
||||||
|
public static final String DEFAULT_SPAN_NAME = "HTTP request";
|
||||||
|
|
||||||
protected abstract String method(REQUEST request);
|
protected abstract String method(REQUEST request);
|
||||||
|
|
||||||
protected abstract URI url(REQUEST request) throws URISyntaxException;
|
protected abstract URI url(REQUEST request) throws URISyntaxException;
|
||||||
|
@ -48,6 +50,14 @@ public abstract class HttpClientDecorator<REQUEST, RESPONSE> extends ClientDecor
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String spanNameForRequest(final REQUEST request) {
|
||||||
|
if (request == null) {
|
||||||
|
return DEFAULT_SPAN_NAME;
|
||||||
|
}
|
||||||
|
final String method = method(request);
|
||||||
|
return method != null ? "HTTP " + method : DEFAULT_SPAN_NAME;
|
||||||
|
}
|
||||||
|
|
||||||
public Span onRequest(final Span span, final REQUEST request) {
|
public Span onRequest(final Span span, final REQUEST request) {
|
||||||
assert span != null;
|
assert span != null;
|
||||||
if (request != null) {
|
if (request != null) {
|
||||||
|
@ -60,33 +70,39 @@ public abstract class HttpClientDecorator<REQUEST, RESPONSE> extends ClientDecor
|
||||||
try {
|
try {
|
||||||
final URI url = url(request);
|
final URI url = url(request);
|
||||||
if (url != null) {
|
if (url != null) {
|
||||||
final StringBuilder urlNoParams = new StringBuilder();
|
final StringBuilder urlBuilder = new StringBuilder();
|
||||||
if (url.getScheme() != null) {
|
if (url.getScheme() != null) {
|
||||||
urlNoParams.append(url.getScheme());
|
urlBuilder.append(url.getScheme());
|
||||||
urlNoParams.append("://");
|
urlBuilder.append("://");
|
||||||
}
|
}
|
||||||
if (url.getHost() != null) {
|
if (url.getHost() != null) {
|
||||||
urlNoParams.append(url.getHost());
|
urlBuilder.append(url.getHost());
|
||||||
if (url.getPort() > 0 && url.getPort() != 80 && url.getPort() != 443) {
|
if (url.getPort() > 0 && url.getPort() != 80 && url.getPort() != 443) {
|
||||||
urlNoParams.append(":");
|
urlBuilder.append(":");
|
||||||
urlNoParams.append(url.getPort());
|
urlBuilder.append(url.getPort());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
final String path = url.getPath();
|
final String path = url.getPath();
|
||||||
if (path.isEmpty()) {
|
if (path.isEmpty()) {
|
||||||
urlNoParams.append("/");
|
urlBuilder.append("/");
|
||||||
} else {
|
} else {
|
||||||
urlNoParams.append(path);
|
urlBuilder.append(path);
|
||||||
|
}
|
||||||
|
final String query = url.getQuery();
|
||||||
|
if (query != null) {
|
||||||
|
urlBuilder.append("?").append(query);
|
||||||
|
}
|
||||||
|
final String fragment = url.getFragment();
|
||||||
|
if (fragment != null) {
|
||||||
|
urlBuilder.append("#").append(fragment);
|
||||||
}
|
}
|
||||||
|
|
||||||
span.setAttribute(Tags.HTTP_URL, urlNoParams.toString());
|
span.setAttribute(Tags.HTTP_URL, urlBuilder.toString());
|
||||||
|
|
||||||
if (Config.get().isHttpClientTagQueryString()) {
|
if (Config.get().isHttpClientTagQueryString()) {
|
||||||
final String query = url.getQuery();
|
|
||||||
if (query != null) {
|
if (query != null) {
|
||||||
span.setAttribute(MoreTags.HTTP_QUERY, query);
|
span.setAttribute(MoreTags.HTTP_QUERY, query);
|
||||||
}
|
}
|
||||||
final String fragment = url.getFragment();
|
|
||||||
if (fragment != null) {
|
if (fragment != null) {
|
||||||
span.setAttribute(MoreTags.HTTP_FRAGMENT, fragment);
|
span.setAttribute(MoreTags.HTTP_FRAGMENT, fragment);
|
||||||
}
|
}
|
||||||
|
@ -98,7 +114,7 @@ public abstract class HttpClientDecorator<REQUEST, RESPONSE> extends ClientDecor
|
||||||
|
|
||||||
final String hostname = hostname(request);
|
final String hostname = hostname(request);
|
||||||
if (hostname != null) {
|
if (hostname != null) {
|
||||||
span.setAttribute(Tags.PEER_HOSTNAME, hostname);
|
span.setAttribute(MoreTags.NET_PEER_NAME, hostname);
|
||||||
|
|
||||||
if (Config.get().isHttpClientSplitByDomain()) {
|
if (Config.get().isHttpClientSplitByDomain()) {
|
||||||
span.setAttribute(MoreTags.SERVICE_NAME, hostname);
|
span.setAttribute(MoreTags.SERVICE_NAME, hostname);
|
||||||
|
@ -107,7 +123,7 @@ public abstract class HttpClientDecorator<REQUEST, RESPONSE> extends ClientDecor
|
||||||
final Integer port = port(request);
|
final Integer port = port(request);
|
||||||
// Negative or Zero ports might represent an unset/null value for an int type. Skip setting.
|
// Negative or Zero ports might represent an unset/null value for an int type. Skip setting.
|
||||||
if (port != null && port > 0) {
|
if (port != null && port > 0) {
|
||||||
span.setAttribute(Tags.PEER_PORT, port);
|
span.setAttribute(MoreTags.NET_PEER_PORT, port);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return span;
|
return span;
|
||||||
|
|
|
@ -23,17 +23,12 @@ import io.opentelemetry.trace.Span;
|
||||||
import io.opentelemetry.trace.Status;
|
import io.opentelemetry.trace.Status;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.util.regex.Pattern;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public abstract class HttpServerDecorator<REQUEST, CONNECTION, RESPONSE> extends ServerDecorator {
|
public abstract class HttpServerDecorator<REQUEST, CONNECTION, RESPONSE> extends ServerDecorator {
|
||||||
public static final String SPAN_ATTRIBUTE = "io.opentelemetry.auto.span";
|
public static final String SPAN_ATTRIBUTE = "io.opentelemetry.auto.span";
|
||||||
|
public static final String DEFAULT_SPAN_NAME = "HTTP request";
|
||||||
// Source: https://www.regextester.com/22
|
|
||||||
private static final Pattern VALID_IPV4_ADDRESS =
|
|
||||||
Pattern.compile(
|
|
||||||
"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$");
|
|
||||||
|
|
||||||
protected abstract String method(REQUEST request);
|
protected abstract String method(REQUEST request);
|
||||||
|
|
||||||
|
@ -50,6 +45,14 @@ public abstract class HttpServerDecorator<REQUEST, CONNECTION, RESPONSE> extends
|
||||||
return SpanTypes.HTTP_SERVER;
|
return SpanTypes.HTTP_SERVER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String spanNameForRequest(final REQUEST request) {
|
||||||
|
if (request == null) {
|
||||||
|
return DEFAULT_SPAN_NAME;
|
||||||
|
}
|
||||||
|
final String method = method(request);
|
||||||
|
return method != null ? "HTTP " + method : DEFAULT_SPAN_NAME;
|
||||||
|
}
|
||||||
|
|
||||||
public Span onRequest(final Span span, final REQUEST request) {
|
public Span onRequest(final Span span, final REQUEST request) {
|
||||||
assert span != null;
|
assert span != null;
|
||||||
if (request != null) {
|
if (request != null) {
|
||||||
|
@ -59,26 +62,34 @@ public abstract class HttpServerDecorator<REQUEST, CONNECTION, RESPONSE> extends
|
||||||
try {
|
try {
|
||||||
final URI url = url(request);
|
final URI url = url(request);
|
||||||
if (url != null) {
|
if (url != null) {
|
||||||
final StringBuilder urlNoParams = new StringBuilder();
|
final StringBuilder urlBuilder = new StringBuilder();
|
||||||
if (url.getScheme() != null) {
|
if (url.getScheme() != null) {
|
||||||
urlNoParams.append(url.getScheme());
|
urlBuilder.append(url.getScheme());
|
||||||
urlNoParams.append("://");
|
urlBuilder.append("://");
|
||||||
}
|
}
|
||||||
if (url.getHost() != null) {
|
if (url.getHost() != null) {
|
||||||
urlNoParams.append(url.getHost());
|
urlBuilder.append(url.getHost());
|
||||||
if (url.getPort() > 0 && url.getPort() != 80 && url.getPort() != 443) {
|
if (url.getPort() > 0 && url.getPort() != 80 && url.getPort() != 443) {
|
||||||
urlNoParams.append(":");
|
urlBuilder.append(":");
|
||||||
urlNoParams.append(url.getPort());
|
urlBuilder.append(url.getPort());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
final String path = url.getPath();
|
final String path = url.getPath();
|
||||||
if (path.isEmpty()) {
|
if (path.isEmpty()) {
|
||||||
urlNoParams.append("/");
|
urlBuilder.append("/");
|
||||||
} else {
|
} else {
|
||||||
urlNoParams.append(path);
|
urlBuilder.append(path);
|
||||||
|
}
|
||||||
|
final String query = url.getQuery();
|
||||||
|
if (query != null) {
|
||||||
|
urlBuilder.append("?").append(query);
|
||||||
|
}
|
||||||
|
final String fragment = url.getFragment();
|
||||||
|
if (fragment != null) {
|
||||||
|
urlBuilder.append("#").append(fragment);
|
||||||
}
|
}
|
||||||
|
|
||||||
span.setAttribute(Tags.HTTP_URL, urlNoParams.toString());
|
span.setAttribute(Tags.HTTP_URL, urlBuilder.toString());
|
||||||
|
|
||||||
if (Config.get().isHttpServerTagQueryString()) {
|
if (Config.get().isHttpServerTagQueryString()) {
|
||||||
if (url.getQuery() != null) {
|
if (url.getQuery() != null) {
|
||||||
|
@ -102,16 +113,12 @@ public abstract class HttpServerDecorator<REQUEST, CONNECTION, RESPONSE> extends
|
||||||
if (connection != null) {
|
if (connection != null) {
|
||||||
final String ip = peerHostIP(connection);
|
final String ip = peerHostIP(connection);
|
||||||
if (ip != null) {
|
if (ip != null) {
|
||||||
if (VALID_IPV4_ADDRESS.matcher(ip).matches()) {
|
span.setAttribute(MoreTags.NET_PEER_IP, ip);
|
||||||
span.setAttribute(Tags.PEER_HOST_IPV4, ip);
|
|
||||||
} else if (ip.contains(":")) {
|
|
||||||
span.setAttribute(Tags.PEER_HOST_IPV6, ip);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
final Integer port = peerPort(connection);
|
final Integer port = peerPort(connection);
|
||||||
// Negative or Zero ports might represent an unset/null value for an int type. Skip setting.
|
// Negative or Zero ports might represent an unset/null value for an int type. Skip setting.
|
||||||
if (port != null && port > 0) {
|
if (port != null && port > 0) {
|
||||||
span.setAttribute(Tags.PEER_PORT, port);
|
span.setAttribute(MoreTags.NET_PEER_PORT, port);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return span;
|
return span;
|
||||||
|
|
|
@ -46,17 +46,12 @@ class BaseDecoratorTest extends AgentSpecification {
|
||||||
|
|
||||||
then:
|
then:
|
||||||
if (connection.getAddress()) {
|
if (connection.getAddress()) {
|
||||||
2 * span.setAttribute(Tags.PEER_HOSTNAME, connection.hostName)
|
2 * span.setAttribute(MoreTags.NET_PEER_NAME, connection.hostName)
|
||||||
|
1 * span.setAttribute(MoreTags.NET_PEER_IP, connection.address.hostAddress)
|
||||||
} else {
|
} else {
|
||||||
1 * span.setAttribute(Tags.PEER_HOSTNAME, connection.hostName)
|
1 * span.setAttribute(MoreTags.NET_PEER_NAME, connection.hostName)
|
||||||
}
|
|
||||||
1 * span.setAttribute(Tags.PEER_PORT, connection.port)
|
|
||||||
if (connection.address instanceof Inet4Address) {
|
|
||||||
1 * span.setAttribute(Tags.PEER_HOST_IPV4, connection.address.hostAddress)
|
|
||||||
}
|
|
||||||
if (connection.address instanceof Inet6Address) {
|
|
||||||
1 * span.setAttribute(Tags.PEER_HOST_IPV6, connection.address.hostAddress)
|
|
||||||
}
|
}
|
||||||
|
1 * span.setAttribute(MoreTags.NET_PEER_PORT, connection.port)
|
||||||
0 * _
|
0 * _
|
||||||
|
|
||||||
where:
|
where:
|
||||||
|
|
|
@ -44,8 +44,8 @@ class HttpClientDecoratorTest extends ClientDecoratorTest {
|
||||||
if (req) {
|
if (req) {
|
||||||
1 * span.setAttribute(Tags.HTTP_METHOD, req.method)
|
1 * span.setAttribute(Tags.HTTP_METHOD, req.method)
|
||||||
1 * span.setAttribute(Tags.HTTP_URL, "$req.url")
|
1 * span.setAttribute(Tags.HTTP_URL, "$req.url")
|
||||||
1 * span.setAttribute(Tags.PEER_HOSTNAME, req.host)
|
1 * span.setAttribute(MoreTags.NET_PEER_NAME, req.host)
|
||||||
1 * span.setAttribute(Tags.PEER_PORT, req.port)
|
1 * span.setAttribute(MoreTags.NET_PEER_PORT, req.port)
|
||||||
if (renameService) {
|
if (renameService) {
|
||||||
1 * span.setAttribute(MoreTags.SERVICE_NAME, req.host)
|
1 * span.setAttribute(MoreTags.SERVICE_NAME, req.host)
|
||||||
}
|
}
|
||||||
|
@ -84,19 +84,19 @@ class HttpClientDecoratorTest extends ClientDecoratorTest {
|
||||||
0 * _
|
0 * _
|
||||||
|
|
||||||
where:
|
where:
|
||||||
tagQueryString | url | expectedUrl | expectedQuery | expectedFragment
|
tagQueryString | url | expectedUrl | expectedQuery | expectedFragment
|
||||||
false | null | null | null | null
|
false | null | null | null | null
|
||||||
false | "" | "/" | "" | null
|
false | "" | "/" | "" | null
|
||||||
false | "/path?query" | "/path" | "" | null
|
false | "/path?query" | "/path?query" | "" | null
|
||||||
false | "https://host:0" | "https://host/" | "" | null
|
false | "https://host:0" | "https://host/" | "" | null
|
||||||
false | "https://host/path" | "https://host/path" | "" | null
|
false | "https://host/path" | "https://host/path" | "" | null
|
||||||
false | "http://host:99/path?query#fragment" | "http://host:99/path" | "" | null
|
false | "http://host:99/path?query#fragment" | "http://host:99/path?query#fragment" | "" | null
|
||||||
true | null | null | null | null
|
true | null | null | null | null
|
||||||
true | "" | "/" | null | null
|
true | "" | "/" | null | null
|
||||||
true | "/path?encoded+%28query%29%3F" | "/path" | "encoded+(query)?" | null
|
true | "/path?encoded+%28query%29%3F" | "/path?encoded+(query)?" | "encoded+(query)?" | null
|
||||||
true | "https://host:0" | "https://host/" | null | null
|
true | "https://host:0" | "https://host/" | null | null
|
||||||
true | "https://host/path" | "https://host/path" | null | null
|
true | "https://host/path" | "https://host/path" | null | null
|
||||||
true | "http://host:99/path?query#encoded+%28fragment%29%3F" | "http://host:99/path" | "query" | "encoded+(fragment)?"
|
true | "http://host:99/path?query#encoded+%28fragment%29%3F" | "http://host:99/path?query#encoded+(fragment)?" | "query" | "encoded+(fragment)?"
|
||||||
|
|
||||||
req = [url: url == null ? null : new URI(url)]
|
req = [url: url == null ? null : new URI(url)]
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,7 +44,7 @@ class HttpServerDecoratorTest extends ServerDecoratorTest {
|
||||||
where:
|
where:
|
||||||
req | url
|
req | url
|
||||||
null | _
|
null | _
|
||||||
[method: "test-method", url: URI.create("http://test-url?some=query")] | "http://test-url/"
|
[method: "test-method", url: URI.create("http://test-url?some=query")] | "http://test-url/?some=query"
|
||||||
[method: "test-method", url: URI.create("http://a:80/")] | "http://a/"
|
[method: "test-method", url: URI.create("http://a:80/")] | "http://a/"
|
||||||
[method: "test-method", url: URI.create("https://10.0.0.1:443")] | "https://10.0.0.1/"
|
[method: "test-method", url: URI.create("https://10.0.0.1:443")] | "https://10.0.0.1/"
|
||||||
[method: "test-method", url: URI.create("https://localhost:0/1/")] | "https://localhost/1/"
|
[method: "test-method", url: URI.create("https://localhost:0/1/")] | "https://localhost/1/"
|
||||||
|
@ -76,20 +76,20 @@ class HttpServerDecoratorTest extends ServerDecoratorTest {
|
||||||
0 * _
|
0 * _
|
||||||
|
|
||||||
where:
|
where:
|
||||||
tagQueryString | url | expectedUrl | expectedQuery | expectedFragment
|
tagQueryString | url | expectedUrl | expectedQuery | expectedFragment
|
||||||
false | null | null | null | null
|
false | null | null | null | null
|
||||||
false | "" | "/" | "" | null
|
false | "" | "/" | "" | null
|
||||||
false | "/path?query" | "/path" | "" | null
|
false | "/path?query" | "/path?query" | "" | null
|
||||||
false | "https://host:0" | "https://host/" | "" | null
|
false | "https://host:0" | "https://host/" | "" | null
|
||||||
false | "https://host/path" | "https://host/path" | "" | null
|
false | "https://host/path" | "https://host/path" | "" | null
|
||||||
false | "http://host:99/path?query#fragment" | "http://host:99/path" | "" | null
|
false | "http://host:99/path?query#fragment" | "http://host:99/path?query#fragment" | "" | null
|
||||||
true | null | null | null | null
|
true | null | null | null | null
|
||||||
true | "" | "/" | null | null
|
true | "" | "/" | null | null
|
||||||
true | "/path?encoded+%28query%29%3F?" | "/path" | "encoded+(query)??" | null
|
true | "/path?encoded+%28query%29%3F?" | "/path?encoded+(query)??" | "encoded+(query)??" | null
|
||||||
true | "https://host:0" | "https://host/" | null | null
|
true | "https://host:0" | "https://host/" | null | null
|
||||||
true | "https://host/path" | "https://host/path" | null | null
|
true | "https://host/path" | "https://host/path" | null | null
|
||||||
true | "http://host:99/path?query#enc+%28fragment%29%3F" | "http://host:99/path" | "query" | "enc+(fragment)?"
|
true | "http://host:99/path?query#enc+%28fragment%29%3F" | "http://host:99/path?query#enc+(fragment)?" | "query" | "enc+(fragment)?"
|
||||||
true | "http://host:99/path?query#enc+%28fragment%29%3F?tail" | "http://host:99/path" | "query" | "enc+(fragment)??tail"
|
true | "http://host:99/path?query#enc+%28fragment%29%3F?tail" | "http://host:99/path?query#enc+(fragment)??tail" | "query" | "enc+(fragment)??tail"
|
||||||
|
|
||||||
req = [url: url == null ? null : new URI(url)]
|
req = [url: url == null ? null : new URI(url)]
|
||||||
}
|
}
|
||||||
|
@ -103,11 +103,11 @@ class HttpServerDecoratorTest extends ServerDecoratorTest {
|
||||||
|
|
||||||
then:
|
then:
|
||||||
if (conn) {
|
if (conn) {
|
||||||
1 * span.setAttribute(Tags.PEER_PORT, 555)
|
1 * span.setAttribute(MoreTags.NET_PEER_PORT, 555)
|
||||||
if (ipv4) {
|
if (ipv4) {
|
||||||
1 * span.setAttribute(Tags.PEER_HOST_IPV4, "10.0.0.1")
|
1 * span.setAttribute(MoreTags.NET_PEER_IP, "10.0.0.1")
|
||||||
} else if (ipv4 != null) {
|
} else if (ipv4 != null) {
|
||||||
1 * span.setAttribute(Tags.PEER_HOST_IPV6, "3ffe:1900:4545:3:200:f8ff:fe21:67cf")
|
1 * span.setAttribute(MoreTags.NET_PEER_IP, "3ffe:1900:4545:3:200:f8ff:fe21:67cf")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
0 * _
|
0 * _
|
||||||
|
|
|
@ -17,6 +17,7 @@ import akka.NotUsed
|
||||||
import akka.stream.javadsl.Source
|
import akka.stream.javadsl.Source
|
||||||
import akka.stream.testkit.TestSubscriber.Probe
|
import akka.stream.testkit.TestSubscriber.Probe
|
||||||
import akka.stream.testkit.javadsl.TestSink
|
import akka.stream.testkit.javadsl.TestSink
|
||||||
|
import io.opentelemetry.auto.decorator.HttpServerDecorator
|
||||||
import io.opentelemetry.auto.instrumentation.api.MoreTags
|
import io.opentelemetry.auto.instrumentation.api.MoreTags
|
||||||
import io.opentelemetry.auto.instrumentation.api.SpanTypes
|
import io.opentelemetry.auto.instrumentation.api.SpanTypes
|
||||||
import io.opentelemetry.auto.instrumentation.api.Tags
|
import io.opentelemetry.auto.instrumentation.api.Tags
|
||||||
|
@ -76,7 +77,7 @@ class LagomTest extends AgentTestRunner {
|
||||||
assertTraces(1) {
|
assertTraces(1) {
|
||||||
trace(0, 2) {
|
trace(0, 2) {
|
||||||
span(0) {
|
span(0) {
|
||||||
operationName "akka-http.request"
|
operationName expectedOperationName("GET")
|
||||||
spanKind SERVER
|
spanKind SERVER
|
||||||
errored false
|
errored false
|
||||||
tags {
|
tags {
|
||||||
|
@ -113,7 +114,7 @@ class LagomTest extends AgentTestRunner {
|
||||||
assertTraces(1) {
|
assertTraces(1) {
|
||||||
trace(0, 1) {
|
trace(0, 1) {
|
||||||
span(0) {
|
span(0) {
|
||||||
operationName "akka-http.request"
|
operationName expectedOperationName("GET")
|
||||||
spanKind SERVER
|
spanKind SERVER
|
||||||
errored true
|
errored true
|
||||||
tags {
|
tags {
|
||||||
|
@ -127,4 +128,8 @@ class LagomTest extends AgentTestRunner {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String expectedOperationName(String method) {
|
||||||
|
return method != null ? "HTTP $method" : HttpServerDecorator.DEFAULT_SPAN_NAME
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -96,7 +96,8 @@ public final class AkkaHttpClientInstrumentation extends Instrumenter.Default {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Span span = TRACER.spanBuilder("akka-http.request").setSpanKind(CLIENT).startSpan();
|
final Span span =
|
||||||
|
TRACER.spanBuilder(DECORATE.spanNameForRequest(request)).setSpanKind(CLIENT).startSpan();
|
||||||
DECORATE.afterStart(span);
|
DECORATE.afterStart(span);
|
||||||
DECORATE.onRequest(span, request);
|
DECORATE.onRequest(span, request);
|
||||||
|
|
||||||
|
|
|
@ -111,7 +111,8 @@ public final class AkkaHttpServerInstrumentation extends Instrumenter.Default {
|
||||||
|
|
||||||
public static class WrapperHelper {
|
public static class WrapperHelper {
|
||||||
public static SpanWithScope createSpan(final HttpRequest request) {
|
public static SpanWithScope createSpan(final HttpRequest request) {
|
||||||
final Span.Builder spanBuilder = TRACER.spanBuilder("akka-http.request").setSpanKind(SERVER);
|
final Span.Builder spanBuilder =
|
||||||
|
TRACER.spanBuilder(DECORATE.spanNameForRequest(request)).setSpanKind(SERVER);
|
||||||
try {
|
try {
|
||||||
final SpanContext extractedContext = TRACER.getHttpTextFormat().extract(request, GETTER);
|
final SpanContext extractedContext = TRACER.getHttpTextFormat().extract(request, GETTER);
|
||||||
spanBuilder.setParent(extractedContext);
|
spanBuilder.setParent(extractedContext);
|
||||||
|
|
|
@ -19,6 +19,7 @@ import akka.http.javadsl.model.HttpMethods
|
||||||
import akka.http.javadsl.model.HttpRequest
|
import akka.http.javadsl.model.HttpRequest
|
||||||
import akka.http.javadsl.model.headers.RawHeader
|
import akka.http.javadsl.model.headers.RawHeader
|
||||||
import akka.stream.ActorMaterializer
|
import akka.stream.ActorMaterializer
|
||||||
|
import io.opentelemetry.auto.decorator.HttpClientDecorator
|
||||||
import io.opentelemetry.auto.instrumentation.akkahttp.AkkaHttpClientDecorator
|
import io.opentelemetry.auto.instrumentation.akkahttp.AkkaHttpClientDecorator
|
||||||
import io.opentelemetry.auto.instrumentation.api.MoreTags
|
import io.opentelemetry.auto.instrumentation.api.MoreTags
|
||||||
import io.opentelemetry.auto.instrumentation.api.SpanTypes
|
import io.opentelemetry.auto.instrumentation.api.SpanTypes
|
||||||
|
@ -58,11 +59,6 @@ class AkkaHttpClientInstrumentationTest extends HttpClientTest<AkkaHttpClientDec
|
||||||
return AkkaHttpClientDecorator.DECORATE
|
return AkkaHttpClientDecorator.DECORATE
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
String expectedOperationName() {
|
|
||||||
return "akka-http.request"
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
boolean testRedirects() {
|
boolean testRedirects() {
|
||||||
false
|
false
|
||||||
|
@ -79,7 +75,7 @@ class AkkaHttpClientInstrumentationTest extends HttpClientTest<AkkaHttpClientDec
|
||||||
trace(0, 1) {
|
trace(0, 1) {
|
||||||
span(0) {
|
span(0) {
|
||||||
parent()
|
parent()
|
||||||
operationName "akka-http.request"
|
operationName HttpClientDecorator.DEFAULT_SPAN_NAME
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
errored true
|
errored true
|
||||||
tags {
|
tags {
|
||||||
|
|
|
@ -32,11 +32,6 @@ abstract class AkkaHttpServerInstrumentationTest extends HttpServerTest<Object,
|
||||||
return AkkaHttpServerDecorator.DECORATE
|
return AkkaHttpServerDecorator.DECORATE
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
String expectedOperationName() {
|
|
||||||
return "akka-http.request"
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
boolean testExceptionBody() {
|
boolean testExceptionBody() {
|
||||||
false
|
false
|
||||||
|
@ -55,7 +50,7 @@ abstract class AkkaHttpServerInstrumentationTest extends HttpServerTest<Object,
|
||||||
|
|
||||||
void serverSpan(TraceAssert trace, int index, String traceID = null, String parentID = null, String method = "GET", ServerEndpoint endpoint = SUCCESS) {
|
void serverSpan(TraceAssert trace, int index, String traceID = null, String parentID = null, String method = "GET", ServerEndpoint endpoint = SUCCESS) {
|
||||||
trace.span(index) {
|
trace.span(index) {
|
||||||
operationName expectedOperationName()
|
operationName expectedOperationName(method)
|
||||||
spanKind SERVER
|
spanKind SERVER
|
||||||
errored endpoint.errored
|
errored endpoint.errored
|
||||||
if (parentID != null) {
|
if (parentID != null) {
|
||||||
|
@ -67,7 +62,7 @@ abstract class AkkaHttpServerInstrumentationTest extends HttpServerTest<Object,
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
||||||
"$Tags.COMPONENT" serverDecorator.getComponentName()
|
"$Tags.COMPONENT" serverDecorator.getComponentName()
|
||||||
"$Tags.HTTP_URL" "${endpoint.resolve(address)}"
|
"$Tags.HTTP_URL" { it == "${endpoint.resolve(address)}" || it == "${endpoint.resolveWithoutFragment(address)}" }
|
||||||
"$Tags.HTTP_METHOD" method
|
"$Tags.HTTP_METHOD" method
|
||||||
"$Tags.HTTP_STATUS" endpoint.status
|
"$Tags.HTTP_STATUS" endpoint.status
|
||||||
if (endpoint.errored) {
|
if (endpoint.errored) {
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
*/
|
*/
|
||||||
package io.opentelemetry.auto.instrumentation.apachehttpasyncclient;
|
package io.opentelemetry.auto.instrumentation.apachehttpasyncclient;
|
||||||
|
|
||||||
|
import static io.opentelemetry.auto.decorator.HttpClientDecorator.DEFAULT_SPAN_NAME;
|
||||||
import static io.opentelemetry.auto.instrumentation.apachehttpasyncclient.ApacheHttpAsyncClientDecorator.DECORATE;
|
import static io.opentelemetry.auto.instrumentation.apachehttpasyncclient.ApacheHttpAsyncClientDecorator.DECORATE;
|
||||||
import static io.opentelemetry.auto.instrumentation.apachehttpasyncclient.ApacheHttpAsyncClientDecorator.TRACER;
|
import static io.opentelemetry.auto.instrumentation.apachehttpasyncclient.ApacheHttpAsyncClientDecorator.TRACER;
|
||||||
import static io.opentelemetry.auto.instrumentation.apachehttpasyncclient.HttpHeadersInjectAdapter.SETTER;
|
import static io.opentelemetry.auto.instrumentation.apachehttpasyncclient.HttpHeadersInjectAdapter.SETTER;
|
||||||
|
@ -100,7 +101,7 @@ public class ApacheHttpAsyncClientInstrumentation extends Instrumenter.Default {
|
||||||
@Advice.Argument(value = 3, readOnly = false) FutureCallback<?> futureCallback) {
|
@Advice.Argument(value = 3, readOnly = false) FutureCallback<?> futureCallback) {
|
||||||
|
|
||||||
final Span parentSpan = TRACER.getCurrentSpan();
|
final Span parentSpan = TRACER.getCurrentSpan();
|
||||||
final Span clientSpan = TRACER.spanBuilder("http.request").setSpanKind(CLIENT).startSpan();
|
final Span clientSpan = TRACER.spanBuilder(DEFAULT_SPAN_NAME).setSpanKind(CLIENT).startSpan();
|
||||||
DECORATE.afterStart(clientSpan);
|
DECORATE.afterStart(clientSpan);
|
||||||
|
|
||||||
requestProducer = new DelegatingRequestProducer(clientSpan, requestProducer);
|
requestProducer = new DelegatingRequestProducer(clientSpan, requestProducer);
|
||||||
|
@ -140,6 +141,7 @@ public class ApacheHttpAsyncClientInstrumentation extends Instrumenter.Default {
|
||||||
@Override
|
@Override
|
||||||
public HttpRequest generateRequest() throws IOException, HttpException {
|
public HttpRequest generateRequest() throws IOException, HttpException {
|
||||||
final HttpRequest request = delegate.generateRequest();
|
final HttpRequest request = delegate.generateRequest();
|
||||||
|
span.updateName(DECORATE.spanNameForRequest(request));
|
||||||
DECORATE.onRequest(span, request);
|
DECORATE.onRequest(span, request);
|
||||||
|
|
||||||
TRACER.getHttpTextFormat().inject(span.getContext(), request, SETTER);
|
TRACER.getHttpTextFormat().inject(span.getContext(), request, SETTER);
|
||||||
|
|
|
@ -85,7 +85,11 @@ public class ApacheHttpClientInstrumentation extends Instrumenter.Default {
|
||||||
if (callDepth > 0) {
|
if (callDepth > 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
final Span span = TRACER.spanBuilder("http.request").setSpanKind(CLIENT).startSpan();
|
final Span span =
|
||||||
|
TRACER
|
||||||
|
.spanBuilder(DECORATE.spanNameForRequest(httpMethod))
|
||||||
|
.setSpanKind(CLIENT)
|
||||||
|
.startSpan();
|
||||||
final Scope scope = TRACER.withSpan(span);
|
final Scope scope = TRACER.withSpan(span);
|
||||||
|
|
||||||
DECORATE.afterStart(span);
|
DECORATE.afterStart(span);
|
||||||
|
|
|
@ -171,7 +171,8 @@ public class ApacheHttpClientInstrumentation extends Instrumenter.Default {
|
||||||
|
|
||||||
public static class HelperMethods {
|
public static class HelperMethods {
|
||||||
public static SpanWithScope doMethodEnter(final HttpUriRequest request) {
|
public static SpanWithScope doMethodEnter(final HttpUriRequest request) {
|
||||||
final Span span = TRACER.spanBuilder("http.request").setSpanKind(CLIENT).startSpan();
|
final Span span =
|
||||||
|
TRACER.spanBuilder(DECORATE.spanNameForRequest(request)).setSpanKind(CLIENT).startSpan();
|
||||||
final Scope scope = TRACER.withSpan(span);
|
final Scope scope = TRACER.withSpan(span);
|
||||||
|
|
||||||
DECORATE.afterStart(span);
|
DECORATE.afterStart(span);
|
||||||
|
|
|
@ -47,7 +47,8 @@ public class TracingRequestHandler extends RequestHandler2 {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void beforeRequest(final Request<?> request) {
|
public void beforeRequest(final Request<?> request) {
|
||||||
final Span span = TRACER.spanBuilder("aws.http").setSpanKind(CLIENT).startSpan();
|
final Span span =
|
||||||
|
TRACER.spanBuilder(decorate.spanNameForRequest(request)).setSpanKind(CLIENT).startSpan();
|
||||||
decorate.afterStart(span);
|
decorate.afterStart(span);
|
||||||
decorate.onRequest(span, request);
|
decorate.onRequest(span, request);
|
||||||
request.addHandlerContext(
|
request.addHandlerContext(
|
||||||
|
|
|
@ -43,6 +43,7 @@ import com.amazonaws.services.s3.AmazonS3ClientBuilder
|
||||||
import com.amazonaws.services.sqs.AmazonSQSClientBuilder
|
import com.amazonaws.services.sqs.AmazonSQSClientBuilder
|
||||||
import com.amazonaws.services.sqs.model.CreateQueueRequest
|
import com.amazonaws.services.sqs.model.CreateQueueRequest
|
||||||
import com.amazonaws.services.sqs.model.SendMessageRequest
|
import com.amazonaws.services.sqs.model.SendMessageRequest
|
||||||
|
import io.opentelemetry.auto.decorator.HttpClientDecorator
|
||||||
import io.opentelemetry.auto.instrumentation.api.MoreTags
|
import io.opentelemetry.auto.instrumentation.api.MoreTags
|
||||||
import io.opentelemetry.auto.instrumentation.api.SpanTypes
|
import io.opentelemetry.auto.instrumentation.api.SpanTypes
|
||||||
import io.opentelemetry.auto.instrumentation.api.Tags
|
import io.opentelemetry.auto.instrumentation.api.Tags
|
||||||
|
@ -150,7 +151,7 @@ class AWSClientTest extends AgentTestRunner {
|
||||||
assertTraces(1) {
|
assertTraces(1) {
|
||||||
trace(0, 2) {
|
trace(0, 2) {
|
||||||
span(0) {
|
span(0) {
|
||||||
operationName "aws.http"
|
operationName expectedOperationName(method)
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
errored false
|
errored false
|
||||||
parent()
|
parent()
|
||||||
|
@ -172,15 +173,15 @@ class AWSClientTest extends AgentTestRunner {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
span(1) {
|
span(1) {
|
||||||
operationName "http.request"
|
operationName expectedOperationName(method)
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
errored false
|
errored false
|
||||||
childOf(span(0))
|
childOf(span(0))
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
||||||
"$Tags.COMPONENT" "apache-httpclient"
|
"$Tags.COMPONENT" "apache-httpclient"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_PORT" server.address.port
|
"$MoreTags.NET_PEER_PORT" server.address.port
|
||||||
"$Tags.HTTP_URL" "${server.address}${path}"
|
"$Tags.HTTP_URL" "${server.address}${path}"
|
||||||
"$Tags.HTTP_METHOD" "$method"
|
"$Tags.HTTP_METHOD" "$method"
|
||||||
"$Tags.HTTP_STATUS" 200
|
"$Tags.HTTP_STATUS" 200
|
||||||
|
@ -241,7 +242,7 @@ class AWSClientTest extends AgentTestRunner {
|
||||||
assertTraces(1) {
|
assertTraces(1) {
|
||||||
trace(0, 2) {
|
trace(0, 2) {
|
||||||
span(0) {
|
span(0) {
|
||||||
operationName "aws.http"
|
operationName expectedOperationName(method)
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
errored true
|
errored true
|
||||||
parent()
|
parent()
|
||||||
|
@ -263,15 +264,15 @@ class AWSClientTest extends AgentTestRunner {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
span(1) {
|
span(1) {
|
||||||
operationName "http.request"
|
operationName expectedOperationName(method)
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
errored true
|
errored true
|
||||||
childOf(span(0))
|
childOf(span(0))
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
||||||
"$Tags.COMPONENT" "apache-httpclient"
|
"$Tags.COMPONENT" "apache-httpclient"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_PORT" UNUSABLE_PORT
|
"$MoreTags.NET_PEER_PORT" UNUSABLE_PORT
|
||||||
"$Tags.HTTP_URL" "http://localhost:${UNUSABLE_PORT}/$url"
|
"$Tags.HTTP_URL" "http://localhost:${UNUSABLE_PORT}/$url"
|
||||||
"$Tags.HTTP_METHOD" "$method"
|
"$Tags.HTTP_METHOD" "$method"
|
||||||
errorTags HttpHostConnectException, ~/Connection refused/
|
errorTags HttpHostConnectException, ~/Connection refused/
|
||||||
|
@ -304,7 +305,7 @@ class AWSClientTest extends AgentTestRunner {
|
||||||
assertTraces(1) {
|
assertTraces(1) {
|
||||||
trace(0, 1) {
|
trace(0, 1) {
|
||||||
span(0) {
|
span(0) {
|
||||||
operationName "aws.http"
|
operationName expectedOperationName("HEAD")
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
errored true
|
errored true
|
||||||
parent()
|
parent()
|
||||||
|
@ -349,7 +350,7 @@ class AWSClientTest extends AgentTestRunner {
|
||||||
assertTraces(1) {
|
assertTraces(1) {
|
||||||
trace(0, 5) {
|
trace(0, 5) {
|
||||||
span(0) {
|
span(0) {
|
||||||
operationName "aws.http"
|
operationName expectedOperationName("GET")
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
errored true
|
errored true
|
||||||
parent()
|
parent()
|
||||||
|
@ -374,15 +375,15 @@ class AWSClientTest extends AgentTestRunner {
|
||||||
}
|
}
|
||||||
(1..4).each {
|
(1..4).each {
|
||||||
span(it) {
|
span(it) {
|
||||||
operationName "http.request"
|
operationName expectedOperationName("GET")
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
errored true
|
errored true
|
||||||
childOf(span(0))
|
childOf(span(0))
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
||||||
"$Tags.COMPONENT" "apache-httpclient"
|
"$Tags.COMPONENT" "apache-httpclient"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_PORT" server.address.port
|
"$MoreTags.NET_PEER_PORT" server.address.port
|
||||||
"$Tags.HTTP_URL" "$server.address/someBucket/someKey"
|
"$Tags.HTTP_URL" "$server.address/someBucket/someKey"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
try {
|
try {
|
||||||
|
@ -399,4 +400,8 @@ class AWSClientTest extends AgentTestRunner {
|
||||||
cleanup:
|
cleanup:
|
||||||
server.close()
|
server.close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String expectedOperationName(String method) {
|
||||||
|
return method != null ? "HTTP $method" : HttpClientDecorator.DEFAULT_SPAN_NAME
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@ import com.amazonaws.services.rds.AmazonRDSClient
|
||||||
import com.amazonaws.services.rds.model.DeleteOptionGroupRequest
|
import com.amazonaws.services.rds.model.DeleteOptionGroupRequest
|
||||||
import com.amazonaws.services.s3.AmazonS3Client
|
import com.amazonaws.services.s3.AmazonS3Client
|
||||||
import com.amazonaws.services.s3.S3ClientOptions
|
import com.amazonaws.services.s3.S3ClientOptions
|
||||||
|
import io.opentelemetry.auto.decorator.HttpClientDecorator
|
||||||
import io.opentelemetry.auto.instrumentation.api.MoreTags
|
import io.opentelemetry.auto.instrumentation.api.MoreTags
|
||||||
import io.opentelemetry.auto.instrumentation.api.SpanTypes
|
import io.opentelemetry.auto.instrumentation.api.SpanTypes
|
||||||
import io.opentelemetry.auto.instrumentation.api.Tags
|
import io.opentelemetry.auto.instrumentation.api.Tags
|
||||||
|
@ -113,7 +114,7 @@ class AWSClientTest extends AgentTestRunner {
|
||||||
assertTraces(1) {
|
assertTraces(1) {
|
||||||
trace(0, 2) {
|
trace(0, 2) {
|
||||||
span(0) {
|
span(0) {
|
||||||
operationName "aws.http"
|
operationName expectedOperationName(method)
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
errored false
|
errored false
|
||||||
parent()
|
parent()
|
||||||
|
@ -135,15 +136,15 @@ class AWSClientTest extends AgentTestRunner {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
span(1) {
|
span(1) {
|
||||||
operationName "http.request"
|
operationName expectedOperationName(method)
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
errored false
|
errored false
|
||||||
childOf(span(0))
|
childOf(span(0))
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
||||||
"$Tags.COMPONENT" "apache-httpclient"
|
"$Tags.COMPONENT" "apache-httpclient"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_PORT" server.address.port
|
"$MoreTags.NET_PEER_PORT" server.address.port
|
||||||
"$Tags.HTTP_URL" "${server.address}${path}"
|
"$Tags.HTTP_URL" "${server.address}${path}"
|
||||||
"$Tags.HTTP_METHOD" "$method"
|
"$Tags.HTTP_METHOD" "$method"
|
||||||
"$Tags.HTTP_STATUS" 200
|
"$Tags.HTTP_STATUS" 200
|
||||||
|
@ -186,7 +187,7 @@ class AWSClientTest extends AgentTestRunner {
|
||||||
assertTraces(1) {
|
assertTraces(1) {
|
||||||
trace(0, 2) {
|
trace(0, 2) {
|
||||||
span(0) {
|
span(0) {
|
||||||
operationName "aws.http"
|
operationName expectedOperationName(method)
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
errored true
|
errored true
|
||||||
parent()
|
parent()
|
||||||
|
@ -208,15 +209,15 @@ class AWSClientTest extends AgentTestRunner {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
span(1) {
|
span(1) {
|
||||||
operationName "http.request"
|
operationName expectedOperationName(method)
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
errored true
|
errored true
|
||||||
childOf(span(0))
|
childOf(span(0))
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
||||||
"$Tags.COMPONENT" "apache-httpclient"
|
"$Tags.COMPONENT" "apache-httpclient"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_PORT" UNUSABLE_PORT
|
"$MoreTags.NET_PEER_PORT" UNUSABLE_PORT
|
||||||
"$Tags.HTTP_URL" "http://localhost:${UNUSABLE_PORT}/$url"
|
"$Tags.HTTP_URL" "http://localhost:${UNUSABLE_PORT}/$url"
|
||||||
"$Tags.HTTP_METHOD" "$method"
|
"$Tags.HTTP_METHOD" "$method"
|
||||||
errorTags HttpHostConnectException, ~/Connection refused/
|
errorTags HttpHostConnectException, ~/Connection refused/
|
||||||
|
@ -249,7 +250,7 @@ class AWSClientTest extends AgentTestRunner {
|
||||||
assertTraces(1) {
|
assertTraces(1) {
|
||||||
trace(0, 1) {
|
trace(0, 1) {
|
||||||
span(0) {
|
span(0) {
|
||||||
operationName "aws.http"
|
operationName expectedOperationName("GET")
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
errored true
|
errored true
|
||||||
parent()
|
parent()
|
||||||
|
@ -295,7 +296,7 @@ class AWSClientTest extends AgentTestRunner {
|
||||||
assertTraces(1) {
|
assertTraces(1) {
|
||||||
trace(0, 5) {
|
trace(0, 5) {
|
||||||
span(0) {
|
span(0) {
|
||||||
operationName "aws.http"
|
operationName expectedOperationName("GET")
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
errored true
|
errored true
|
||||||
parent()
|
parent()
|
||||||
|
@ -316,15 +317,15 @@ class AWSClientTest extends AgentTestRunner {
|
||||||
}
|
}
|
||||||
(1..4).each {
|
(1..4).each {
|
||||||
span(it) {
|
span(it) {
|
||||||
operationName "http.request"
|
operationName expectedOperationName("GET")
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
errored true
|
errored true
|
||||||
childOf(span(0))
|
childOf(span(0))
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
||||||
"$Tags.COMPONENT" "apache-httpclient"
|
"$Tags.COMPONENT" "apache-httpclient"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_PORT" server.address.port
|
"$MoreTags.NET_PEER_PORT" server.address.port
|
||||||
"$Tags.HTTP_URL" "$server.address/someBucket/someKey"
|
"$Tags.HTTP_URL" "$server.address/someBucket/someKey"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
try {
|
try {
|
||||||
|
@ -341,4 +342,8 @@ class AWSClientTest extends AgentTestRunner {
|
||||||
cleanup:
|
cleanup:
|
||||||
server.close()
|
server.close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String expectedOperationName(String method) {
|
||||||
|
return method != null ? "HTTP $method" : HttpClientDecorator.DEFAULT_SPAN_NAME
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
*/
|
*/
|
||||||
package io.opentelemetry.auto.instrumentation.aws.v2;
|
package io.opentelemetry.auto.instrumentation.aws.v2;
|
||||||
|
|
||||||
|
import static io.opentelemetry.auto.decorator.HttpClientDecorator.DEFAULT_SPAN_NAME;
|
||||||
import static io.opentelemetry.auto.instrumentation.aws.v2.AwsSdkClientDecorator.DECORATE;
|
import static io.opentelemetry.auto.instrumentation.aws.v2.AwsSdkClientDecorator.DECORATE;
|
||||||
import static io.opentelemetry.auto.instrumentation.aws.v2.AwsSdkClientDecorator.TRACER;
|
import static io.opentelemetry.auto.instrumentation.aws.v2.AwsSdkClientDecorator.TRACER;
|
||||||
import static io.opentelemetry.trace.Span.Kind.CLIENT;
|
import static io.opentelemetry.trace.Span.Kind.CLIENT;
|
||||||
|
@ -48,7 +49,7 @@ public class TracingExecutionInterceptor implements ExecutionInterceptor {
|
||||||
@Override
|
@Override
|
||||||
public void beforeExecution(
|
public void beforeExecution(
|
||||||
final Context.BeforeExecution context, final ExecutionAttributes executionAttributes) {
|
final Context.BeforeExecution context, final ExecutionAttributes executionAttributes) {
|
||||||
final Span span = TRACER.spanBuilder("aws.http").setSpanKind(CLIENT).startSpan();
|
final Span span = TRACER.spanBuilder(DEFAULT_SPAN_NAME).setSpanKind(CLIENT).startSpan();
|
||||||
try (final Scope scope = TRACER.withSpan(span)) {
|
try (final Scope scope = TRACER.withSpan(span)) {
|
||||||
DECORATE.afterStart(span);
|
DECORATE.afterStart(span);
|
||||||
executionAttributes.putAttribute(SPAN_ATTRIBUTE, span);
|
executionAttributes.putAttribute(SPAN_ATTRIBUTE, span);
|
||||||
|
@ -60,6 +61,7 @@ public class TracingExecutionInterceptor implements ExecutionInterceptor {
|
||||||
final Context.AfterMarshalling context, final ExecutionAttributes executionAttributes) {
|
final Context.AfterMarshalling context, final ExecutionAttributes executionAttributes) {
|
||||||
final Span span = executionAttributes.getAttribute(SPAN_ATTRIBUTE);
|
final Span span = executionAttributes.getAttribute(SPAN_ATTRIBUTE);
|
||||||
|
|
||||||
|
span.updateName(DECORATE.spanNameForRequest(context.httpRequest()));
|
||||||
DECORATE.onRequest(span, context.httpRequest());
|
DECORATE.onRequest(span, context.httpRequest());
|
||||||
DECORATE.onSdkRequest(span, context.request());
|
DECORATE.onSdkRequest(span, context.request());
|
||||||
DECORATE.onAttributes(span, executionAttributes);
|
DECORATE.onAttributes(span, executionAttributes);
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
import io.opentelemetry.auto.decorator.HttpClientDecorator
|
||||||
import io.opentelemetry.auto.instrumentation.api.MoreTags
|
import io.opentelemetry.auto.instrumentation.api.MoreTags
|
||||||
import io.opentelemetry.auto.instrumentation.api.SpanTypes
|
import io.opentelemetry.auto.instrumentation.api.SpanTypes
|
||||||
import io.opentelemetry.auto.instrumentation.api.Tags
|
import io.opentelemetry.auto.instrumentation.api.Tags
|
||||||
|
@ -91,7 +92,7 @@ class AwsClientTest extends AgentTestRunner {
|
||||||
assertTraces(1) {
|
assertTraces(1) {
|
||||||
trace(0, 2) {
|
trace(0, 2) {
|
||||||
span(0) {
|
span(0) {
|
||||||
operationName "aws.http"
|
operationName expectedOperationName(method)
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
errored false
|
errored false
|
||||||
parent()
|
parent()
|
||||||
|
@ -100,9 +101,9 @@ class AwsClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "$service.$operation"
|
"$MoreTags.RESOURCE_NAME" "$service.$operation"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
||||||
"$Tags.COMPONENT" "java-aws-sdk"
|
"$Tags.COMPONENT" "java-aws-sdk"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_PORT" server.address.port
|
"$MoreTags.NET_PEER_PORT" server.address.port
|
||||||
"$Tags.HTTP_URL" "${server.address}${path}"
|
"$Tags.HTTP_URL" { it.startsWith("${server.address}${path}") }
|
||||||
"$Tags.HTTP_METHOD" "$method"
|
"$Tags.HTTP_METHOD" "$method"
|
||||||
"$Tags.HTTP_STATUS" 200
|
"$Tags.HTTP_STATUS" 200
|
||||||
"aws.service" "$service"
|
"aws.service" "$service"
|
||||||
|
@ -123,16 +124,16 @@ class AwsClientTest extends AgentTestRunner {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
span(1) {
|
span(1) {
|
||||||
operationName "http.request"
|
operationName expectedOperationName(method)
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
errored false
|
errored false
|
||||||
childOf(span(0))
|
childOf(span(0))
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
||||||
"$Tags.COMPONENT" "apache-httpclient"
|
"$Tags.COMPONENT" "apache-httpclient"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_PORT" server.address.port
|
"$MoreTags.NET_PEER_PORT" server.address.port
|
||||||
"$Tags.HTTP_URL" "${server.address}${path}"
|
"$Tags.HTTP_URL" { it.startsWith("${server.address}${path}") }
|
||||||
"$Tags.HTTP_METHOD" "$method"
|
"$Tags.HTTP_METHOD" "$method"
|
||||||
"$Tags.HTTP_STATUS" 200
|
"$Tags.HTTP_STATUS" 200
|
||||||
}
|
}
|
||||||
|
@ -197,7 +198,7 @@ class AwsClientTest extends AgentTestRunner {
|
||||||
assertTraces(2) {
|
assertTraces(2) {
|
||||||
trace(0, 1) {
|
trace(0, 1) {
|
||||||
span(0) {
|
span(0) {
|
||||||
operationName "aws.http"
|
operationName expectedOperationName(method)
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
errored false
|
errored false
|
||||||
parent()
|
parent()
|
||||||
|
@ -206,9 +207,9 @@ class AwsClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "$service.$operation"
|
"$MoreTags.RESOURCE_NAME" "$service.$operation"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
||||||
"$Tags.COMPONENT" "java-aws-sdk"
|
"$Tags.COMPONENT" "java-aws-sdk"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_PORT" server.address.port
|
"$MoreTags.NET_PEER_PORT" server.address.port
|
||||||
"$Tags.HTTP_URL" "${server.address}${path}"
|
"$Tags.HTTP_URL" { it.startsWith("${server.address}${path}") }
|
||||||
"$Tags.HTTP_METHOD" "$method"
|
"$Tags.HTTP_METHOD" "$method"
|
||||||
"$Tags.HTTP_STATUS" 200
|
"$Tags.HTTP_STATUS" 200
|
||||||
"aws.service" "$service"
|
"aws.service" "$service"
|
||||||
|
@ -232,17 +233,17 @@ class AwsClientTest extends AgentTestRunner {
|
||||||
// TODO: this should be part of the same trace but netty instrumentation doesn't cooperate
|
// TODO: this should be part of the same trace but netty instrumentation doesn't cooperate
|
||||||
trace(1, 1) {
|
trace(1, 1) {
|
||||||
span(0) {
|
span(0) {
|
||||||
operationName "netty.client.request"
|
operationName expectedOperationName(method)
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
errored false
|
errored false
|
||||||
parent()
|
parent()
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
||||||
"$Tags.COMPONENT" "netty-client"
|
"$Tags.COMPONENT" "netty-client"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" server.address.port
|
"$MoreTags.NET_PEER_PORT" server.address.port
|
||||||
"$Tags.HTTP_URL" "${server.address}${path}"
|
"$Tags.HTTP_URL" { it.startsWith("${server.address}${path}") }
|
||||||
"$Tags.HTTP_METHOD" "$method"
|
"$Tags.HTTP_METHOD" "$method"
|
||||||
"$Tags.HTTP_STATUS" 200
|
"$Tags.HTTP_STATUS" 200
|
||||||
}
|
}
|
||||||
|
@ -314,7 +315,7 @@ class AwsClientTest extends AgentTestRunner {
|
||||||
assertTraces(1) {
|
assertTraces(1) {
|
||||||
trace(0, 5) {
|
trace(0, 5) {
|
||||||
span(0) {
|
span(0) {
|
||||||
operationName "aws.http"
|
operationName expectedOperationName("GET")
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
errored true
|
errored true
|
||||||
parent()
|
parent()
|
||||||
|
@ -323,8 +324,8 @@ class AwsClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "S3.GetObject"
|
"$MoreTags.RESOURCE_NAME" "S3.GetObject"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
||||||
"$Tags.COMPONENT" "java-aws-sdk"
|
"$Tags.COMPONENT" "java-aws-sdk"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_PORT" server.address.port
|
"$MoreTags.NET_PEER_PORT" server.address.port
|
||||||
"$Tags.HTTP_URL" "$server.address/somebucket/somekey"
|
"$Tags.HTTP_URL" "$server.address/somebucket/somekey"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
"aws.service" "S3"
|
"aws.service" "S3"
|
||||||
|
@ -336,15 +337,15 @@ class AwsClientTest extends AgentTestRunner {
|
||||||
}
|
}
|
||||||
(1..4).each {
|
(1..4).each {
|
||||||
span(it) {
|
span(it) {
|
||||||
operationName "http.request"
|
operationName expectedOperationName("GET")
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
errored true
|
errored true
|
||||||
childOf(span(0))
|
childOf(span(0))
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
||||||
"$Tags.COMPONENT" "apache-httpclient"
|
"$Tags.COMPONENT" "apache-httpclient"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_PORT" server.address.port
|
"$MoreTags.NET_PEER_PORT" server.address.port
|
||||||
"$Tags.HTTP_URL" "$server.address/somebucket/somekey"
|
"$Tags.HTTP_URL" "$server.address/somebucket/somekey"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
errorTags SocketTimeoutException, "Read timed out"
|
errorTags SocketTimeoutException, "Read timed out"
|
||||||
|
@ -357,4 +358,8 @@ class AwsClientTest extends AgentTestRunner {
|
||||||
cleanup:
|
cleanup:
|
||||||
server.close()
|
server.close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String expectedOperationName(String method) {
|
||||||
|
return method != null ? "HTTP $method" : HttpClientDecorator.DEFAULT_SPAN_NAME
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,6 @@ import com.datastax.driver.core.ResultSet;
|
||||||
import com.datastax.driver.core.Session;
|
import com.datastax.driver.core.Session;
|
||||||
import io.opentelemetry.auto.decorator.DatabaseClientDecorator;
|
import io.opentelemetry.auto.decorator.DatabaseClientDecorator;
|
||||||
import io.opentelemetry.auto.instrumentation.api.SpanTypes;
|
import io.opentelemetry.auto.instrumentation.api.SpanTypes;
|
||||||
import io.opentelemetry.auto.instrumentation.api.Tags;
|
|
||||||
import io.opentelemetry.trace.Span;
|
import io.opentelemetry.trace.Span;
|
||||||
|
|
||||||
public class CassandraClientDecorator extends DatabaseClientDecorator<Session> {
|
public class CassandraClientDecorator extends DatabaseClientDecorator<Session> {
|
||||||
|
@ -59,8 +58,7 @@ public class CassandraClientDecorator extends DatabaseClientDecorator<Session> {
|
||||||
public Span onResponse(final Span span, final ResultSet result) {
|
public Span onResponse(final Span span, final ResultSet result) {
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
final Host host = result.getExecutionInfo().getQueriedHost();
|
final Host host = result.getExecutionInfo().getQueriedHost();
|
||||||
span.setAttribute(Tags.PEER_PORT, host.getSocketAddress().getPort());
|
onPeerConnection(span, host.getSocketAddress());
|
||||||
onPeerConnection(span, host.getSocketAddress().getAddress());
|
|
||||||
}
|
}
|
||||||
return span;
|
return span;
|
||||||
}
|
}
|
||||||
|
|
|
@ -136,9 +136,9 @@ class CassandraClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.SERVICE_NAME" renameService && keyspace ? keyspace : "cassandra"
|
"$MoreTags.SERVICE_NAME" renameService && keyspace ? keyspace : "cassandra"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.CASSANDRA
|
"$MoreTags.SPAN_TYPE" SpanTypes.CASSANDRA
|
||||||
"$Tags.COMPONENT" "java-cassandra"
|
"$Tags.COMPONENT" "java-cassandra"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" EmbeddedCassandraServerHelper.getNativeTransportPort()
|
"$MoreTags.NET_PEER_PORT" EmbeddedCassandraServerHelper.getNativeTransportPort()
|
||||||
"$Tags.DB_TYPE" "cassandra"
|
"$Tags.DB_TYPE" "cassandra"
|
||||||
"$Tags.DB_INSTANCE" keyspace
|
"$Tags.DB_INSTANCE" keyspace
|
||||||
"$Tags.DB_STATEMENT" statement
|
"$Tags.DB_STATEMENT" statement
|
||||||
|
|
|
@ -30,7 +30,7 @@ import com.couchbase.client.java.transcoder.crypto.JsonCryptoTranscoder;
|
||||||
import com.google.auto.service.AutoService;
|
import com.google.auto.service.AutoService;
|
||||||
import io.opentelemetry.auto.bootstrap.ContextStore;
|
import io.opentelemetry.auto.bootstrap.ContextStore;
|
||||||
import io.opentelemetry.auto.bootstrap.InstrumentationContext;
|
import io.opentelemetry.auto.bootstrap.InstrumentationContext;
|
||||||
import io.opentelemetry.auto.instrumentation.api.Tags;
|
import io.opentelemetry.auto.instrumentation.api.MoreTags;
|
||||||
import io.opentelemetry.auto.tooling.Instrumenter;
|
import io.opentelemetry.auto.tooling.Instrumenter;
|
||||||
import io.opentelemetry.trace.Span;
|
import io.opentelemetry.trace.Span;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -92,13 +92,13 @@ public class CouchbaseNetworkInstrumentation extends Instrumenter.Default {
|
||||||
|
|
||||||
final Span span = contextStore.get(request);
|
final Span span = contextStore.get(request);
|
||||||
if (span != null) {
|
if (span != null) {
|
||||||
span.setAttribute(Tags.PEER_HOSTNAME, remoteHostname);
|
span.setAttribute(MoreTags.NET_PEER_NAME, remoteHostname);
|
||||||
|
|
||||||
if (remoteSocket != null) {
|
if (remoteSocket != null) {
|
||||||
final int splitIndex = remoteSocket.lastIndexOf(":");
|
final int splitIndex = remoteSocket.lastIndexOf(":");
|
||||||
if (splitIndex != -1) {
|
if (splitIndex != -1) {
|
||||||
span.setAttribute(
|
span.setAttribute(
|
||||||
Tags.PEER_PORT, Integer.parseInt(remoteSocket.substring(splitIndex + 1)));
|
MoreTags.NET_PEER_PORT, Integer.parseInt(remoteSocket.substring(splitIndex + 1)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,8 +41,8 @@ class CouchbaseSpanUtil {
|
||||||
"$Tags.COMPONENT" "couchbase-client"
|
"$Tags.COMPONENT" "couchbase-client"
|
||||||
|
|
||||||
// Because of caching, not all requests hit the server so these tags may be absent
|
// Because of caching, not all requests hit the server so these tags may be absent
|
||||||
"$Tags.PEER_HOSTNAME" { it == "localhost" || it == "127.0.0.1" || it == null }
|
"$MoreTags.NET_PEER_NAME" { it == "localhost" || it == "127.0.0.1" || it == null }
|
||||||
"$Tags.PEER_PORT" { it == null || Number }
|
"$MoreTags.NET_PEER_PORT" { it == null || Number }
|
||||||
|
|
||||||
"$Tags.DB_TYPE" "couchbase"
|
"$Tags.DB_TYPE" "couchbase"
|
||||||
if (bucketName != null) {
|
if (bucketName != null) {
|
||||||
|
|
|
@ -20,6 +20,7 @@ import io.dropwizard.setup.Environment
|
||||||
|
|
||||||
import javax.ws.rs.GET
|
import javax.ws.rs.GET
|
||||||
import javax.ws.rs.Path
|
import javax.ws.rs.Path
|
||||||
|
import javax.ws.rs.PathParam
|
||||||
import javax.ws.rs.QueryParam
|
import javax.ws.rs.QueryParam
|
||||||
import javax.ws.rs.container.AsyncResponse
|
import javax.ws.rs.container.AsyncResponse
|
||||||
import javax.ws.rs.container.Suspended
|
import javax.ws.rs.container.Suspended
|
||||||
|
@ -28,6 +29,7 @@ import java.util.concurrent.Executors
|
||||||
|
|
||||||
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.ERROR
|
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.ERROR
|
||||||
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.EXCEPTION
|
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.EXCEPTION
|
||||||
|
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.PATH_PARAM
|
||||||
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.QUERY_PARAM
|
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.QUERY_PARAM
|
||||||
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.REDIRECT
|
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.REDIRECT
|
||||||
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.SUCCESS
|
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.SUCCESS
|
||||||
|
@ -106,5 +108,15 @@ class DropwizardAsyncTest extends DropwizardTest {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("path/{id}/param")
|
||||||
|
Response path_param(@PathParam("id") int param, @Suspended final AsyncResponse asyncResponse) {
|
||||||
|
executor.execute {
|
||||||
|
controller(PATH_PARAM) {
|
||||||
|
asyncResponse.resume(Response.status(PATH_PARAM.status).entity(param.toString()).build())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,11 +32,13 @@ import org.eclipse.jetty.servlet.ServletHandler
|
||||||
|
|
||||||
import javax.ws.rs.GET
|
import javax.ws.rs.GET
|
||||||
import javax.ws.rs.Path
|
import javax.ws.rs.Path
|
||||||
|
import javax.ws.rs.PathParam
|
||||||
import javax.ws.rs.QueryParam
|
import javax.ws.rs.QueryParam
|
||||||
import javax.ws.rs.core.Response
|
import javax.ws.rs.core.Response
|
||||||
|
|
||||||
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.ERROR
|
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.ERROR
|
||||||
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.EXCEPTION
|
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.EXCEPTION
|
||||||
|
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.PATH_PARAM
|
||||||
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.QUERY_PARAM
|
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.QUERY_PARAM
|
||||||
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.REDIRECT
|
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.REDIRECT
|
||||||
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.SUCCESS
|
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.SUCCESS
|
||||||
|
@ -79,11 +81,6 @@ class DropwizardTest extends HttpServerTest<DropwizardTestSupport, Servlet3Decor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
String expectedOperationName() {
|
|
||||||
return "servlet.request"
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
boolean hasHandlerSpan() {
|
boolean hasHandlerSpan() {
|
||||||
true
|
true
|
||||||
|
@ -94,6 +91,11 @@ class DropwizardTest extends HttpServerTest<DropwizardTestSupport, Servlet3Decor
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
boolean testPathParam() {
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
boolean testExceptionBody() {
|
boolean testExceptionBody() {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
@ -119,7 +121,7 @@ class DropwizardTest extends HttpServerTest<DropwizardTestSupport, Servlet3Decor
|
||||||
@Override
|
@Override
|
||||||
void serverSpan(TraceAssert trace, int index, String traceID = null, String parentID = null, String method = "GET", ServerEndpoint endpoint = SUCCESS) {
|
void serverSpan(TraceAssert trace, int index, String traceID = null, String parentID = null, String method = "GET", ServerEndpoint endpoint = SUCCESS) {
|
||||||
trace.span(index) {
|
trace.span(index) {
|
||||||
operationName expectedOperationName()
|
operationName "$method ${endpoint == PATH_PARAM ? "/path/{id}/param" : endpoint.resolvePath(address).path}"
|
||||||
spanKind SERVER
|
spanKind SERVER
|
||||||
errored endpoint.errored
|
errored endpoint.errored
|
||||||
if (parentID != null) {
|
if (parentID != null) {
|
||||||
|
@ -129,12 +131,12 @@ class DropwizardTest extends HttpServerTest<DropwizardTestSupport, Servlet3Decor
|
||||||
parent()
|
parent()
|
||||||
}
|
}
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.RESOURCE_NAME" "$method ${endpoint.resolve(address).path}"
|
"$MoreTags.RESOURCE_NAME" "$method ${endpoint == PATH_PARAM ? "/path/{id}/param" : endpoint.resolvePath(address).path}"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
||||||
"$Tags.COMPONENT" serverDecorator.getComponentName()
|
"$Tags.COMPONENT" serverDecorator.getComponentName()
|
||||||
"$Tags.PEER_HOST_IPV4" { it == null || it == "127.0.0.1" } // Optional
|
"$MoreTags.NET_PEER_IP" { it == null || it == "127.0.0.1" } // Optional
|
||||||
"$Tags.PEER_PORT" Long
|
"$MoreTags.NET_PEER_PORT" Long
|
||||||
"$Tags.HTTP_URL" "${endpoint.resolve(address)}"
|
"$Tags.HTTP_URL" { it == "${endpoint.resolve(address)}" || it == "${endpoint.resolveWithoutFragment(address)}" }
|
||||||
"$Tags.HTTP_METHOD" method
|
"$Tags.HTTP_METHOD" method
|
||||||
"$Tags.HTTP_STATUS" endpoint.status
|
"$Tags.HTTP_STATUS" endpoint.status
|
||||||
"span.origin.type" ServletHandler.CachedChain.name
|
"span.origin.type" ServletHandler.CachedChain.name
|
||||||
|
@ -211,6 +213,14 @@ class DropwizardTest extends HttpServerTest<DropwizardTestSupport, Servlet3Decor
|
||||||
}
|
}
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("path/{id}/param")
|
||||||
|
Response path_param(@PathParam("id") int param) {
|
||||||
|
controller(PATH_PARAM) {
|
||||||
|
Response.status(PATH_PARAM.status).entity(param.toString()).build()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Path("/")
|
@Path("/")
|
||||||
|
|
|
@ -17,6 +17,7 @@ package io.opentelemetry.auto.instrumentation.elasticsearch;
|
||||||
|
|
||||||
import io.opentelemetry.OpenTelemetry;
|
import io.opentelemetry.OpenTelemetry;
|
||||||
import io.opentelemetry.auto.decorator.DatabaseClientDecorator;
|
import io.opentelemetry.auto.decorator.DatabaseClientDecorator;
|
||||||
|
import io.opentelemetry.auto.instrumentation.api.MoreTags;
|
||||||
import io.opentelemetry.auto.instrumentation.api.SpanTypes;
|
import io.opentelemetry.auto.instrumentation.api.SpanTypes;
|
||||||
import io.opentelemetry.auto.instrumentation.api.Tags;
|
import io.opentelemetry.auto.instrumentation.api.Tags;
|
||||||
import io.opentelemetry.trace.Span;
|
import io.opentelemetry.trace.Span;
|
||||||
|
@ -67,8 +68,8 @@ public class ElasticsearchRestClientDecorator extends DatabaseClientDecorator {
|
||||||
|
|
||||||
public Span onResponse(final Span span, final Response response) {
|
public Span onResponse(final Span span, final Response response) {
|
||||||
if (response != null && response.getHost() != null) {
|
if (response != null && response.getHost() != null) {
|
||||||
span.setAttribute(Tags.PEER_HOSTNAME, response.getHost().getHostName());
|
span.setAttribute(MoreTags.NET_PEER_NAME, response.getHost().getHostName());
|
||||||
span.setAttribute(Tags.PEER_PORT, response.getHost().getPort());
|
span.setAttribute(MoreTags.NET_PEER_PORT, response.getHost().getPort());
|
||||||
}
|
}
|
||||||
return span;
|
return span;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
import groovy.json.JsonSlurper
|
import groovy.json.JsonSlurper
|
||||||
|
import io.opentelemetry.auto.decorator.HttpClientDecorator
|
||||||
import io.opentelemetry.auto.instrumentation.api.MoreTags
|
import io.opentelemetry.auto.instrumentation.api.MoreTags
|
||||||
import io.opentelemetry.auto.instrumentation.api.SpanTypes
|
import io.opentelemetry.auto.instrumentation.api.SpanTypes
|
||||||
import io.opentelemetry.auto.instrumentation.api.Tags
|
import io.opentelemetry.auto.instrumentation.api.Tags
|
||||||
|
@ -103,15 +104,15 @@ class Elasticsearch6RestClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.SERVICE_NAME" "elasticsearch"
|
"$MoreTags.SERVICE_NAME" "elasticsearch"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_PORT" httpPort
|
"$MoreTags.NET_PEER_PORT" httpPort
|
||||||
"$Tags.HTTP_URL" "_cluster/health"
|
"$Tags.HTTP_URL" "_cluster/health"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
span(1) {
|
span(1) {
|
||||||
operationName "http.request"
|
operationName expectedOperationName("GET")
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
childOf span(0)
|
childOf span(0)
|
||||||
tags {
|
tags {
|
||||||
|
@ -125,4 +126,8 @@ class Elasticsearch6RestClientTest extends AgentTestRunner {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String expectedOperationName(String method) {
|
||||||
|
return method != null ? "HTTP $method" : HttpClientDecorator.DEFAULT_SPAN_NAME
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
import groovy.json.JsonSlurper
|
import groovy.json.JsonSlurper
|
||||||
|
import io.opentelemetry.auto.decorator.HttpClientDecorator
|
||||||
import io.opentelemetry.auto.instrumentation.api.MoreTags
|
import io.opentelemetry.auto.instrumentation.api.MoreTags
|
||||||
import io.opentelemetry.auto.instrumentation.api.SpanTypes
|
import io.opentelemetry.auto.instrumentation.api.SpanTypes
|
||||||
import io.opentelemetry.auto.instrumentation.api.Tags
|
import io.opentelemetry.auto.instrumentation.api.Tags
|
||||||
|
@ -107,15 +108,15 @@ class Elasticsearch5RestClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.SERVICE_NAME" "elasticsearch"
|
"$MoreTags.SERVICE_NAME" "elasticsearch"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_PORT" httpPort
|
"$MoreTags.NET_PEER_PORT" httpPort
|
||||||
"$Tags.HTTP_URL" "_cluster/health"
|
"$Tags.HTTP_URL" "_cluster/health"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
span(1) {
|
span(1) {
|
||||||
operationName "http.request"
|
operationName expectedOperationName("GET")
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
childOf span(0)
|
childOf span(0)
|
||||||
tags {
|
tags {
|
||||||
|
@ -129,4 +130,8 @@ class Elasticsearch5RestClientTest extends AgentTestRunner {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String expectedOperationName(String method) {
|
||||||
|
return method != null ? "HTTP $method" : HttpClientDecorator.DEFAULT_SPAN_NAME
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
import groovy.json.JsonSlurper
|
import groovy.json.JsonSlurper
|
||||||
|
import io.opentelemetry.auto.decorator.HttpClientDecorator
|
||||||
import io.opentelemetry.auto.instrumentation.api.MoreTags
|
import io.opentelemetry.auto.instrumentation.api.MoreTags
|
||||||
import io.opentelemetry.auto.instrumentation.api.SpanTypes
|
import io.opentelemetry.auto.instrumentation.api.SpanTypes
|
||||||
import io.opentelemetry.auto.instrumentation.api.Tags
|
import io.opentelemetry.auto.instrumentation.api.Tags
|
||||||
|
@ -107,15 +108,15 @@ class Elasticsearch6RestClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.SERVICE_NAME" "elasticsearch"
|
"$MoreTags.SERVICE_NAME" "elasticsearch"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_PORT" httpPort
|
"$MoreTags.NET_PEER_PORT" httpPort
|
||||||
"$Tags.HTTP_URL" "_cluster/health"
|
"$Tags.HTTP_URL" "_cluster/health"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
span(1) {
|
span(1) {
|
||||||
operationName "http.request"
|
operationName expectedOperationName("GET")
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
childOf span(0)
|
childOf span(0)
|
||||||
tags {
|
tags {
|
||||||
|
@ -138,4 +139,8 @@ class Elasticsearch6RestClientTest extends AgentTestRunner {
|
||||||
@Override
|
@Override
|
||||||
protected void registerDerivedNodeNameWithLogger(String nodeName) {}
|
protected void registerDerivedNodeNameWithLogger(String nodeName) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String expectedOperationName(String method) {
|
||||||
|
return method != null ? "HTTP $method" : HttpClientDecorator.DEFAULT_SPAN_NAME
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
import groovy.json.JsonSlurper
|
import groovy.json.JsonSlurper
|
||||||
|
import io.opentelemetry.auto.decorator.HttpClientDecorator
|
||||||
import io.opentelemetry.auto.instrumentation.api.MoreTags
|
import io.opentelemetry.auto.instrumentation.api.MoreTags
|
||||||
import io.opentelemetry.auto.instrumentation.api.SpanTypes
|
import io.opentelemetry.auto.instrumentation.api.SpanTypes
|
||||||
import io.opentelemetry.auto.instrumentation.api.Tags
|
import io.opentelemetry.auto.instrumentation.api.Tags
|
||||||
|
@ -103,15 +104,15 @@ class Elasticsearch6RestClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.SERVICE_NAME" "elasticsearch"
|
"$MoreTags.SERVICE_NAME" "elasticsearch"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_PORT" httpPort
|
"$MoreTags.NET_PEER_PORT" httpPort
|
||||||
"$Tags.HTTP_URL" "_cluster/health"
|
"$Tags.HTTP_URL" "_cluster/health"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
span(1) {
|
span(1) {
|
||||||
operationName "http.request"
|
operationName expectedOperationName("GET")
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
childOf span(0)
|
childOf span(0)
|
||||||
tags {
|
tags {
|
||||||
|
@ -125,4 +126,8 @@ class Elasticsearch6RestClientTest extends AgentTestRunner {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String expectedOperationName(String method) {
|
||||||
|
return method != null ? "HTTP $method" : HttpClientDecorator.DEFAULT_SPAN_NAME
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -106,9 +106,9 @@ class Elasticsearch2TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "ClusterHealthAction"
|
"$MoreTags.RESOURCE_NAME" "ClusterHealthAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "ClusterHealthAction"
|
"elasticsearch.action" "ClusterHealthAction"
|
||||||
"elasticsearch.request" "ClusterHealthRequest"
|
"elasticsearch.request" "ClusterHealthRequest"
|
||||||
|
@ -209,9 +209,9 @@ class Elasticsearch2TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "CreateIndexAction"
|
"$MoreTags.RESOURCE_NAME" "CreateIndexAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "CreateIndexAction"
|
"elasticsearch.action" "CreateIndexAction"
|
||||||
"elasticsearch.request" "CreateIndexRequest"
|
"elasticsearch.request" "CreateIndexRequest"
|
||||||
|
@ -228,9 +228,9 @@ class Elasticsearch2TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "ClusterHealthAction"
|
"$MoreTags.RESOURCE_NAME" "ClusterHealthAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "ClusterHealthAction"
|
"elasticsearch.action" "ClusterHealthAction"
|
||||||
"elasticsearch.request" "ClusterHealthRequest"
|
"elasticsearch.request" "ClusterHealthRequest"
|
||||||
|
@ -246,9 +246,9 @@ class Elasticsearch2TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "GetAction"
|
"$MoreTags.RESOURCE_NAME" "GetAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "GetAction"
|
"elasticsearch.action" "GetAction"
|
||||||
"elasticsearch.request" "GetRequest"
|
"elasticsearch.request" "GetRequest"
|
||||||
|
@ -284,9 +284,9 @@ class Elasticsearch2TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "IndexAction"
|
"$MoreTags.RESOURCE_NAME" "IndexAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "IndexAction"
|
"elasticsearch.action" "IndexAction"
|
||||||
"elasticsearch.request" "IndexRequest"
|
"elasticsearch.request" "IndexRequest"
|
||||||
|
@ -304,9 +304,9 @@ class Elasticsearch2TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "GetAction"
|
"$MoreTags.RESOURCE_NAME" "GetAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "GetAction"
|
"elasticsearch.action" "GetAction"
|
||||||
"elasticsearch.request" "GetRequest"
|
"elasticsearch.request" "GetRequest"
|
||||||
|
|
|
@ -18,7 +18,7 @@ package io.opentelemetry.auto.instrumentation.elasticsearch2;
|
||||||
import static io.opentelemetry.auto.instrumentation.elasticsearch.ElasticsearchTransportClientDecorator.DECORATE;
|
import static io.opentelemetry.auto.instrumentation.elasticsearch.ElasticsearchTransportClientDecorator.DECORATE;
|
||||||
|
|
||||||
import com.google.common.base.Joiner;
|
import com.google.common.base.Joiner;
|
||||||
import io.opentelemetry.auto.instrumentation.api.Tags;
|
import io.opentelemetry.auto.instrumentation.api.MoreTags;
|
||||||
import io.opentelemetry.trace.Span;
|
import io.opentelemetry.trace.Span;
|
||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.action.ActionRequest;
|
import org.elasticsearch.action.ActionRequest;
|
||||||
|
@ -71,9 +71,9 @@ public class TransportActionListener<T extends ActionResponse> implements Action
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(final T response) {
|
public void onResponse(final T response) {
|
||||||
if (response.remoteAddress() != null) {
|
if (response.remoteAddress() != null) {
|
||||||
span.setAttribute(Tags.PEER_HOSTNAME, response.remoteAddress().getHost());
|
span.setAttribute(MoreTags.NET_PEER_NAME, response.remoteAddress().getHost());
|
||||||
span.setAttribute(Tags.PEER_HOST_IPV4, response.remoteAddress().getAddress());
|
span.setAttribute(MoreTags.NET_PEER_IP, response.remoteAddress().getAddress());
|
||||||
span.setAttribute(Tags.PEER_PORT, response.remoteAddress().getPort());
|
span.setAttribute(MoreTags.NET_PEER_PORT, response.remoteAddress().getPort());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (response instanceof GetResponse) {
|
if (response instanceof GetResponse) {
|
||||||
|
|
|
@ -226,9 +226,9 @@ class Elasticsearch2NodeClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "GetAction"
|
"$MoreTags.RESOURCE_NAME" "GetAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "local"
|
"$MoreTags.NET_PEER_NAME" "local"
|
||||||
"$Tags.PEER_HOST_IPV4" "0.0.0.0"
|
"$MoreTags.NET_PEER_IP" "0.0.0.0"
|
||||||
"$Tags.PEER_PORT" 0
|
"$MoreTags.NET_PEER_PORT" 0
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "GetAction"
|
"elasticsearch.action" "GetAction"
|
||||||
"elasticsearch.request" "GetRequest"
|
"elasticsearch.request" "GetRequest"
|
||||||
|
@ -264,9 +264,9 @@ class Elasticsearch2NodeClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "IndexAction"
|
"$MoreTags.RESOURCE_NAME" "IndexAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "local"
|
"$MoreTags.NET_PEER_NAME" "local"
|
||||||
"$Tags.PEER_HOST_IPV4" "0.0.0.0"
|
"$MoreTags.NET_PEER_IP" "0.0.0.0"
|
||||||
"$Tags.PEER_PORT" 0
|
"$MoreTags.NET_PEER_PORT" 0
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "IndexAction"
|
"elasticsearch.action" "IndexAction"
|
||||||
"elasticsearch.request" "IndexRequest"
|
"elasticsearch.request" "IndexRequest"
|
||||||
|
@ -284,9 +284,9 @@ class Elasticsearch2NodeClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "GetAction"
|
"$MoreTags.RESOURCE_NAME" "GetAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "local"
|
"$MoreTags.NET_PEER_NAME" "local"
|
||||||
"$Tags.PEER_HOST_IPV4" "0.0.0.0"
|
"$MoreTags.NET_PEER_IP" "0.0.0.0"
|
||||||
"$Tags.PEER_PORT" 0
|
"$MoreTags.NET_PEER_PORT" 0
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "GetAction"
|
"elasticsearch.action" "GetAction"
|
||||||
"elasticsearch.request" "GetRequest"
|
"elasticsearch.request" "GetRequest"
|
||||||
|
|
|
@ -107,9 +107,9 @@ class Elasticsearch2TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "ClusterHealthAction"
|
"$MoreTags.RESOURCE_NAME" "ClusterHealthAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "127.0.0.1"
|
"$MoreTags.NET_PEER_NAME" "127.0.0.1"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "ClusterHealthAction"
|
"elasticsearch.action" "ClusterHealthAction"
|
||||||
"elasticsearch.request" "ClusterHealthRequest"
|
"elasticsearch.request" "ClusterHealthRequest"
|
||||||
|
@ -139,9 +139,9 @@ class Elasticsearch2TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "ClusterStatsAction"
|
"$MoreTags.RESOURCE_NAME" "ClusterStatsAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "127.0.0.1"
|
"$MoreTags.NET_PEER_NAME" "127.0.0.1"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "ClusterStatsAction"
|
"elasticsearch.action" "ClusterStatsAction"
|
||||||
"elasticsearch.request" "ClusterStatsRequest"
|
"elasticsearch.request" "ClusterStatsRequest"
|
||||||
|
@ -243,9 +243,9 @@ class Elasticsearch2TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "CreateIndexAction"
|
"$MoreTags.RESOURCE_NAME" "CreateIndexAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "127.0.0.1"
|
"$MoreTags.NET_PEER_NAME" "127.0.0.1"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "CreateIndexAction"
|
"elasticsearch.action" "CreateIndexAction"
|
||||||
"elasticsearch.request" "CreateIndexRequest"
|
"elasticsearch.request" "CreateIndexRequest"
|
||||||
|
@ -262,9 +262,9 @@ class Elasticsearch2TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "ClusterHealthAction"
|
"$MoreTags.RESOURCE_NAME" "ClusterHealthAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "127.0.0.1"
|
"$MoreTags.NET_PEER_NAME" "127.0.0.1"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "ClusterHealthAction"
|
"elasticsearch.action" "ClusterHealthAction"
|
||||||
"elasticsearch.request" "ClusterHealthRequest"
|
"elasticsearch.request" "ClusterHealthRequest"
|
||||||
|
@ -280,9 +280,9 @@ class Elasticsearch2TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "GetAction"
|
"$MoreTags.RESOURCE_NAME" "GetAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "127.0.0.1"
|
"$MoreTags.NET_PEER_NAME" "127.0.0.1"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "GetAction"
|
"elasticsearch.action" "GetAction"
|
||||||
"elasticsearch.request" "GetRequest"
|
"elasticsearch.request" "GetRequest"
|
||||||
|
@ -318,9 +318,9 @@ class Elasticsearch2TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "IndexAction"
|
"$MoreTags.RESOURCE_NAME" "IndexAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "127.0.0.1"
|
"$MoreTags.NET_PEER_NAME" "127.0.0.1"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "IndexAction"
|
"elasticsearch.action" "IndexAction"
|
||||||
"elasticsearch.request" "IndexRequest"
|
"elasticsearch.request" "IndexRequest"
|
||||||
|
@ -338,9 +338,9 @@ class Elasticsearch2TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "GetAction"
|
"$MoreTags.RESOURCE_NAME" "GetAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "127.0.0.1"
|
"$MoreTags.NET_PEER_NAME" "127.0.0.1"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "GetAction"
|
"elasticsearch.action" "GetAction"
|
||||||
"elasticsearch.request" "GetRequest"
|
"elasticsearch.request" "GetRequest"
|
||||||
|
|
|
@ -98,9 +98,9 @@ class Elasticsearch2SpringRepositoryTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "IndexAction"
|
"$MoreTags.RESOURCE_NAME" "IndexAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "local"
|
"$MoreTags.NET_PEER_NAME" "local"
|
||||||
"$Tags.PEER_HOST_IPV4" "0.0.0.0"
|
"$MoreTags.NET_PEER_IP" "0.0.0.0"
|
||||||
"$Tags.PEER_PORT" 0
|
"$MoreTags.NET_PEER_PORT" 0
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "IndexAction"
|
"elasticsearch.action" "IndexAction"
|
||||||
"elasticsearch.request" "IndexRequest"
|
"elasticsearch.request" "IndexRequest"
|
||||||
|
@ -145,9 +145,9 @@ class Elasticsearch2SpringRepositoryTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "GetAction"
|
"$MoreTags.RESOURCE_NAME" "GetAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "local"
|
"$MoreTags.NET_PEER_NAME" "local"
|
||||||
"$Tags.PEER_HOST_IPV4" "0.0.0.0"
|
"$MoreTags.NET_PEER_IP" "0.0.0.0"
|
||||||
"$Tags.PEER_PORT" 0
|
"$MoreTags.NET_PEER_PORT" 0
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "GetAction"
|
"elasticsearch.action" "GetAction"
|
||||||
"elasticsearch.request" "GetRequest"
|
"elasticsearch.request" "GetRequest"
|
||||||
|
@ -179,9 +179,9 @@ class Elasticsearch2SpringRepositoryTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "IndexAction"
|
"$MoreTags.RESOURCE_NAME" "IndexAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "local"
|
"$MoreTags.NET_PEER_NAME" "local"
|
||||||
"$Tags.PEER_HOST_IPV4" "0.0.0.0"
|
"$MoreTags.NET_PEER_IP" "0.0.0.0"
|
||||||
"$Tags.PEER_PORT" 0
|
"$MoreTags.NET_PEER_PORT" 0
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "IndexAction"
|
"elasticsearch.action" "IndexAction"
|
||||||
"elasticsearch.request" "IndexRequest"
|
"elasticsearch.request" "IndexRequest"
|
||||||
|
@ -218,9 +218,9 @@ class Elasticsearch2SpringRepositoryTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "GetAction"
|
"$MoreTags.RESOURCE_NAME" "GetAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "local"
|
"$MoreTags.NET_PEER_NAME" "local"
|
||||||
"$Tags.PEER_HOST_IPV4" "0.0.0.0"
|
"$MoreTags.NET_PEER_IP" "0.0.0.0"
|
||||||
"$Tags.PEER_PORT" 0
|
"$MoreTags.NET_PEER_PORT" 0
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "GetAction"
|
"elasticsearch.action" "GetAction"
|
||||||
"elasticsearch.request" "GetRequest"
|
"elasticsearch.request" "GetRequest"
|
||||||
|
@ -251,9 +251,9 @@ class Elasticsearch2SpringRepositoryTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "DeleteAction"
|
"$MoreTags.RESOURCE_NAME" "DeleteAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "local"
|
"$MoreTags.NET_PEER_NAME" "local"
|
||||||
"$Tags.PEER_HOST_IPV4" "0.0.0.0"
|
"$MoreTags.NET_PEER_IP" "0.0.0.0"
|
||||||
"$Tags.PEER_PORT" 0
|
"$MoreTags.NET_PEER_PORT" 0
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "DeleteAction"
|
"elasticsearch.action" "DeleteAction"
|
||||||
"elasticsearch.request" "DeleteRequest"
|
"elasticsearch.request" "DeleteRequest"
|
||||||
|
|
|
@ -227,9 +227,9 @@ class Elasticsearch2SpringTemplateTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "IndexAction"
|
"$MoreTags.RESOURCE_NAME" "IndexAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "local"
|
"$MoreTags.NET_PEER_NAME" "local"
|
||||||
"$Tags.PEER_HOST_IPV4" "0.0.0.0"
|
"$MoreTags.NET_PEER_IP" "0.0.0.0"
|
||||||
"$Tags.PEER_PORT" 0
|
"$MoreTags.NET_PEER_PORT" 0
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "IndexAction"
|
"elasticsearch.action" "IndexAction"
|
||||||
"elasticsearch.request" "IndexRequest"
|
"elasticsearch.request" "IndexRequest"
|
||||||
|
|
|
@ -18,7 +18,7 @@ package io.opentelemetry.auto.instrumentation.elasticsearch5;
|
||||||
import static io.opentelemetry.auto.instrumentation.elasticsearch.ElasticsearchTransportClientDecorator.DECORATE;
|
import static io.opentelemetry.auto.instrumentation.elasticsearch.ElasticsearchTransportClientDecorator.DECORATE;
|
||||||
|
|
||||||
import com.google.common.base.Joiner;
|
import com.google.common.base.Joiner;
|
||||||
import io.opentelemetry.auto.instrumentation.api.Tags;
|
import io.opentelemetry.auto.instrumentation.api.MoreTags;
|
||||||
import io.opentelemetry.trace.Span;
|
import io.opentelemetry.trace.Span;
|
||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.action.ActionRequest;
|
import org.elasticsearch.action.ActionRequest;
|
||||||
|
@ -73,9 +73,9 @@ public class TransportActionListener<T extends ActionResponse> implements Action
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(final T response) {
|
public void onResponse(final T response) {
|
||||||
if (response.remoteAddress() != null) {
|
if (response.remoteAddress() != null) {
|
||||||
span.setAttribute(Tags.PEER_HOSTNAME, response.remoteAddress().getHost());
|
span.setAttribute(MoreTags.NET_PEER_NAME, response.remoteAddress().getHost());
|
||||||
span.setAttribute(Tags.PEER_HOST_IPV4, response.remoteAddress().getAddress());
|
span.setAttribute(MoreTags.NET_PEER_IP, response.remoteAddress().getAddress());
|
||||||
span.setAttribute(Tags.PEER_PORT, response.remoteAddress().getPort());
|
span.setAttribute(MoreTags.NET_PEER_PORT, response.remoteAddress().getPort());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (response instanceof GetResponse) {
|
if (response instanceof GetResponse) {
|
||||||
|
|
|
@ -113,9 +113,9 @@ class Elasticsearch5TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "ClusterHealthAction"
|
"$MoreTags.RESOURCE_NAME" "ClusterHealthAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" String
|
"$MoreTags.NET_PEER_NAME" String
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "ClusterHealthAction"
|
"elasticsearch.action" "ClusterHealthAction"
|
||||||
"elasticsearch.request" "ClusterHealthRequest"
|
"elasticsearch.request" "ClusterHealthRequest"
|
||||||
|
@ -216,9 +216,9 @@ class Elasticsearch5TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "CreateIndexAction"
|
"$MoreTags.RESOURCE_NAME" "CreateIndexAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" String
|
"$MoreTags.NET_PEER_NAME" String
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "CreateIndexAction"
|
"elasticsearch.action" "CreateIndexAction"
|
||||||
"elasticsearch.request" "CreateIndexRequest"
|
"elasticsearch.request" "CreateIndexRequest"
|
||||||
|
@ -235,9 +235,9 @@ class Elasticsearch5TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "GetAction"
|
"$MoreTags.RESOURCE_NAME" "GetAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" String
|
"$MoreTags.NET_PEER_NAME" String
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "GetAction"
|
"elasticsearch.action" "GetAction"
|
||||||
"elasticsearch.request" "GetRequest"
|
"elasticsearch.request" "GetRequest"
|
||||||
|
@ -272,9 +272,9 @@ class Elasticsearch5TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "IndexAction"
|
"$MoreTags.RESOURCE_NAME" "IndexAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" String
|
"$MoreTags.NET_PEER_NAME" String
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "IndexAction"
|
"elasticsearch.action" "IndexAction"
|
||||||
"elasticsearch.request" "IndexRequest"
|
"elasticsearch.request" "IndexRequest"
|
||||||
|
@ -296,9 +296,9 @@ class Elasticsearch5TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "GetAction"
|
"$MoreTags.RESOURCE_NAME" "GetAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" String
|
"$MoreTags.NET_PEER_NAME" String
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "GetAction"
|
"elasticsearch.action" "GetAction"
|
||||||
"elasticsearch.request" "GetRequest"
|
"elasticsearch.request" "GetRequest"
|
||||||
|
|
|
@ -18,7 +18,7 @@ package io.opentelemetry.auto.instrumentation.elasticsearch5_3;
|
||||||
import static io.opentelemetry.auto.instrumentation.elasticsearch.ElasticsearchTransportClientDecorator.DECORATE;
|
import static io.opentelemetry.auto.instrumentation.elasticsearch.ElasticsearchTransportClientDecorator.DECORATE;
|
||||||
|
|
||||||
import com.google.common.base.Joiner;
|
import com.google.common.base.Joiner;
|
||||||
import io.opentelemetry.auto.instrumentation.api.Tags;
|
import io.opentelemetry.auto.instrumentation.api.MoreTags;
|
||||||
import io.opentelemetry.trace.Span;
|
import io.opentelemetry.trace.Span;
|
||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.action.ActionRequest;
|
import org.elasticsearch.action.ActionRequest;
|
||||||
|
@ -74,9 +74,9 @@ public class TransportActionListener<T extends ActionResponse> implements Action
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(final T response) {
|
public void onResponse(final T response) {
|
||||||
if (response.remoteAddress() != null) {
|
if (response.remoteAddress() != null) {
|
||||||
span.setAttribute(Tags.PEER_HOSTNAME, response.remoteAddress().getHost());
|
span.setAttribute(MoreTags.NET_PEER_NAME, response.remoteAddress().getHost());
|
||||||
span.setAttribute(Tags.PEER_HOST_IPV4, response.remoteAddress().getAddress());
|
span.setAttribute(MoreTags.NET_PEER_IP, response.remoteAddress().getAddress());
|
||||||
span.setAttribute(Tags.PEER_PORT, response.remoteAddress().getPort());
|
span.setAttribute(MoreTags.NET_PEER_PORT, response.remoteAddress().getPort());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (response instanceof GetResponse) {
|
if (response instanceof GetResponse) {
|
||||||
|
|
|
@ -113,9 +113,9 @@ class Elasticsearch53TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "ClusterHealthAction"
|
"$MoreTags.RESOURCE_NAME" "ClusterHealthAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "ClusterHealthAction"
|
"elasticsearch.action" "ClusterHealthAction"
|
||||||
"elasticsearch.request" "ClusterHealthRequest"
|
"elasticsearch.request" "ClusterHealthRequest"
|
||||||
|
@ -216,9 +216,9 @@ class Elasticsearch53TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "CreateIndexAction"
|
"$MoreTags.RESOURCE_NAME" "CreateIndexAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "CreateIndexAction"
|
"elasticsearch.action" "CreateIndexAction"
|
||||||
"elasticsearch.request" "CreateIndexRequest"
|
"elasticsearch.request" "CreateIndexRequest"
|
||||||
|
@ -235,9 +235,9 @@ class Elasticsearch53TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "GetAction"
|
"$MoreTags.RESOURCE_NAME" "GetAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "GetAction"
|
"elasticsearch.action" "GetAction"
|
||||||
"elasticsearch.request" "GetRequest"
|
"elasticsearch.request" "GetRequest"
|
||||||
|
@ -272,9 +272,9 @@ class Elasticsearch53TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "IndexAction"
|
"$MoreTags.RESOURCE_NAME" "IndexAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "IndexAction"
|
"elasticsearch.action" "IndexAction"
|
||||||
"elasticsearch.request" "IndexRequest"
|
"elasticsearch.request" "IndexRequest"
|
||||||
|
@ -297,9 +297,9 @@ class Elasticsearch53TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "GetAction"
|
"$MoreTags.RESOURCE_NAME" "GetAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "GetAction"
|
"elasticsearch.action" "GetAction"
|
||||||
"elasticsearch.request" "GetRequest"
|
"elasticsearch.request" "GetRequest"
|
||||||
|
|
|
@ -18,7 +18,7 @@ package io.opentelemetry.auto.instrumentation.elasticsearch6;
|
||||||
import static io.opentelemetry.auto.instrumentation.elasticsearch.ElasticsearchTransportClientDecorator.DECORATE;
|
import static io.opentelemetry.auto.instrumentation.elasticsearch.ElasticsearchTransportClientDecorator.DECORATE;
|
||||||
|
|
||||||
import com.google.common.base.Joiner;
|
import com.google.common.base.Joiner;
|
||||||
import io.opentelemetry.auto.instrumentation.api.Tags;
|
import io.opentelemetry.auto.instrumentation.api.MoreTags;
|
||||||
import io.opentelemetry.trace.Span;
|
import io.opentelemetry.trace.Span;
|
||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.action.ActionRequest;
|
import org.elasticsearch.action.ActionRequest;
|
||||||
|
@ -78,9 +78,9 @@ public class TransportActionListener<T extends ActionResponse> implements Action
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(final T response) {
|
public void onResponse(final T response) {
|
||||||
if (response.remoteAddress() != null) {
|
if (response.remoteAddress() != null) {
|
||||||
span.setAttribute(Tags.PEER_HOSTNAME, response.remoteAddress().address().getHostName());
|
span.setAttribute(MoreTags.NET_PEER_NAME, response.remoteAddress().address().getHostName());
|
||||||
span.setAttribute(Tags.PEER_HOST_IPV4, response.remoteAddress().getAddress());
|
span.setAttribute(MoreTags.NET_PEER_IP, response.remoteAddress().getAddress());
|
||||||
span.setAttribute(Tags.PEER_PORT, response.remoteAddress().getPort());
|
span.setAttribute(MoreTags.NET_PEER_PORT, response.remoteAddress().getPort());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (response instanceof GetResponse) {
|
if (response instanceof GetResponse) {
|
||||||
|
|
|
@ -110,9 +110,9 @@ class Elasticsearch6TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "ClusterHealthAction"
|
"$MoreTags.RESOURCE_NAME" "ClusterHealthAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "ClusterHealthAction"
|
"elasticsearch.action" "ClusterHealthAction"
|
||||||
"elasticsearch.request" "ClusterHealthRequest"
|
"elasticsearch.request" "ClusterHealthRequest"
|
||||||
|
@ -213,9 +213,9 @@ class Elasticsearch6TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "CreateIndexAction"
|
"$MoreTags.RESOURCE_NAME" "CreateIndexAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "CreateIndexAction"
|
"elasticsearch.action" "CreateIndexAction"
|
||||||
"elasticsearch.request" "CreateIndexRequest"
|
"elasticsearch.request" "CreateIndexRequest"
|
||||||
|
@ -232,9 +232,9 @@ class Elasticsearch6TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "GetAction"
|
"$MoreTags.RESOURCE_NAME" "GetAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "GetAction"
|
"elasticsearch.action" "GetAction"
|
||||||
"elasticsearch.request" "GetRequest"
|
"elasticsearch.request" "GetRequest"
|
||||||
|
@ -269,9 +269,9 @@ class Elasticsearch6TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "IndexAction"
|
"$MoreTags.RESOURCE_NAME" "IndexAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "IndexAction"
|
"elasticsearch.action" "IndexAction"
|
||||||
"elasticsearch.request" "IndexRequest"
|
"elasticsearch.request" "IndexRequest"
|
||||||
|
@ -294,9 +294,9 @@ class Elasticsearch6TransportClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "GetAction"
|
"$MoreTags.RESOURCE_NAME" "GetAction"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
"$MoreTags.SPAN_TYPE" SpanTypes.ELASTICSEARCH
|
||||||
"$Tags.COMPONENT" "elasticsearch-java"
|
"$Tags.COMPONENT" "elasticsearch-java"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" tcpPort
|
"$MoreTags.NET_PEER_PORT" tcpPort
|
||||||
"$Tags.DB_TYPE" "elasticsearch"
|
"$Tags.DB_TYPE" "elasticsearch"
|
||||||
"elasticsearch.action" "GetAction"
|
"elasticsearch.action" "GetAction"
|
||||||
"elasticsearch.request" "GetRequest"
|
"elasticsearch.request" "GetRequest"
|
||||||
|
|
|
@ -30,6 +30,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
|
||||||
import com.google.auto.service.AutoService;
|
import com.google.auto.service.AutoService;
|
||||||
import com.twitter.finagle.http.Request;
|
import com.twitter.finagle.http.Request;
|
||||||
import com.twitter.finagle.http.Response;
|
import com.twitter.finagle.http.Response;
|
||||||
|
import com.twitter.finatra.http.contexts.RouteInfo;
|
||||||
import com.twitter.util.Future;
|
import com.twitter.util.Future;
|
||||||
import com.twitter.util.FutureEventListener;
|
import com.twitter.util.FutureEventListener;
|
||||||
import io.opentelemetry.auto.config.Config;
|
import io.opentelemetry.auto.config.Config;
|
||||||
|
@ -91,15 +92,16 @@ public class FinatraInstrumentation extends Instrumenter.Default {
|
||||||
@Advice.OnMethodEnter(suppress = Throwable.class)
|
@Advice.OnMethodEnter(suppress = Throwable.class)
|
||||||
public static SpanWithScope nameSpan(
|
public static SpanWithScope nameSpan(
|
||||||
@Advice.Argument(0) final Request request,
|
@Advice.Argument(0) final Request request,
|
||||||
@Advice.FieldValue("path") final String path,
|
@Advice.FieldValue("routeInfo") final RouteInfo routeInfo,
|
||||||
@Advice.FieldValue("clazz") final Class clazz,
|
@Advice.FieldValue("clazz") final Class clazz,
|
||||||
@Advice.Origin final Method method) {
|
@Advice.Origin final Method method) {
|
||||||
|
|
||||||
// Update the parent "netty.request"
|
// Update the parent "netty.request"
|
||||||
final Span parent = TRACER.getCurrentSpan();
|
final Span parent = TRACER.getCurrentSpan();
|
||||||
parent.setAttribute(MoreTags.RESOURCE_NAME, request.method().name() + " " + path);
|
final String resourceName = request.method().name() + " " + routeInfo.path();
|
||||||
|
parent.setAttribute(MoreTags.RESOURCE_NAME, resourceName);
|
||||||
parent.setAttribute(Tags.COMPONENT, "finatra");
|
parent.setAttribute(Tags.COMPONENT, "finatra");
|
||||||
parent.updateName("finatra.request");
|
parent.updateName(resourceName);
|
||||||
|
|
||||||
final Span span = TRACER.spanBuilder("finatra.controller").startSpan();
|
final Span span = TRACER.spanBuilder("finatra.controller").startSpan();
|
||||||
DECORATE.afterStart(span);
|
DECORATE.afterStart(span);
|
||||||
|
|
|
@ -29,6 +29,7 @@ import java.util.concurrent.TimeoutException
|
||||||
|
|
||||||
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.ERROR
|
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.ERROR
|
||||||
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.EXCEPTION
|
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.EXCEPTION
|
||||||
|
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.PATH_PARAM
|
||||||
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.SUCCESS
|
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.SUCCESS
|
||||||
import static io.opentelemetry.trace.Span.Kind.INTERNAL
|
import static io.opentelemetry.trace.Span.Kind.INTERNAL
|
||||||
import static io.opentelemetry.trace.Span.Kind.SERVER
|
import static io.opentelemetry.trace.Span.Kind.SERVER
|
||||||
|
@ -80,8 +81,8 @@ class FinatraServerTest extends HttpServerTest<HttpServer, FinatraDecorator> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
String expectedOperationName() {
|
boolean testPathParam() {
|
||||||
return "finatra.request"
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -107,7 +108,7 @@ class FinatraServerTest extends HttpServerTest<HttpServer, FinatraDecorator> {
|
||||||
@Override
|
@Override
|
||||||
void serverSpan(TraceAssert trace, int index, String traceID = null, String parentID = null, String method = "GET", ServerEndpoint endpoint = SUCCESS) {
|
void serverSpan(TraceAssert trace, int index, String traceID = null, String parentID = null, String method = "GET", ServerEndpoint endpoint = SUCCESS) {
|
||||||
trace.span(index) {
|
trace.span(index) {
|
||||||
operationName expectedOperationName()
|
operationName "$method ${endpoint == PATH_PARAM ? "/path/:id/param" : endpoint.resolvePath(address).path}"
|
||||||
spanKind SERVER
|
spanKind SERVER
|
||||||
errored endpoint.errored
|
errored endpoint.errored
|
||||||
if (parentID != null) {
|
if (parentID != null) {
|
||||||
|
@ -117,12 +118,12 @@ class FinatraServerTest extends HttpServerTest<HttpServer, FinatraDecorator> {
|
||||||
parent()
|
parent()
|
||||||
}
|
}
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.RESOURCE_NAME" "$method ${endpoint.resolve(address).path}"
|
"$MoreTags.RESOURCE_NAME" "$method ${endpoint == PATH_PARAM ? "/path/:id/param" : endpoint.resolvePath(address).path}"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
||||||
"$Tags.COMPONENT" serverDecorator.getComponentName()
|
"$Tags.COMPONENT" serverDecorator.getComponentName()
|
||||||
"$Tags.PEER_PORT" Long
|
"$MoreTags.NET_PEER_PORT" Long
|
||||||
"$Tags.PEER_HOST_IPV4" { it == null || it == "127.0.0.1" } // Optional
|
"$MoreTags.NET_PEER_IP" { it == null || it == "127.0.0.1" } // Optional
|
||||||
"$Tags.HTTP_URL" "${endpoint.resolve(address)}"
|
"$Tags.HTTP_URL" { it == "${endpoint.resolve(address)}" || it == "${endpoint.resolveWithoutFragment(address)}" }
|
||||||
"$Tags.HTTP_METHOD" method
|
"$Tags.HTTP_METHOD" method
|
||||||
"$Tags.HTTP_STATUS" endpoint.status
|
"$Tags.HTTP_STATUS" endpoint.status
|
||||||
if (endpoint.query) {
|
if (endpoint.query) {
|
||||||
|
|
|
@ -68,4 +68,12 @@ class FinatraController extends Controller {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
any("/path/:id/param") { request : Request =>
|
||||||
|
controller(PATH_PARAM, new Closure[Response](null) {
|
||||||
|
override def call(): Response = {
|
||||||
|
response.ok(request.params("id"))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -105,7 +105,11 @@ public class GoogleHttpClientInstrumentation extends Instrumenter.Default {
|
||||||
|
|
||||||
if (state == null) {
|
if (state == null) {
|
||||||
state =
|
state =
|
||||||
new RequestState(TRACER.spanBuilder("http.request").setSpanKind(CLIENT).startSpan());
|
new RequestState(
|
||||||
|
TRACER
|
||||||
|
.spanBuilder(DECORATE.spanNameForRequest(request))
|
||||||
|
.setSpanKind(CLIENT)
|
||||||
|
.startSpan());
|
||||||
contextStore.put(request, state);
|
contextStore.put(request, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -153,7 +157,8 @@ public class GoogleHttpClientInstrumentation extends Instrumenter.Default {
|
||||||
|
|
||||||
@Advice.OnMethodEnter(suppress = Throwable.class)
|
@Advice.OnMethodEnter(suppress = Throwable.class)
|
||||||
public static void methodEnter(@Advice.This final HttpRequest request) {
|
public static void methodEnter(@Advice.This final HttpRequest request) {
|
||||||
final Span span = TRACER.spanBuilder("http.request").setSpanKind(CLIENT).startSpan();
|
final Span span =
|
||||||
|
TRACER.spanBuilder(DECORATE.spanNameForRequest(request)).setSpanKind(CLIENT).startSpan();
|
||||||
|
|
||||||
final ContextStore<HttpRequest, RequestState> contextStore =
|
final ContextStore<HttpRequest, RequestState> contextStore =
|
||||||
InstrumentationContext.get(HttpRequest.class, RequestState.class);
|
InstrumentationContext.get(HttpRequest.class, RequestState.class);
|
||||||
|
|
|
@ -79,9 +79,9 @@ abstract class AbstractGoogleHttpClientTest extends HttpClientTest<GoogleHttpCli
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
||||||
"$Tags.COMPONENT" "google-http-client"
|
"$Tags.COMPONENT" "google-http-client"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_PORT" Long
|
"$MoreTags.NET_PEER_PORT" Long
|
||||||
"$Tags.HTTP_URL" "${uri.resolve(uri.path)}"
|
"$Tags.HTTP_URL" "${uri}"
|
||||||
"$Tags.HTTP_METHOD" method
|
"$Tags.HTTP_METHOD" method
|
||||||
"$Tags.HTTP_STATUS" 500
|
"$Tags.HTTP_STATUS" 500
|
||||||
"$MoreTags.ERROR_MSG" "Server Error"
|
"$MoreTags.ERROR_MSG" "Server Error"
|
||||||
|
|
|
@ -85,7 +85,8 @@ public class GrizzlyHttpHandlerInstrumentation extends Instrumenter.Default {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Span.Builder spanBuilder = TRACER.spanBuilder("grizzly.request").setSpanKind(SERVER);
|
final Span.Builder spanBuilder =
|
||||||
|
TRACER.spanBuilder(DECORATE.spanNameForRequest(request)).setSpanKind(SERVER);
|
||||||
try {
|
try {
|
||||||
final SpanContext extractedContext = TRACER.getHttpTextFormat().extract(request, GETTER);
|
final SpanContext extractedContext = TRACER.getHttpTextFormat().extract(request, GETTER);
|
||||||
spanBuilder.setParent(extractedContext);
|
spanBuilder.setParent(extractedContext);
|
||||||
|
|
|
@ -56,11 +56,6 @@ class GrizzlyTest extends HttpServerTest<HttpServer, GrizzlyDecorator> {
|
||||||
return GrizzlyDecorator.DECORATE
|
return GrizzlyDecorator.DECORATE
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
String expectedOperationName() {
|
|
||||||
return "grizzly.request"
|
|
||||||
}
|
|
||||||
|
|
||||||
static class SimpleExceptionMapper implements ExceptionMapper<Throwable> {
|
static class SimpleExceptionMapper implements ExceptionMapper<Throwable> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -138,8 +138,6 @@ public class HttpUrlConnectionInstrumentation extends Instrumenter.Default {
|
||||||
|
|
||||||
public static class HttpUrlState {
|
public static class HttpUrlState {
|
||||||
|
|
||||||
public static final String OPERATION_NAME = "http.request";
|
|
||||||
|
|
||||||
public static final ContextStore.Factory<HttpUrlState> FACTORY =
|
public static final ContextStore.Factory<HttpUrlState> FACTORY =
|
||||||
new ContextStore.Factory<HttpUrlState>() {
|
new ContextStore.Factory<HttpUrlState>() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -152,7 +150,11 @@ public class HttpUrlConnectionInstrumentation extends Instrumenter.Default {
|
||||||
private volatile boolean finished = false;
|
private volatile boolean finished = false;
|
||||||
|
|
||||||
public Span start(final HttpURLConnection connection) {
|
public Span start(final HttpURLConnection connection) {
|
||||||
span = TRACER.spanBuilder(OPERATION_NAME).setSpanKind(CLIENT).startSpan();
|
span =
|
||||||
|
TRACER
|
||||||
|
.spanBuilder(DECORATE.spanNameForRequest(connection))
|
||||||
|
.setSpanKind(CLIENT)
|
||||||
|
.startSpan();
|
||||||
try (final Scope scope = TRACER.withSpan(span)) {
|
try (final Scope scope = TRACER.withSpan(span)) {
|
||||||
DECORATE.afterStart(span);
|
DECORATE.afterStart(span);
|
||||||
DECORATE.onRequest(span, connection);
|
DECORATE.onRequest(span, connection);
|
||||||
|
|
|
@ -96,10 +96,10 @@ public class UrlInstrumentation extends Instrumenter.Default {
|
||||||
|
|
||||||
try (final Scope scope = TRACER.withSpan(span)) {
|
try (final Scope scope = TRACER.withSpan(span)) {
|
||||||
span.setAttribute(Tags.HTTP_URL, url.toString());
|
span.setAttribute(Tags.HTTP_URL, url.toString());
|
||||||
span.setAttribute(Tags.PEER_PORT, url.getPort() == -1 ? 80 : url.getPort());
|
span.setAttribute(MoreTags.NET_PEER_PORT, url.getPort() == -1 ? 80 : url.getPort());
|
||||||
final String host = url.getHost();
|
final String host = url.getHost();
|
||||||
if (host != null && !host.isEmpty()) {
|
if (host != null && !host.isEmpty()) {
|
||||||
span.setAttribute(Tags.PEER_HOSTNAME, host);
|
span.setAttribute(MoreTags.NET_PEER_NAME, host);
|
||||||
if (Config.get().isHttpClientSplitByDomain()) {
|
if (Config.get().isHttpClientSplitByDomain()) {
|
||||||
span.setAttribute(MoreTags.SERVICE_NAME, host);
|
span.setAttribute(MoreTags.SERVICE_NAME, host);
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,6 @@ import spock.lang.Ignore
|
||||||
import spock.lang.Requires
|
import spock.lang.Requires
|
||||||
import sun.net.www.protocol.https.HttpsURLConnectionImpl
|
import sun.net.www.protocol.https.HttpsURLConnectionImpl
|
||||||
|
|
||||||
import static io.opentelemetry.auto.instrumentation.http_url_connection.HttpUrlConnectionInstrumentation.HttpUrlState.OPERATION_NAME
|
|
||||||
import static io.opentelemetry.auto.test.utils.ConfigUtils.withConfigOverride
|
import static io.opentelemetry.auto.test.utils.ConfigUtils.withConfigOverride
|
||||||
import static io.opentelemetry.auto.test.utils.TraceUtils.runUnderTrace
|
import static io.opentelemetry.auto.test.utils.TraceUtils.runUnderTrace
|
||||||
import static io.opentelemetry.trace.Span.Kind.CLIENT
|
import static io.opentelemetry.trace.Span.Kind.CLIENT
|
||||||
|
@ -104,7 +103,7 @@ class HttpUrlConnectionTest extends HttpClientTest<HttpUrlConnectionDecorator> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
span(1) {
|
span(1) {
|
||||||
operationName OPERATION_NAME
|
operationName expectedOperationName("GET")
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
childOf span(0)
|
childOf span(0)
|
||||||
errored false
|
errored false
|
||||||
|
@ -113,15 +112,15 @@ class HttpUrlConnectionTest extends HttpClientTest<HttpUrlConnectionDecorator> {
|
||||||
"$MoreTags.RESOURCE_NAME" "GET $url.path"
|
"$MoreTags.RESOURCE_NAME" "GET $url.path"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
||||||
"$Tags.COMPONENT" "http-url-connection"
|
"$Tags.COMPONENT" "http-url-connection"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_PORT" server.address.port
|
"$MoreTags.NET_PEER_PORT" server.address.port
|
||||||
"$Tags.HTTP_URL" "$url"
|
"$Tags.HTTP_URL" "$url"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
"$Tags.HTTP_STATUS" STATUS
|
"$Tags.HTTP_STATUS" STATUS
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
span(2) {
|
span(2) {
|
||||||
operationName OPERATION_NAME
|
operationName expectedOperationName("GET")
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
childOf span(0)
|
childOf span(0)
|
||||||
errored false
|
errored false
|
||||||
|
@ -130,8 +129,8 @@ class HttpUrlConnectionTest extends HttpClientTest<HttpUrlConnectionDecorator> {
|
||||||
"$MoreTags.RESOURCE_NAME" "GET $url.path"
|
"$MoreTags.RESOURCE_NAME" "GET $url.path"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
||||||
"$Tags.COMPONENT" "http-url-connection"
|
"$Tags.COMPONENT" "http-url-connection"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_PORT" server.address.port
|
"$MoreTags.NET_PEER_PORT" server.address.port
|
||||||
"$Tags.HTTP_URL" "$url"
|
"$Tags.HTTP_URL" "$url"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
"$Tags.HTTP_STATUS" STATUS
|
"$Tags.HTTP_STATUS" STATUS
|
||||||
|
@ -186,7 +185,7 @@ class HttpUrlConnectionTest extends HttpClientTest<HttpUrlConnectionDecorator> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
span(1) {
|
span(1) {
|
||||||
operationName OPERATION_NAME
|
operationName expectedOperationName("GET")
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
childOf span(0)
|
childOf span(0)
|
||||||
errored false
|
errored false
|
||||||
|
@ -195,15 +194,15 @@ class HttpUrlConnectionTest extends HttpClientTest<HttpUrlConnectionDecorator> {
|
||||||
"$MoreTags.RESOURCE_NAME" "GET $url.path"
|
"$MoreTags.RESOURCE_NAME" "GET $url.path"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
||||||
"$Tags.COMPONENT" "http-url-connection"
|
"$Tags.COMPONENT" "http-url-connection"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_PORT" server.address.port
|
"$MoreTags.NET_PEER_PORT" server.address.port
|
||||||
"$Tags.HTTP_URL" "$url"
|
"$Tags.HTTP_URL" "$url"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
"$Tags.HTTP_STATUS" STATUS
|
"$Tags.HTTP_STATUS" STATUS
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
span(2) {
|
span(2) {
|
||||||
operationName OPERATION_NAME
|
operationName expectedOperationName("GET")
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
childOf span(0)
|
childOf span(0)
|
||||||
errored false
|
errored false
|
||||||
|
@ -212,8 +211,8 @@ class HttpUrlConnectionTest extends HttpClientTest<HttpUrlConnectionDecorator> {
|
||||||
"$MoreTags.RESOURCE_NAME" "GET $url.path"
|
"$MoreTags.RESOURCE_NAME" "GET $url.path"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
||||||
"$Tags.COMPONENT" "http-url-connection"
|
"$Tags.COMPONENT" "http-url-connection"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_PORT" server.address.port
|
"$MoreTags.NET_PEER_PORT" server.address.port
|
||||||
"$Tags.HTTP_URL" "$url"
|
"$Tags.HTTP_URL" "$url"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
"$Tags.HTTP_STATUS" STATUS
|
"$Tags.HTTP_STATUS" STATUS
|
||||||
|
@ -253,7 +252,7 @@ class HttpUrlConnectionTest extends HttpClientTest<HttpUrlConnectionDecorator> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
span(1) {
|
span(1) {
|
||||||
operationName OPERATION_NAME
|
operationName expectedOperationName("GET")
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
childOf span(0)
|
childOf span(0)
|
||||||
errored false
|
errored false
|
||||||
|
@ -262,8 +261,8 @@ class HttpUrlConnectionTest extends HttpClientTest<HttpUrlConnectionDecorator> {
|
||||||
"$MoreTags.RESOURCE_NAME" "GET $url.path"
|
"$MoreTags.RESOURCE_NAME" "GET $url.path"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
||||||
"$Tags.COMPONENT" "http-url-connection"
|
"$Tags.COMPONENT" "http-url-connection"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_PORT" server.address.port
|
"$MoreTags.NET_PEER_PORT" server.address.port
|
||||||
"$Tags.HTTP_URL" "$url"
|
"$Tags.HTTP_URL" "$url"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
"$Tags.HTTP_STATUS" STATUS
|
"$Tags.HTTP_STATUS" STATUS
|
||||||
|
@ -319,7 +318,7 @@ class HttpUrlConnectionTest extends HttpClientTest<HttpUrlConnectionDecorator> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
span(1) {
|
span(1) {
|
||||||
operationName OPERATION_NAME
|
operationName expectedOperationName("POST")
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
childOf span(0)
|
childOf span(0)
|
||||||
errored false
|
errored false
|
||||||
|
@ -328,8 +327,8 @@ class HttpUrlConnectionTest extends HttpClientTest<HttpUrlConnectionDecorator> {
|
||||||
"$MoreTags.RESOURCE_NAME" "POST $url.path"
|
"$MoreTags.RESOURCE_NAME" "POST $url.path"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
||||||
"$Tags.COMPONENT" "http-url-connection"
|
"$Tags.COMPONENT" "http-url-connection"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_PORT" server.address.port
|
"$MoreTags.NET_PEER_PORT" server.address.port
|
||||||
"$Tags.HTTP_URL" "$url"
|
"$Tags.HTTP_URL" "$url"
|
||||||
"$Tags.HTTP_METHOD" "POST"
|
"$Tags.HTTP_METHOD" "POST"
|
||||||
"$Tags.HTTP_STATUS" STATUS
|
"$Tags.HTTP_STATUS" STATUS
|
||||||
|
|
|
@ -15,13 +15,13 @@
|
||||||
*/
|
*/
|
||||||
import io.opentelemetry.auto.bootstrap.AgentClassLoader
|
import io.opentelemetry.auto.bootstrap.AgentClassLoader
|
||||||
import io.opentelemetry.auto.config.Config
|
import io.opentelemetry.auto.config.Config
|
||||||
|
import io.opentelemetry.auto.decorator.HttpClientDecorator
|
||||||
import io.opentelemetry.auto.instrumentation.api.MoreTags
|
import io.opentelemetry.auto.instrumentation.api.MoreTags
|
||||||
import io.opentelemetry.auto.instrumentation.api.SpanTypes
|
import io.opentelemetry.auto.instrumentation.api.SpanTypes
|
||||||
import io.opentelemetry.auto.instrumentation.api.Tags
|
import io.opentelemetry.auto.instrumentation.api.Tags
|
||||||
import io.opentelemetry.auto.instrumentation.http_url_connection.UrlInstrumentation
|
import io.opentelemetry.auto.instrumentation.http_url_connection.UrlInstrumentation
|
||||||
import io.opentelemetry.auto.test.AgentTestRunner
|
import io.opentelemetry.auto.test.AgentTestRunner
|
||||||
|
|
||||||
import static io.opentelemetry.auto.instrumentation.http_url_connection.HttpUrlConnectionInstrumentation.HttpUrlState.OPERATION_NAME
|
|
||||||
import static io.opentelemetry.auto.test.utils.ConfigUtils.withConfigOverride
|
import static io.opentelemetry.auto.test.utils.ConfigUtils.withConfigOverride
|
||||||
import static io.opentelemetry.auto.test.utils.PortUtils.UNUSABLE_PORT
|
import static io.opentelemetry.auto.test.utils.PortUtils.UNUSABLE_PORT
|
||||||
import static io.opentelemetry.auto.test.utils.TraceUtils.runUnderTrace
|
import static io.opentelemetry.auto.test.utils.TraceUtils.runUnderTrace
|
||||||
|
@ -56,7 +56,7 @@ class UrlConnectionTest extends AgentTestRunner {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
span(1) {
|
span(1) {
|
||||||
operationName OPERATION_NAME
|
operationName expectedOperationName("GET")
|
||||||
spanKind CLIENT
|
spanKind CLIENT
|
||||||
childOf span(0)
|
childOf span(0)
|
||||||
errored true
|
errored true
|
||||||
|
@ -64,8 +64,8 @@ class UrlConnectionTest extends AgentTestRunner {
|
||||||
"$MoreTags.SERVICE_NAME" renameService ? "localhost" : null
|
"$MoreTags.SERVICE_NAME" renameService ? "localhost" : null
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
||||||
"$Tags.COMPONENT" "http-url-connection"
|
"$Tags.COMPONENT" "http-url-connection"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_PORT" UNUSABLE_PORT
|
"$MoreTags.NET_PEER_PORT" UNUSABLE_PORT
|
||||||
"$Tags.HTTP_URL" "$url/"
|
"$Tags.HTTP_URL" "$url/"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
errorTags ConnectException, String
|
errorTags ConnectException, String
|
||||||
|
@ -115,7 +115,7 @@ class UrlConnectionTest extends AgentTestRunner {
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_CLIENT
|
||||||
"$Tags.COMPONENT" UrlInstrumentation.COMPONENT
|
"$Tags.COMPONENT" UrlInstrumentation.COMPONENT
|
||||||
"$Tags.PEER_PORT" 80
|
"$MoreTags.NET_PEER_PORT" 80
|
||||||
// FIXME: These tags really make no sense for non-http connections, why do we set them?
|
// FIXME: These tags really make no sense for non-http connections, why do we set them?
|
||||||
"$Tags.HTTP_URL" "$url"
|
"$Tags.HTTP_URL" "$url"
|
||||||
errorTags IllegalArgumentException, String
|
errorTags IllegalArgumentException, String
|
||||||
|
@ -155,4 +155,8 @@ class UrlConnectionTest extends AgentTestRunner {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String expectedOperationName(String method) {
|
||||||
|
return method != null ? "HTTP $method" : HttpClientDecorator.DEFAULT_SPAN_NAME
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,7 +89,11 @@ public final class JaxRsClientV1Instrumentation extends Instrumenter.Default {
|
||||||
// WARNING: this might be a chain...so we only have to trace the first in the chain.
|
// WARNING: this might be a chain...so we only have to trace the first in the chain.
|
||||||
final boolean isRootClientHandler = null == request.getProperties().get(SPAN_ATTRIBUTE);
|
final boolean isRootClientHandler = null == request.getProperties().get(SPAN_ATTRIBUTE);
|
||||||
if (isRootClientHandler) {
|
if (isRootClientHandler) {
|
||||||
final Span span = TRACER.spanBuilder("jax-rs.client.call").setSpanKind(CLIENT).startSpan();
|
final Span span =
|
||||||
|
TRACER
|
||||||
|
.spanBuilder(DECORATE.spanNameForRequest(request))
|
||||||
|
.setSpanKind(CLIENT)
|
||||||
|
.startSpan();
|
||||||
DECORATE.afterStart(span);
|
DECORATE.afterStart(span);
|
||||||
DECORATE.onRequest(span, request);
|
DECORATE.onRequest(span, request);
|
||||||
request.getProperties().put(SPAN_ATTRIBUTE, span);
|
request.getProperties().put(SPAN_ATTRIBUTE, span);
|
||||||
|
|
|
@ -48,11 +48,6 @@ class JaxRsClientV1Test extends HttpClientTest<JaxRsClientV1Decorator> {
|
||||||
return JaxRsClientV1Decorator.DECORATE
|
return JaxRsClientV1Decorator.DECORATE
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
String expectedOperationName() {
|
|
||||||
return "jax-rs.client.call"
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean testCircularRedirects() {
|
boolean testCircularRedirects() {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,11 @@ public class ClientTracingFilter implements ClientRequestFilter, ClientResponseF
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void filter(final ClientRequestContext requestContext) {
|
public void filter(final ClientRequestContext requestContext) {
|
||||||
final Span span = TRACER.spanBuilder("jax-rs.client.call").setSpanKind(CLIENT).startSpan();
|
final Span span =
|
||||||
|
TRACER
|
||||||
|
.spanBuilder(DECORATE.spanNameForRequest(requestContext))
|
||||||
|
.setSpanKind(CLIENT)
|
||||||
|
.startSpan();
|
||||||
try (final Scope scope = TRACER.withSpan(span)) {
|
try (final Scope scope = TRACER.withSpan(span)) {
|
||||||
DECORATE.afterStart(span);
|
DECORATE.afterStart(span);
|
||||||
DECORATE.onRequest(span, requestContext);
|
DECORATE.onRequest(span, requestContext);
|
||||||
|
|
|
@ -64,11 +64,6 @@ abstract class JaxRsClientAsyncTest extends HttpClientTest<JaxRsClientDecorator>
|
||||||
return JaxRsClientDecorator.DECORATE
|
return JaxRsClientDecorator.DECORATE
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
String expectedOperationName() {
|
|
||||||
return "jax-rs.client.call"
|
|
||||||
}
|
|
||||||
|
|
||||||
abstract ClientBuilder builder()
|
abstract ClientBuilder builder()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,11 +48,6 @@ abstract class JaxRsClientTest extends HttpClientTest<JaxRsClientDecorator> {
|
||||||
return JaxRsClientDecorator.DECORATE
|
return JaxRsClientDecorator.DECORATE
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
String expectedOperationName() {
|
|
||||||
return "jax-rs.client.call"
|
|
||||||
}
|
|
||||||
|
|
||||||
abstract ClientBuilder builder()
|
abstract ClientBuilder builder()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -75,6 +75,7 @@ public class JaxRsAnnotationsDecorator extends BaseDecorator {
|
||||||
span.setAttribute(Tags.COMPONENT, "jax-rs");
|
span.setAttribute(Tags.COMPONENT, "jax-rs");
|
||||||
|
|
||||||
if (!resourceName.isEmpty()) {
|
if (!resourceName.isEmpty()) {
|
||||||
|
span.updateName(resourceName);
|
||||||
span.setAttribute(MoreTags.RESOURCE_NAME, resourceName);
|
span.setAttribute(MoreTags.RESOURCE_NAME, resourceName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,7 +67,7 @@ class JaxRsAnnotationsInstrumentationTest extends AgentTestRunner {
|
||||||
assertTraces(1) {
|
assertTraces(1) {
|
||||||
trace(0, 2) {
|
trace(0, 2) {
|
||||||
span(0) {
|
span(0) {
|
||||||
operationName "test"
|
operationName name
|
||||||
parent()
|
parent()
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.RESOURCE_NAME" name
|
"$MoreTags.RESOURCE_NAME" name
|
||||||
|
|
|
@ -46,7 +46,7 @@ class JerseyTest extends AgentTestRunner {
|
||||||
assertTraces(1) {
|
assertTraces(1) {
|
||||||
trace(0, 2) {
|
trace(0, 2) {
|
||||||
span(0) {
|
span(0) {
|
||||||
operationName "test.span"
|
operationName expectedResourceName
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.RESOURCE_NAME" expectedResourceName
|
"$MoreTags.RESOURCE_NAME" expectedResourceName
|
||||||
"$Tags.COMPONENT" "jax-rs"
|
"$Tags.COMPONENT" "jax-rs"
|
||||||
|
|
|
@ -86,6 +86,7 @@ public class JaxRsAnnotationsDecorator extends BaseDecorator {
|
||||||
span.setAttribute(Tags.COMPONENT, "jax-rs");
|
span.setAttribute(Tags.COMPONENT, "jax-rs");
|
||||||
|
|
||||||
if (!resourceName.isEmpty()) {
|
if (!resourceName.isEmpty()) {
|
||||||
|
span.updateName(resourceName);
|
||||||
span.setAttribute(MoreTags.RESOURCE_NAME, resourceName);
|
span.setAttribute(MoreTags.RESOURCE_NAME, resourceName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,7 +67,7 @@ class JaxRsAnnotationsInstrumentationTest extends AgentTestRunner {
|
||||||
assertTraces(1) {
|
assertTraces(1) {
|
||||||
trace(0, 2) {
|
trace(0, 2) {
|
||||||
span(0) {
|
span(0) {
|
||||||
operationName "test"
|
operationName name
|
||||||
parent()
|
parent()
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.RESOURCE_NAME" name
|
"$MoreTags.RESOURCE_NAME" name
|
||||||
|
|
|
@ -74,7 +74,7 @@ abstract class JaxRsFilterTest extends AgentTestRunner {
|
||||||
assertTraces(1) {
|
assertTraces(1) {
|
||||||
trace(0, 2) {
|
trace(0, 2) {
|
||||||
span(0) {
|
span(0) {
|
||||||
operationName "test.span"
|
operationName parentResourceName != null ? parentResourceName : "test.span"
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.RESOURCE_NAME" parentResourceName
|
"$MoreTags.RESOURCE_NAME" parentResourceName
|
||||||
"$Tags.COMPONENT" "jax-rs"
|
"$Tags.COMPONENT" "jax-rs"
|
||||||
|
|
|
@ -42,7 +42,8 @@ public class JettyHandlerAdvice {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Span.Builder spanBuilder = TRACER.spanBuilder("jetty.request").setSpanKind(SERVER);
|
final String resourceName = req.getMethod() + " " + source.getClass().getName();
|
||||||
|
final Span.Builder spanBuilder = TRACER.spanBuilder(resourceName).setSpanKind(SERVER);
|
||||||
try {
|
try {
|
||||||
final SpanContext extractedContext = TRACER.getHttpTextFormat().extract(req, GETTER);
|
final SpanContext extractedContext = TRACER.getHttpTextFormat().extract(req, GETTER);
|
||||||
spanBuilder.setParent(extractedContext);
|
spanBuilder.setParent(extractedContext);
|
||||||
|
@ -56,7 +57,6 @@ public class JettyHandlerAdvice {
|
||||||
DECORATE.afterStart(span);
|
DECORATE.afterStart(span);
|
||||||
DECORATE.onConnection(span, req);
|
DECORATE.onConnection(span, req);
|
||||||
DECORATE.onRequest(span, req);
|
DECORATE.onRequest(span, req);
|
||||||
final String resourceName = req.getMethod() + " " + source.getClass().getName();
|
|
||||||
span.setAttribute(MoreTags.RESOURCE_NAME, resourceName);
|
span.setAttribute(MoreTags.RESOURCE_NAME, resourceName);
|
||||||
|
|
||||||
req.setAttribute(SPAN_ATTRIBUTE, span);
|
req.setAttribute(SPAN_ATTRIBUTE, span);
|
||||||
|
|
|
@ -77,11 +77,6 @@ class JettyHandlerTest extends HttpServerTest<Server, JettyDecorator> {
|
||||||
return JettyDecorator.DECORATE
|
return JettyDecorator.DECORATE
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
String expectedOperationName() {
|
|
||||||
return "jetty.request"
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
boolean testExceptionBody() {
|
boolean testExceptionBody() {
|
||||||
false
|
false
|
||||||
|
@ -134,7 +129,7 @@ class JettyHandlerTest extends HttpServerTest<Server, JettyDecorator> {
|
||||||
void serverSpan(TraceAssert trace, int index, String traceID = null, String parentID = null, String method = "GET", ServerEndpoint endpoint = SUCCESS) {
|
void serverSpan(TraceAssert trace, int index, String traceID = null, String parentID = null, String method = "GET", ServerEndpoint endpoint = SUCCESS) {
|
||||||
def handlerName = handler().class.name
|
def handlerName = handler().class.name
|
||||||
trace.span(index) {
|
trace.span(index) {
|
||||||
operationName expectedOperationName()
|
operationName "$method $handlerName"
|
||||||
spanKind SERVER
|
spanKind SERVER
|
||||||
errored endpoint.errored
|
errored endpoint.errored
|
||||||
if (parentID != null) {
|
if (parentID != null) {
|
||||||
|
@ -147,9 +142,9 @@ class JettyHandlerTest extends HttpServerTest<Server, JettyDecorator> {
|
||||||
"$MoreTags.RESOURCE_NAME" "$method $handlerName"
|
"$MoreTags.RESOURCE_NAME" "$method $handlerName"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
||||||
"$Tags.COMPONENT" serverDecorator.getComponentName()
|
"$Tags.COMPONENT" serverDecorator.getComponentName()
|
||||||
"$Tags.PEER_HOST_IPV4" { it == null || it == "127.0.0.1" } // Optional
|
"$MoreTags.NET_PEER_IP" { it == null || it == "127.0.0.1" } // Optional
|
||||||
"$Tags.PEER_PORT" Long
|
"$MoreTags.NET_PEER_PORT" Long
|
||||||
"$Tags.HTTP_URL" "${endpoint.resolve(address)}"
|
"$Tags.HTTP_URL" { it == "${endpoint.resolve(address)}" || it == "${endpoint.resolveWithoutFragment(address)}" }
|
||||||
"$Tags.HTTP_METHOD" method
|
"$Tags.HTTP_METHOD" method
|
||||||
"$Tags.HTTP_STATUS" endpoint.status
|
"$Tags.HTTP_STATUS" endpoint.status
|
||||||
"span.origin.type" handlerName
|
"span.origin.type" handlerName
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
import com.google.common.io.Files
|
import com.google.common.io.Files
|
||||||
|
import io.opentelemetry.auto.decorator.HttpServerDecorator
|
||||||
import io.opentelemetry.auto.instrumentation.api.MoreTags
|
import io.opentelemetry.auto.instrumentation.api.MoreTags
|
||||||
import io.opentelemetry.auto.instrumentation.api.SpanTypes
|
import io.opentelemetry.auto.instrumentation.api.SpanTypes
|
||||||
import io.opentelemetry.auto.instrumentation.api.Tags
|
import io.opentelemetry.auto.instrumentation.api.Tags
|
||||||
|
@ -106,14 +107,14 @@ class JSPInstrumentationBasicTests extends AgentTestRunner {
|
||||||
trace(0, 3) {
|
trace(0, 3) {
|
||||||
span(0) {
|
span(0) {
|
||||||
parent()
|
parent()
|
||||||
operationName "servlet.request"
|
operationName expectedOperationName("GET")
|
||||||
spanKind SERVER
|
spanKind SERVER
|
||||||
errored false
|
errored false
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
||||||
"$Tags.COMPONENT" "java-web-servlet"
|
"$Tags.COMPONENT" "java-web-servlet"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" Long
|
"$MoreTags.NET_PEER_PORT" Long
|
||||||
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/$jspFileName"
|
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/$jspFileName"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
"$Tags.HTTP_STATUS" 200
|
"$Tags.HTTP_STATUS" 200
|
||||||
|
@ -174,15 +175,15 @@ class JSPInstrumentationBasicTests extends AgentTestRunner {
|
||||||
trace(0, 3) {
|
trace(0, 3) {
|
||||||
span(0) {
|
span(0) {
|
||||||
parent()
|
parent()
|
||||||
operationName "servlet.request"
|
operationName expectedOperationName("GET")
|
||||||
spanKind SERVER
|
spanKind SERVER
|
||||||
errored false
|
errored false
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
||||||
"$Tags.COMPONENT" "java-web-servlet"
|
"$Tags.COMPONENT" "java-web-servlet"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" Long
|
"$MoreTags.NET_PEER_PORT" Long
|
||||||
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/getQuery.jsp"
|
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/getQuery.jsp?$queryString"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
"$Tags.HTTP_STATUS" 200
|
"$Tags.HTTP_STATUS" 200
|
||||||
"span.origin.type" "org.apache.catalina.core.ApplicationFilterChain"
|
"span.origin.type" "org.apache.catalina.core.ApplicationFilterChain"
|
||||||
|
@ -239,14 +240,14 @@ class JSPInstrumentationBasicTests extends AgentTestRunner {
|
||||||
trace(0, 3) {
|
trace(0, 3) {
|
||||||
span(0) {
|
span(0) {
|
||||||
parent()
|
parent()
|
||||||
operationName "servlet.request"
|
operationName expectedOperationName("POST")
|
||||||
spanKind SERVER
|
spanKind SERVER
|
||||||
errored false
|
errored false
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
||||||
"$Tags.COMPONENT" "java-web-servlet"
|
"$Tags.COMPONENT" "java-web-servlet"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" Long
|
"$MoreTags.NET_PEER_PORT" Long
|
||||||
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/post.jsp"
|
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/post.jsp"
|
||||||
"$Tags.HTTP_METHOD" "POST"
|
"$Tags.HTTP_METHOD" "POST"
|
||||||
"$Tags.HTTP_STATUS" 200
|
"$Tags.HTTP_STATUS" 200
|
||||||
|
@ -301,14 +302,14 @@ class JSPInstrumentationBasicTests extends AgentTestRunner {
|
||||||
trace(0, 3) {
|
trace(0, 3) {
|
||||||
span(0) {
|
span(0) {
|
||||||
parent()
|
parent()
|
||||||
operationName "servlet.request"
|
operationName expectedOperationName("GET")
|
||||||
spanKind SERVER
|
spanKind SERVER
|
||||||
errored true
|
errored true
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
||||||
"$Tags.COMPONENT" "java-web-servlet"
|
"$Tags.COMPONENT" "java-web-servlet"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" Long
|
"$MoreTags.NET_PEER_PORT" Long
|
||||||
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/$jspFileName"
|
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/$jspFileName"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
"$Tags.HTTP_STATUS" 500
|
"$Tags.HTTP_STATUS" 500
|
||||||
|
@ -382,14 +383,14 @@ class JSPInstrumentationBasicTests extends AgentTestRunner {
|
||||||
trace(0, 3) {
|
trace(0, 3) {
|
||||||
span(0) {
|
span(0) {
|
||||||
parent()
|
parent()
|
||||||
operationName "servlet.request"
|
operationName expectedOperationName("GET")
|
||||||
spanKind SERVER
|
spanKind SERVER
|
||||||
errored false
|
errored false
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
||||||
"$Tags.COMPONENT" "java-web-servlet"
|
"$Tags.COMPONENT" "java-web-servlet"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" Long
|
"$MoreTags.NET_PEER_PORT" Long
|
||||||
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/includes/includeHtml.jsp"
|
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/includes/includeHtml.jsp"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
"$Tags.HTTP_STATUS" 200
|
"$Tags.HTTP_STATUS" 200
|
||||||
|
@ -443,14 +444,14 @@ class JSPInstrumentationBasicTests extends AgentTestRunner {
|
||||||
trace(0, 7) {
|
trace(0, 7) {
|
||||||
span(0) {
|
span(0) {
|
||||||
parent()
|
parent()
|
||||||
operationName "servlet.request"
|
operationName expectedOperationName("GET")
|
||||||
spanKind SERVER
|
spanKind SERVER
|
||||||
errored false
|
errored false
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
||||||
"$Tags.COMPONENT" "java-web-servlet"
|
"$Tags.COMPONENT" "java-web-servlet"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" Long
|
"$MoreTags.NET_PEER_PORT" Long
|
||||||
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/includes/includeMulti.jsp"
|
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/includes/includeMulti.jsp"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
"$Tags.HTTP_STATUS" 200
|
"$Tags.HTTP_STATUS" 200
|
||||||
|
@ -552,14 +553,14 @@ class JSPInstrumentationBasicTests extends AgentTestRunner {
|
||||||
trace(0, 2) {
|
trace(0, 2) {
|
||||||
span(0) {
|
span(0) {
|
||||||
parent()
|
parent()
|
||||||
operationName "servlet.request"
|
operationName expectedOperationName("GET")
|
||||||
spanKind SERVER
|
spanKind SERVER
|
||||||
errored true
|
errored true
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
||||||
"$Tags.COMPONENT" "java-web-servlet"
|
"$Tags.COMPONENT" "java-web-servlet"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" Long
|
"$MoreTags.NET_PEER_PORT" Long
|
||||||
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/$jspFileName"
|
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/$jspFileName"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
"$Tags.HTTP_STATUS" 500
|
"$Tags.HTTP_STATUS" 500
|
||||||
|
@ -610,7 +611,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner {
|
||||||
span(0) {
|
span(0) {
|
||||||
parent()
|
parent()
|
||||||
// serviceName jspWebappContext
|
// serviceName jspWebappContext
|
||||||
operationName "servlet.request"
|
operationName expectedOperationName("GET")
|
||||||
spanKind SERVER
|
spanKind SERVER
|
||||||
// FIXME: this is not a great resource name for serving static content.
|
// FIXME: this is not a great resource name for serving static content.
|
||||||
// resourceName "GET /$jspWebappContext/$staticFile"
|
// resourceName "GET /$jspWebappContext/$staticFile"
|
||||||
|
@ -618,8 +619,8 @@ class JSPInstrumentationBasicTests extends AgentTestRunner {
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
||||||
"$Tags.COMPONENT" "java-web-servlet"
|
"$Tags.COMPONENT" "java-web-servlet"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" Long
|
"$MoreTags.NET_PEER_PORT" Long
|
||||||
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/$staticFile"
|
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/$staticFile"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
"$Tags.HTTP_STATUS" 200
|
"$Tags.HTTP_STATUS" 200
|
||||||
|
@ -637,4 +638,8 @@ class JSPInstrumentationBasicTests extends AgentTestRunner {
|
||||||
where:
|
where:
|
||||||
staticFile = "common/hello.html"
|
staticFile = "common/hello.html"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String expectedOperationName(String method) {
|
||||||
|
return method != null ? "HTTP $method" : HttpServerDecorator.DEFAULT_SPAN_NAME
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
import com.google.common.io.Files
|
import com.google.common.io.Files
|
||||||
|
import io.opentelemetry.auto.decorator.HttpServerDecorator
|
||||||
import io.opentelemetry.auto.instrumentation.api.MoreTags
|
import io.opentelemetry.auto.instrumentation.api.MoreTags
|
||||||
import io.opentelemetry.auto.instrumentation.api.SpanTypes
|
import io.opentelemetry.auto.instrumentation.api.SpanTypes
|
||||||
import io.opentelemetry.auto.instrumentation.api.Tags
|
import io.opentelemetry.auto.instrumentation.api.Tags
|
||||||
|
@ -105,14 +106,14 @@ class JSPInstrumentationForwardTests extends AgentTestRunner {
|
||||||
trace(0, 5) {
|
trace(0, 5) {
|
||||||
span(0) {
|
span(0) {
|
||||||
parent()
|
parent()
|
||||||
operationName "servlet.request"
|
operationName expectedOperationName("GET")
|
||||||
spanKind SERVER
|
spanKind SERVER
|
||||||
errored false
|
errored false
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
||||||
"$Tags.COMPONENT" "java-web-servlet"
|
"$Tags.COMPONENT" "java-web-servlet"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" Long
|
"$MoreTags.NET_PEER_PORT" Long
|
||||||
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/$forwardFromFileName"
|
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/$forwardFromFileName"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
"$Tags.HTTP_STATUS" 200
|
"$Tags.HTTP_STATUS" 200
|
||||||
|
@ -196,14 +197,14 @@ class JSPInstrumentationForwardTests extends AgentTestRunner {
|
||||||
trace(0, 3) {
|
trace(0, 3) {
|
||||||
span(0) {
|
span(0) {
|
||||||
parent()
|
parent()
|
||||||
operationName "servlet.request"
|
operationName expectedOperationName("GET")
|
||||||
spanKind SERVER
|
spanKind SERVER
|
||||||
errored false
|
errored false
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
||||||
"$Tags.COMPONENT" "java-web-servlet"
|
"$Tags.COMPONENT" "java-web-servlet"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" Long
|
"$MoreTags.NET_PEER_PORT" Long
|
||||||
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/forwards/forwardToHtml.jsp"
|
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/forwards/forwardToHtml.jsp"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
"$Tags.HTTP_STATUS" 200
|
"$Tags.HTTP_STATUS" 200
|
||||||
|
@ -257,14 +258,14 @@ class JSPInstrumentationForwardTests extends AgentTestRunner {
|
||||||
trace(0, 9) {
|
trace(0, 9) {
|
||||||
span(0) {
|
span(0) {
|
||||||
parent()
|
parent()
|
||||||
operationName "servlet.request"
|
operationName expectedOperationName("GET")
|
||||||
spanKind SERVER
|
spanKind SERVER
|
||||||
errored false
|
errored false
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
||||||
"$Tags.COMPONENT" "java-web-servlet"
|
"$Tags.COMPONENT" "java-web-servlet"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" Long
|
"$MoreTags.NET_PEER_PORT" Long
|
||||||
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/forwards/forwardToIncludeMulti.jsp"
|
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/forwards/forwardToIncludeMulti.jsp"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
"$Tags.HTTP_STATUS" 200
|
"$Tags.HTTP_STATUS" 200
|
||||||
|
@ -393,14 +394,14 @@ class JSPInstrumentationForwardTests extends AgentTestRunner {
|
||||||
trace(0, 7) {
|
trace(0, 7) {
|
||||||
span(0) {
|
span(0) {
|
||||||
parent()
|
parent()
|
||||||
operationName "servlet.request"
|
operationName expectedOperationName("GET")
|
||||||
spanKind SERVER
|
spanKind SERVER
|
||||||
errored false
|
errored false
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
||||||
"$Tags.COMPONENT" "java-web-servlet"
|
"$Tags.COMPONENT" "java-web-servlet"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" Long
|
"$MoreTags.NET_PEER_PORT" Long
|
||||||
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/forwards/forwardToJspForward.jsp"
|
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/forwards/forwardToJspForward.jsp"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
"$Tags.HTTP_STATUS" 200
|
"$Tags.HTTP_STATUS" 200
|
||||||
|
@ -504,14 +505,14 @@ class JSPInstrumentationForwardTests extends AgentTestRunner {
|
||||||
trace(0, 4) {
|
trace(0, 4) {
|
||||||
span(0) {
|
span(0) {
|
||||||
parent()
|
parent()
|
||||||
operationName "servlet.request"
|
operationName expectedOperationName("GET")
|
||||||
spanKind SERVER
|
spanKind SERVER
|
||||||
errored true
|
errored true
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
||||||
"$Tags.COMPONENT" "java-web-servlet"
|
"$Tags.COMPONENT" "java-web-servlet"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" Long
|
"$MoreTags.NET_PEER_PORT" Long
|
||||||
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/forwards/forwardToCompileError.jsp"
|
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/forwards/forwardToCompileError.jsp"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
"$Tags.HTTP_STATUS" 500
|
"$Tags.HTTP_STATUS" 500
|
||||||
|
@ -580,14 +581,14 @@ class JSPInstrumentationForwardTests extends AgentTestRunner {
|
||||||
trace(0, 3) {
|
trace(0, 3) {
|
||||||
span(0) {
|
span(0) {
|
||||||
parent()
|
parent()
|
||||||
operationName "servlet.request"
|
operationName expectedOperationName("GET")
|
||||||
spanKind SERVER
|
spanKind SERVER
|
||||||
errored false
|
errored false
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
||||||
"$Tags.COMPONENT" "java-web-servlet"
|
"$Tags.COMPONENT" "java-web-servlet"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" Long
|
"$MoreTags.NET_PEER_PORT" Long
|
||||||
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/forwards/forwardToNonExistent.jsp"
|
"$Tags.HTTP_URL" "http://localhost:$port/$jspWebappContext/forwards/forwardToNonExistent.jsp"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
"$Tags.HTTP_STATUS" 404
|
"$Tags.HTTP_STATUS" 404
|
||||||
|
@ -627,4 +628,8 @@ class JSPInstrumentationForwardTests extends AgentTestRunner {
|
||||||
cleanup:
|
cleanup:
|
||||||
res.close()
|
res.close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String expectedOperationName(String method) {
|
||||||
|
return method != null ? "HTTP $method" : HttpServerDecorator.DEFAULT_SPAN_NAME
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,8 +64,8 @@ public class LettuceClientDecorator extends DatabaseClientDecorator<RedisURI> {
|
||||||
@Override
|
@Override
|
||||||
public Span onConnection(final Span span, final RedisURI connection) {
|
public Span onConnection(final Span span, final RedisURI connection) {
|
||||||
if (connection != null) {
|
if (connection != null) {
|
||||||
span.setAttribute(Tags.PEER_HOSTNAME, connection.getHost());
|
span.setAttribute(MoreTags.NET_PEER_NAME, connection.getHost());
|
||||||
span.setAttribute(Tags.PEER_PORT, connection.getPort());
|
span.setAttribute(MoreTags.NET_PEER_PORT, connection.getPort());
|
||||||
|
|
||||||
span.setAttribute("db.redis.dbIndex", connection.getDatabase());
|
span.setAttribute("db.redis.dbIndex", connection.getDatabase());
|
||||||
span.setAttribute(
|
span.setAttribute(
|
||||||
|
|
|
@ -140,8 +140,8 @@ class LettuceAsyncClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "CONNECT:" + dbAddr
|
"$MoreTags.RESOURCE_NAME" "CONNECT:" + dbAddr
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.REDIS
|
"$MoreTags.SPAN_TYPE" SpanTypes.REDIS
|
||||||
"$Tags.COMPONENT" "redis-client"
|
"$Tags.COMPONENT" "redis-client"
|
||||||
"$Tags.PEER_HOSTNAME" HOST
|
"$MoreTags.NET_PEER_NAME" HOST
|
||||||
"$Tags.PEER_PORT" port
|
"$MoreTags.NET_PEER_PORT" port
|
||||||
"$Tags.DB_TYPE" "redis"
|
"$Tags.DB_TYPE" "redis"
|
||||||
"db.redis.dbIndex" 0
|
"db.redis.dbIndex" 0
|
||||||
}
|
}
|
||||||
|
@ -177,8 +177,8 @@ class LettuceAsyncClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "CONNECT:" + dbAddrNonExistent
|
"$MoreTags.RESOURCE_NAME" "CONNECT:" + dbAddrNonExistent
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.REDIS
|
"$MoreTags.SPAN_TYPE" SpanTypes.REDIS
|
||||||
"$Tags.COMPONENT" "redis-client"
|
"$Tags.COMPONENT" "redis-client"
|
||||||
"$Tags.PEER_HOSTNAME" HOST
|
"$MoreTags.NET_PEER_NAME" HOST
|
||||||
"$Tags.PEER_PORT" incorrectPort
|
"$MoreTags.NET_PEER_PORT" incorrectPort
|
||||||
"$Tags.DB_TYPE" "redis"
|
"$Tags.DB_TYPE" "redis"
|
||||||
"db.redis.dbIndex" 0
|
"db.redis.dbIndex" 0
|
||||||
errorTags CompletionException, String
|
errorTags CompletionException, String
|
||||||
|
|
|
@ -120,8 +120,8 @@ class LettuceSyncClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "CONNECT:" + dbAddr
|
"$MoreTags.RESOURCE_NAME" "CONNECT:" + dbAddr
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.REDIS
|
"$MoreTags.SPAN_TYPE" SpanTypes.REDIS
|
||||||
"$Tags.COMPONENT" "redis-client"
|
"$Tags.COMPONENT" "redis-client"
|
||||||
"$Tags.PEER_HOSTNAME" HOST
|
"$MoreTags.NET_PEER_NAME" HOST
|
||||||
"$Tags.PEER_PORT" port
|
"$MoreTags.NET_PEER_PORT" port
|
||||||
"$Tags.DB_TYPE" "redis"
|
"$Tags.DB_TYPE" "redis"
|
||||||
"db.redis.dbIndex" 0
|
"db.redis.dbIndex" 0
|
||||||
}
|
}
|
||||||
|
@ -154,8 +154,8 @@ class LettuceSyncClientTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "CONNECT:" + dbAddrNonExistent
|
"$MoreTags.RESOURCE_NAME" "CONNECT:" + dbAddrNonExistent
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.REDIS
|
"$MoreTags.SPAN_TYPE" SpanTypes.REDIS
|
||||||
"$Tags.COMPONENT" "redis-client"
|
"$Tags.COMPONENT" "redis-client"
|
||||||
"$Tags.PEER_HOSTNAME" HOST
|
"$MoreTags.NET_PEER_NAME" HOST
|
||||||
"$Tags.PEER_PORT" incorrectPort
|
"$MoreTags.NET_PEER_PORT" incorrectPort
|
||||||
"$Tags.DB_TYPE" "redis"
|
"$Tags.DB_TYPE" "redis"
|
||||||
"db.redis.dbIndex" 0
|
"db.redis.dbIndex" 0
|
||||||
errorTags CompletionException, String
|
errorTags CompletionException, String
|
||||||
|
|
|
@ -264,9 +264,9 @@ class MongoClientTest extends MongoBaseTest {
|
||||||
"$MoreTags.RESOURCE_NAME" { it.replace(" ", "") == statement }
|
"$MoreTags.RESOURCE_NAME" { it.replace(" ", "") == statement }
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.MONGO
|
"$MoreTags.SPAN_TYPE" SpanTypes.MONGO
|
||||||
"$Tags.COMPONENT" "java-mongo"
|
"$Tags.COMPONENT" "java-mongo"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" port
|
"$MoreTags.NET_PEER_PORT" port
|
||||||
"$Tags.DB_STATEMENT" {
|
"$Tags.DB_STATEMENT" {
|
||||||
it.replace(" ", "") == statement
|
it.replace(" ", "") == statement
|
||||||
}
|
}
|
||||||
|
|
|
@ -267,9 +267,9 @@ class MongoClientTest extends MongoBaseTest {
|
||||||
"$MoreTags.RESOURCE_NAME" { it.replace(" ", "") == statement }
|
"$MoreTags.RESOURCE_NAME" { it.replace(" ", "") == statement }
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.MONGO
|
"$MoreTags.SPAN_TYPE" SpanTypes.MONGO
|
||||||
"$Tags.COMPONENT" "java-mongo"
|
"$Tags.COMPONENT" "java-mongo"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" port
|
"$MoreTags.NET_PEER_PORT" port
|
||||||
"$Tags.DB_STATEMENT" {
|
"$Tags.DB_STATEMENT" {
|
||||||
it.replace(" ", "") == statement
|
it.replace(" ", "") == statement
|
||||||
}
|
}
|
||||||
|
|
|
@ -302,9 +302,9 @@ class MongoAsyncClientTest extends MongoBaseTest {
|
||||||
"$MoreTags.RESOURCE_NAME" statementEval
|
"$MoreTags.RESOURCE_NAME" statementEval
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.MONGO
|
"$MoreTags.SPAN_TYPE" SpanTypes.MONGO
|
||||||
"$Tags.COMPONENT" "java-mongo"
|
"$Tags.COMPONENT" "java-mongo"
|
||||||
"$Tags.PEER_HOSTNAME" "localhost"
|
"$MoreTags.NET_PEER_NAME" "localhost"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" port
|
"$MoreTags.NET_PEER_PORT" port
|
||||||
"$Tags.DB_STATEMENT" statementEval
|
"$Tags.DB_STATEMENT" statementEval
|
||||||
"$Tags.DB_TYPE" "mongo"
|
"$Tags.DB_TYPE" "mongo"
|
||||||
"$Tags.DB_INSTANCE" instance
|
"$Tags.DB_INSTANCE" instance
|
||||||
|
|
|
@ -56,7 +56,8 @@ public class HttpClientRequestTracingHandler extends ChannelOutboundHandlerAdapt
|
||||||
ctx.channel().attr(AttributeKeys.CLIENT_PARENT_ATTRIBUTE_KEY).set(null);
|
ctx.channel().attr(AttributeKeys.CLIENT_PARENT_ATTRIBUTE_KEY).set(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
final Span span = TRACER.spanBuilder("netty.client.request").setSpanKind(CLIENT).startSpan();
|
final Span span =
|
||||||
|
TRACER.spanBuilder(DECORATE.spanNameForRequest(request)).setSpanKind(CLIENT).startSpan();
|
||||||
try (final Scope scope = TRACER.withSpan(span)) {
|
try (final Scope scope = TRACER.withSpan(span)) {
|
||||||
DECORATE.afterStart(span);
|
DECORATE.afterStart(span);
|
||||||
DECORATE.onRequest(span, request);
|
DECORATE.onRequest(span, request);
|
||||||
|
|
|
@ -47,7 +47,8 @@ public class HttpServerRequestTracingHandler extends ChannelInboundHandlerAdapte
|
||||||
|
|
||||||
final HttpRequest request = (HttpRequest) msg;
|
final HttpRequest request = (HttpRequest) msg;
|
||||||
|
|
||||||
final Span.Builder spanBuilder = TRACER.spanBuilder("netty.request").setSpanKind(SERVER);
|
final Span.Builder spanBuilder =
|
||||||
|
TRACER.spanBuilder(DECORATE.spanNameForRequest(request)).setSpanKind(SERVER);
|
||||||
try {
|
try {
|
||||||
final SpanContext extractedContext =
|
final SpanContext extractedContext =
|
||||||
TRACER.getHttpTextFormat().extract(request.headers(), GETTER);
|
TRACER.getHttpTextFormat().extract(request.headers(), GETTER);
|
||||||
|
|
|
@ -59,11 +59,6 @@ class Netty40ClientTest extends HttpClientTest<NettyHttpClientDecorator> {
|
||||||
return NettyHttpClientDecorator.DECORATE
|
return NettyHttpClientDecorator.DECORATE
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
String expectedOperationName() {
|
|
||||||
return "netty.client.request"
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
boolean testRedirects() {
|
boolean testRedirects() {
|
||||||
false
|
false
|
||||||
|
|
|
@ -123,9 +123,4 @@ class Netty40ServerTest extends HttpServerTest<EventLoopGroup, NettyHttpServerDe
|
||||||
NettyHttpServerDecorator decorator() {
|
NettyHttpServerDecorator decorator() {
|
||||||
NettyHttpServerDecorator.DECORATE
|
NettyHttpServerDecorator.DECORATE
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
String expectedOperationName() {
|
|
||||||
"netty.request"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,7 +56,8 @@ public class HttpClientRequestTracingHandler extends ChannelOutboundHandlerAdapt
|
||||||
ctx.channel().attr(AttributeKeys.CLIENT_PARENT_ATTRIBUTE_KEY).set(null);
|
ctx.channel().attr(AttributeKeys.CLIENT_PARENT_ATTRIBUTE_KEY).set(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
final Span span = TRACER.spanBuilder("netty.client.request").setSpanKind(CLIENT).startSpan();
|
final Span span =
|
||||||
|
TRACER.spanBuilder(DECORATE.spanNameForRequest(request)).setSpanKind(CLIENT).startSpan();
|
||||||
try (final Scope scope = TRACER.withSpan(span)) {
|
try (final Scope scope = TRACER.withSpan(span)) {
|
||||||
DECORATE.afterStart(span);
|
DECORATE.afterStart(span);
|
||||||
DECORATE.onRequest(span, request);
|
DECORATE.onRequest(span, request);
|
||||||
|
|
|
@ -47,7 +47,8 @@ public class HttpServerRequestTracingHandler extends ChannelInboundHandlerAdapte
|
||||||
|
|
||||||
final HttpRequest request = (HttpRequest) msg;
|
final HttpRequest request = (HttpRequest) msg;
|
||||||
|
|
||||||
final Span.Builder spanBuilder = TRACER.spanBuilder("netty.request").setSpanKind(SERVER);
|
final Span.Builder spanBuilder =
|
||||||
|
TRACER.spanBuilder(DECORATE.spanNameForRequest(request)).setSpanKind(SERVER);
|
||||||
try {
|
try {
|
||||||
final SpanContext extractedContext =
|
final SpanContext extractedContext =
|
||||||
TRACER.getHttpTextFormat().extract(request.headers(), GETTER);
|
TRACER.getHttpTextFormat().extract(request.headers(), GETTER);
|
||||||
|
|
|
@ -65,11 +65,6 @@ class Netty41ClientTest extends HttpClientTest<NettyHttpClientDecorator> {
|
||||||
return NettyHttpClientDecorator.DECORATE
|
return NettyHttpClientDecorator.DECORATE
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
String expectedOperationName() {
|
|
||||||
return "netty.client.request"
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
boolean testRedirects() {
|
boolean testRedirects() {
|
||||||
false
|
false
|
||||||
|
|
|
@ -122,9 +122,4 @@ class Netty41ServerTest extends HttpServerTest<EventLoopGroup, NettyHttpServerDe
|
||||||
NettyHttpServerDecorator decorator() {
|
NettyHttpServerDecorator decorator() {
|
||||||
NettyHttpServerDecorator.DECORATE
|
NettyHttpServerDecorator.DECORATE
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
String expectedOperationName() {
|
|
||||||
"netty.request"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,7 +36,11 @@ public class TracingInterceptor implements Interceptor {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Response intercept(final Chain chain) throws IOException {
|
public Response intercept(final Chain chain) throws IOException {
|
||||||
final Span span = TRACER.spanBuilder("okhttp.request").setSpanKind(CLIENT).startSpan();
|
final Span span =
|
||||||
|
TRACER
|
||||||
|
.spanBuilder(DECORATE.spanNameForRequest(chain.request()))
|
||||||
|
.setSpanKind(CLIENT)
|
||||||
|
.startSpan();
|
||||||
|
|
||||||
try (final Scope scope = TRACER.withSpan(span)) {
|
try (final Scope scope = TRACER.withSpan(span)) {
|
||||||
DECORATE.afterStart(span);
|
DECORATE.afterStart(span);
|
||||||
|
|
|
@ -38,18 +38,11 @@ class OkHttp3Test extends HttpClientTest<OkHttpClientDecorator> {
|
||||||
return response.code()
|
return response.code()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
OkHttpClientDecorator decorator() {
|
OkHttpClientDecorator decorator() {
|
||||||
return OkHttpClientDecorator.DECORATE
|
return OkHttpClientDecorator.DECORATE
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
String expectedOperationName() {
|
|
||||||
return "okhttp.request"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
boolean testRedirects() {
|
boolean testRedirects() {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,7 +89,8 @@ public class PlayWSClientInstrumentation extends Instrumenter.Default {
|
||||||
@Advice.Argument(0) final Request request,
|
@Advice.Argument(0) final Request request,
|
||||||
@Advice.Argument(value = 1, readOnly = false) AsyncHandler asyncHandler) {
|
@Advice.Argument(value = 1, readOnly = false) AsyncHandler asyncHandler) {
|
||||||
|
|
||||||
final Span span = TRACER.spanBuilder("play-ws.request").setSpanKind(CLIENT).startSpan();
|
final Span span =
|
||||||
|
TRACER.spanBuilder(DECORATE.spanNameForRequest(request)).setSpanKind(CLIENT).startSpan();
|
||||||
|
|
||||||
DECORATE.afterStart(span);
|
DECORATE.afterStart(span);
|
||||||
DECORATE.onRequest(span, request);
|
DECORATE.onRequest(span, request);
|
||||||
|
|
|
@ -78,10 +78,6 @@ class PlayWSClientTest extends HttpClientTest<PlayWSClientDecorator> {
|
||||||
return PlayWSClientDecorator.DECORATE
|
return PlayWSClientDecorator.DECORATE
|
||||||
}
|
}
|
||||||
|
|
||||||
String expectedOperationName() {
|
|
||||||
return "play-ws.request"
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
boolean testCircularRedirects() {
|
boolean testCircularRedirects() {
|
||||||
return false
|
return false
|
||||||
|
|
|
@ -92,7 +92,8 @@ public class PlayWSClientInstrumentation extends Instrumenter.Default {
|
||||||
@Advice.Argument(0) final Request request,
|
@Advice.Argument(0) final Request request,
|
||||||
@Advice.Argument(value = 1, readOnly = false) AsyncHandler asyncHandler) {
|
@Advice.Argument(value = 1, readOnly = false) AsyncHandler asyncHandler) {
|
||||||
|
|
||||||
final Span span = TRACER.spanBuilder("play-ws.request").setSpanKind(CLIENT).startSpan();
|
final Span span =
|
||||||
|
TRACER.spanBuilder(DECORATE.spanNameForRequest(request)).setSpanKind(CLIENT).startSpan();
|
||||||
|
|
||||||
DECORATE.afterStart(span);
|
DECORATE.afterStart(span);
|
||||||
DECORATE.onRequest(span, request);
|
DECORATE.onRequest(span, request);
|
||||||
|
|
|
@ -78,10 +78,6 @@ class PlayWSClientTest extends HttpClientTest<PlayWSClientDecorator> {
|
||||||
return PlayWSClientDecorator.DECORATE
|
return PlayWSClientDecorator.DECORATE
|
||||||
}
|
}
|
||||||
|
|
||||||
String expectedOperationName() {
|
|
||||||
return "play-ws.request"
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
boolean testCircularRedirects() {
|
boolean testCircularRedirects() {
|
||||||
return false
|
return false
|
||||||
|
|
|
@ -89,7 +89,8 @@ public class PlayWSClientInstrumentation extends Instrumenter.Default {
|
||||||
@Advice.Argument(0) final Request request,
|
@Advice.Argument(0) final Request request,
|
||||||
@Advice.Argument(value = 1, readOnly = false) AsyncHandler asyncHandler) {
|
@Advice.Argument(value = 1, readOnly = false) AsyncHandler asyncHandler) {
|
||||||
|
|
||||||
final Span span = TRACER.spanBuilder("play-ws.request").setSpanKind(CLIENT).startSpan();
|
final Span span =
|
||||||
|
TRACER.spanBuilder(DECORATE.spanNameForRequest(request)).setSpanKind(CLIENT).startSpan();
|
||||||
|
|
||||||
DECORATE.afterStart(span);
|
DECORATE.afterStart(span);
|
||||||
DECORATE.onRequest(span, request);
|
DECORATE.onRequest(span, request);
|
||||||
|
|
|
@ -78,10 +78,6 @@ class PlayWSClientTest extends HttpClientTest<PlayWSClientDecorator> {
|
||||||
return PlayWSClientDecorator.DECORATE
|
return PlayWSClientDecorator.DECORATE
|
||||||
}
|
}
|
||||||
|
|
||||||
String expectedOperationName() {
|
|
||||||
return "play-ws.request"
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
boolean testCircularRedirects() {
|
boolean testCircularRedirects() {
|
||||||
return false
|
return false
|
||||||
|
|
|
@ -77,6 +77,7 @@ public class PlayHttpServerDecorator extends HttpServerDecorator<Request, Reques
|
||||||
final Option pathOption = request.tags().get("ROUTE_PATTERN");
|
final Option pathOption = request.tags().get("ROUTE_PATTERN");
|
||||||
if (!pathOption.isEmpty()) {
|
if (!pathOption.isEmpty()) {
|
||||||
final String path = (String) pathOption.get();
|
final String path = (String) pathOption.get();
|
||||||
|
span.updateName(request.method() + " " + path);
|
||||||
span.setAttribute(MoreTags.RESOURCE_NAME, request.method() + " " + path);
|
span.setAttribute(MoreTags.RESOURCE_NAME, request.method() + " " + path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,11 +51,6 @@ class PlayWSClientTest extends HttpClientTest<NettyHttpClientDecorator> {
|
||||||
return NettyHttpClientDecorator.DECORATE
|
return NettyHttpClientDecorator.DECORATE
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
String expectedOperationName() {
|
|
||||||
return "netty.client.request"
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
boolean testRedirects() {
|
boolean testRedirects() {
|
||||||
false
|
false
|
||||||
|
|
|
@ -80,11 +80,6 @@ class PlayServerTest extends HttpServerTest<Server, NettyHttpServerDecorator> {
|
||||||
return NettyHttpServerDecorator.DECORATE
|
return NettyHttpServerDecorator.DECORATE
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
String expectedOperationName() {
|
|
||||||
return "netty.request"
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
boolean hasHandlerSpan() {
|
boolean hasHandlerSpan() {
|
||||||
true
|
true
|
||||||
|
@ -105,7 +100,7 @@ class PlayServerTest extends HttpServerTest<Server, NettyHttpServerDecorator> {
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
||||||
"$Tags.COMPONENT" PlayHttpServerDecorator.DECORATE.getComponentName()
|
"$Tags.COMPONENT" PlayHttpServerDecorator.DECORATE.getComponentName()
|
||||||
"$Tags.PEER_HOST_IPV4" { it == null || it == "127.0.0.1" } // Optional
|
"$MoreTags.NET_PEER_IP" { it == null || it == "127.0.0.1" } // Optional
|
||||||
"$Tags.HTTP_URL" String
|
"$Tags.HTTP_URL" String
|
||||||
"$Tags.HTTP_METHOD" String
|
"$Tags.HTTP_METHOD" String
|
||||||
"$Tags.HTTP_STATUS" Long
|
"$Tags.HTTP_STATUS" Long
|
||||||
|
|
|
@ -80,6 +80,7 @@ public class PlayHttpServerDecorator extends HttpServerDecorator<Request, Reques
|
||||||
request.attrs().get(Router.Attrs.HANDLER_DEF.underlying());
|
request.attrs().get(Router.Attrs.HANDLER_DEF.underlying());
|
||||||
if (!defOption.isEmpty()) {
|
if (!defOption.isEmpty()) {
|
||||||
final String path = defOption.get().path();
|
final String path = defOption.get().path();
|
||||||
|
span.updateName(request.method() + " " + path);
|
||||||
span.setAttribute(MoreTags.RESOURCE_NAME, request.method() + " " + path);
|
span.setAttribute(MoreTags.RESOURCE_NAME, request.method() + " " + path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,11 +85,6 @@ class PlayServerTest extends HttpServerTest<Server, AkkaHttpServerDecorator> {
|
||||||
return AkkaHttpServerDecorator.DECORATE
|
return AkkaHttpServerDecorator.DECORATE
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
String expectedOperationName() {
|
|
||||||
return "akka-http.request"
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
boolean hasHandlerSpan() {
|
boolean hasHandlerSpan() {
|
||||||
true
|
true
|
||||||
|
@ -110,7 +105,7 @@ class PlayServerTest extends HttpServerTest<Server, AkkaHttpServerDecorator> {
|
||||||
tags {
|
tags {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
||||||
"$Tags.COMPONENT" PlayHttpServerDecorator.DECORATE.getComponentName()
|
"$Tags.COMPONENT" PlayHttpServerDecorator.DECORATE.getComponentName()
|
||||||
"$Tags.PEER_HOST_IPV4" { it == null || it == "127.0.0.1" } // Optional
|
"$MoreTags.NET_PEER_IP" { it == null || it == "127.0.0.1" } // Optional
|
||||||
"$Tags.HTTP_URL" String
|
"$Tags.HTTP_URL" String
|
||||||
"$Tags.HTTP_METHOD" String
|
"$Tags.HTTP_METHOD" String
|
||||||
"$Tags.HTTP_STATUS" Long
|
"$Tags.HTTP_STATUS" Long
|
||||||
|
@ -126,7 +121,7 @@ class PlayServerTest extends HttpServerTest<Server, AkkaHttpServerDecorator> {
|
||||||
|
|
||||||
void serverSpan(TraceAssert trace, int index, String traceID = null, String parentID = null, String method = "GET", ServerEndpoint endpoint = SUCCESS) {
|
void serverSpan(TraceAssert trace, int index, String traceID = null, String parentID = null, String method = "GET", ServerEndpoint endpoint = SUCCESS) {
|
||||||
trace.span(index) {
|
trace.span(index) {
|
||||||
operationName expectedOperationName()
|
operationName expectedOperationName(method)
|
||||||
spanKind SERVER
|
spanKind SERVER
|
||||||
errored endpoint.errored
|
errored endpoint.errored
|
||||||
if (parentID != null) {
|
if (parentID != null) {
|
||||||
|
@ -139,7 +134,7 @@ class PlayServerTest extends HttpServerTest<Server, AkkaHttpServerDecorator> {
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
||||||
"$Tags.COMPONENT" serverDecorator.getComponentName()
|
"$Tags.COMPONENT" serverDecorator.getComponentName()
|
||||||
"$Tags.HTTP_STATUS" endpoint.status
|
"$Tags.HTTP_STATUS" endpoint.status
|
||||||
"$Tags.HTTP_URL" "${endpoint.resolve(address)}"
|
"$Tags.HTTP_URL" { it == "${endpoint.resolve(address)}" || it == "${endpoint.resolveWithoutFragment(address)}" }
|
||||||
"$Tags.HTTP_METHOD" method
|
"$Tags.HTTP_METHOD" method
|
||||||
if (endpoint.errored) {
|
if (endpoint.errored) {
|
||||||
"error.msg" { it == null || it == EXCEPTION.body }
|
"error.msg" { it == null || it == EXCEPTION.body }
|
||||||
|
|
|
@ -47,7 +47,6 @@ import com.rabbitmq.client.MessageProperties;
|
||||||
import io.opentelemetry.auto.bootstrap.CallDepthThreadLocalMap;
|
import io.opentelemetry.auto.bootstrap.CallDepthThreadLocalMap;
|
||||||
import io.opentelemetry.auto.instrumentation.api.MoreTags;
|
import io.opentelemetry.auto.instrumentation.api.MoreTags;
|
||||||
import io.opentelemetry.auto.instrumentation.api.SpanWithScope;
|
import io.opentelemetry.auto.instrumentation.api.SpanWithScope;
|
||||||
import io.opentelemetry.auto.instrumentation.api.Tags;
|
|
||||||
import io.opentelemetry.auto.tooling.Instrumenter;
|
import io.opentelemetry.auto.tooling.Instrumenter;
|
||||||
import io.opentelemetry.context.Scope;
|
import io.opentelemetry.context.Scope;
|
||||||
import io.opentelemetry.trace.Span;
|
import io.opentelemetry.trace.Span;
|
||||||
|
@ -149,7 +148,7 @@ public class RabbitChannelInstrumentation extends Instrumenter.Default {
|
||||||
}
|
}
|
||||||
final Span span = spanBuilder.startSpan();
|
final Span span = spanBuilder.startSpan();
|
||||||
span.setAttribute(MoreTags.RESOURCE_NAME, method);
|
span.setAttribute(MoreTags.RESOURCE_NAME, method);
|
||||||
span.setAttribute(Tags.PEER_PORT, connection.getPort());
|
span.setAttribute(MoreTags.NET_PEER_PORT, connection.getPort());
|
||||||
DECORATE.afterStart(span);
|
DECORATE.afterStart(span);
|
||||||
DECORATE.onPeerConnection(span, connection.getAddress());
|
DECORATE.onPeerConnection(span, connection.getAddress());
|
||||||
CURRENT_RABBIT_SPAN.set(span);
|
CURRENT_RABBIT_SPAN.set(span);
|
||||||
|
@ -270,7 +269,7 @@ public class RabbitChannelInstrumentation extends Instrumenter.Default {
|
||||||
if (response != null) {
|
if (response != null) {
|
||||||
span.setAttribute("message.size", response.getBody().length);
|
span.setAttribute("message.size", response.getBody().length);
|
||||||
}
|
}
|
||||||
span.setAttribute(Tags.PEER_PORT, connection.getPort());
|
span.setAttribute(MoreTags.NET_PEER_PORT, connection.getPort());
|
||||||
try (final Scope scope = TRACER.withSpan(span)) {
|
try (final Scope scope = TRACER.withSpan(span)) {
|
||||||
CONSUMER_DECORATE.afterStart(span);
|
CONSUMER_DECORATE.afterStart(span);
|
||||||
CONSUMER_DECORATE.onGet(span, queue);
|
CONSUMER_DECORATE.onGet(span, queue);
|
||||||
|
|
|
@ -368,9 +368,9 @@ class RabbitMQTest extends AgentTestRunner {
|
||||||
"$MoreTags.SERVICE_NAME" "rabbitmq"
|
"$MoreTags.SERVICE_NAME" "rabbitmq"
|
||||||
"$MoreTags.RESOURCE_NAME" resource
|
"$MoreTags.RESOURCE_NAME" resource
|
||||||
"$Tags.COMPONENT" "rabbitmq-amqp"
|
"$Tags.COMPONENT" "rabbitmq-amqp"
|
||||||
"$Tags.PEER_HOSTNAME" { it == null || it instanceof String }
|
"$MoreTags.NET_PEER_NAME" { it == null || it instanceof String }
|
||||||
"$Tags.PEER_HOST_IPV4" { "127.0.0.1" }
|
"$MoreTags.NET_PEER_IP" { "127.0.0.1" }
|
||||||
"$Tags.PEER_PORT" { it == null || it instanceof Long }
|
"$MoreTags.NET_PEER_PORT" { it == null || it instanceof Long }
|
||||||
|
|
||||||
switch (tag("amqp.command")?.stringValue) {
|
switch (tag("amqp.command")?.stringValue) {
|
||||||
case "basic.publish":
|
case "basic.publish":
|
||||||
|
|
|
@ -89,6 +89,7 @@ public class RatpackServerDecorator extends HttpServerDecorator<Request, Request
|
||||||
|
|
||||||
final String resourceName = ctx.getRequest().getMethod().getName() + " " + description;
|
final String resourceName = ctx.getRequest().getMethod().getName() + " " + description;
|
||||||
span.setAttribute(MoreTags.RESOURCE_NAME, resourceName);
|
span.setAttribute(MoreTags.RESOURCE_NAME, resourceName);
|
||||||
|
span.updateName(resourceName);
|
||||||
|
|
||||||
return span;
|
return span;
|
||||||
}
|
}
|
||||||
|
|
|
@ -82,7 +82,7 @@ class RatpackOtherTest extends AgentTestRunner {
|
||||||
assertTraces(1) {
|
assertTraces(1) {
|
||||||
trace(0, 2) {
|
trace(0, 2) {
|
||||||
span(0) {
|
span(0) {
|
||||||
operationName "netty.request"
|
operationName "GET /$route"
|
||||||
spanKind SERVER
|
spanKind SERVER
|
||||||
parent()
|
parent()
|
||||||
errored false
|
errored false
|
||||||
|
@ -90,15 +90,15 @@ class RatpackOtherTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "GET /$route"
|
"$MoreTags.RESOURCE_NAME" "GET /$route"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
||||||
"$Tags.COMPONENT" "netty"
|
"$Tags.COMPONENT" "netty"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" Long
|
"$MoreTags.NET_PEER_PORT" Long
|
||||||
"$Tags.HTTP_URL" "${app.address.resolve(path)}"
|
"$Tags.HTTP_URL" "${app.address.resolve(path)}"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
"$Tags.HTTP_STATUS" 200
|
"$Tags.HTTP_STATUS" 200
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
span(1) {
|
span(1) {
|
||||||
operationName "ratpack.handler"
|
operationName "GET /$route"
|
||||||
spanKind INTERNAL
|
spanKind INTERNAL
|
||||||
childOf(span(0))
|
childOf(span(0))
|
||||||
errored false
|
errored false
|
||||||
|
@ -106,8 +106,8 @@ class RatpackOtherTest extends AgentTestRunner {
|
||||||
"$MoreTags.RESOURCE_NAME" "GET /$route"
|
"$MoreTags.RESOURCE_NAME" "GET /$route"
|
||||||
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
"$MoreTags.SPAN_TYPE" SpanTypes.HTTP_SERVER
|
||||||
"$Tags.COMPONENT" "ratpack"
|
"$Tags.COMPONENT" "ratpack"
|
||||||
"$Tags.PEER_HOST_IPV4" "127.0.0.1"
|
"$MoreTags.NET_PEER_IP" "127.0.0.1"
|
||||||
"$Tags.PEER_PORT" Long
|
"$MoreTags.NET_PEER_PORT" Long
|
||||||
"$Tags.HTTP_URL" "${app.address.resolve(path)}"
|
"$Tags.HTTP_URL" "${app.address.resolve(path)}"
|
||||||
"$Tags.HTTP_METHOD" "GET"
|
"$Tags.HTTP_METHOD" "GET"
|
||||||
"$Tags.HTTP_STATUS" 200
|
"$Tags.HTTP_STATUS" 200
|
||||||
|
|
|
@ -56,11 +56,6 @@ class RatpackHttpClientTest extends HttpClientTest<NettyHttpClientDecorator> {
|
||||||
return NettyHttpClientDecorator.DECORATE
|
return NettyHttpClientDecorator.DECORATE
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
String expectedOperationName() {
|
|
||||||
return "netty.client.request"
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
boolean testRedirects() {
|
boolean testRedirects() {
|
||||||
false
|
false
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue