Skip to content

Commit 34289de

Browse files
committed
adding client servicename as request header
1 parent efd9b45 commit 34289de

File tree

15 files changed

+234
-0
lines changed

15 files changed

+234
-0
lines changed

instrumentation/apache-httpclient-4.0/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ val versions: Map<String, String> by extra
4141

4242
dependencies {
4343
api(project(":instrumentation:java-streams"))
44+
api(project(":otel-extensions"))
45+
4446
library("org.apache.httpcomponents:httpclient:4.0")
4547
testImplementation(project(":testing-common"))
4648
}

instrumentation/apache-httpclient-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/apachehttpclient/v4_0/ApacheHttpClientUtils.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import org.hypertrace.agent.core.instrumentation.buffer.BoundedByteArrayOutputStream;
4141
import org.hypertrace.agent.core.instrumentation.utils.ContentTypeCharsetUtils;
4242
import org.hypertrace.agent.core.instrumentation.utils.ContentTypeUtils;
43+
import org.hypertrace.agent.otel.extensions.config.ServiceNameHeaderUtils;
4344
import org.slf4j.Logger;
4445
import org.slf4j.LoggerFactory;
4546

@@ -58,6 +59,12 @@ public static void addRequestHeaders(Span span, HeaderIterator headerIterator) {
5859
addHeaders(span, headerIterator, HypertraceSemanticAttributes::httpRequestHeader);
5960
}
6061

62+
public static void addClientServiceNameHeader(HttpMessage request) {
63+
request.addHeader(
64+
ServiceNameHeaderUtils.getClientServiceKey(),
65+
ServiceNameHeaderUtils.getClientServiceName());
66+
}
67+
6168
private static void addHeaders(
6269
Span span,
6370
HeaderIterator headerIterator,
@@ -73,6 +80,9 @@ public static void traceRequest(Span span, HttpMessage request) {
7380
ApacheHttpClientUtils.addRequestHeaders(span, request.headerIterator());
7481
}
7582

83+
// Add service name header to outgoing requests
84+
ApacheHttpClientUtils.addClientServiceNameHeader(request);
85+
7686
if (instrumentationConfig.httpBody().request()
7787
&& request instanceof HttpEntityEnclosingRequest) {
7888
HttpEntityEnclosingRequest entityRequest = (HttpEntityEnclosingRequest) request;

instrumentation/grpc-1.6/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ val grpcVersion = "1.6.0"
5959

6060
dependencies {
6161
api("io.opentelemetry.instrumentation:opentelemetry-grpc-1.6:${versions["opentelemetry_java_agent"]}")
62+
api(project(":otel-extensions"))
6263
implementation(project(":instrumentation:grpc-common"))
6364
implementation(project(":shaded-protobuf-java-util", "shadow"))
6465

instrumentation/grpc-1.6/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/grpc/v1_6/client/GrpcClientInterceptor.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,16 @@
3030
import io.opentelemetry.javaagent.instrumentation.hypertrace.grpc.v1_6.GrpcSpanDecorator;
3131
import org.hypertrace.agent.core.config.InstrumentationConfig;
3232
import org.hypertrace.agent.core.instrumentation.HypertraceSemanticAttributes;
33+
import org.hypertrace.agent.otel.extensions.config.ServiceNameHeaderUtils;
3334
import org.slf4j.Logger;
3435
import org.slf4j.LoggerFactory;
3536

3637
public class GrpcClientInterceptor implements ClientInterceptor {
3738

39+
private static final Metadata.Key<String> SERVICE_NAME_METADATA_KEY =
40+
Metadata.Key.of(
41+
ServiceNameHeaderUtils.getClientServiceKey(), Metadata.ASCII_STRING_MARSHALLER);
42+
3843
private static final Logger log = LoggerFactory.getLogger(GrpcClientInterceptor.class);
3944

4045
@Override
@@ -69,6 +74,9 @@ static final class TracingClientCall<ReqT, RespT>
6974

7075
@Override
7176
public void start(Listener<RespT> responseListener, Metadata headers) {
77+
// Add service name header to outgoing requests
78+
headers.put(SERVICE_NAME_METADATA_KEY, ServiceNameHeaderUtils.getClientServiceName());
79+
7280
super.start(new TracingClientCallListener<>(responseListener, span), headers);
7381

7482
try {

instrumentation/netty/netty-4.0/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ val versions: Map<String, String> by extra
4646
val nettyVersion = "4.0.38.Final"
4747

4848
dependencies {
49+
api(project(":otel-extensions"))
4950
implementation("io.opentelemetry.javaagent.instrumentation:opentelemetry-javaagent-netty-4.0:${versions["opentelemetry_java_agent"]}")
5051
implementation("io.opentelemetry.javaagent.instrumentation:opentelemetry-javaagent-netty-4-common:${versions["opentelemetry_java_agent"]}")
5152
implementation("io.opentelemetry.instrumentation:opentelemetry-netty-4-common:${versions["opentelemetry_java_agent"]}")

instrumentation/netty/netty-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/client/HttpClientRequestTracingHandler.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import org.hypertrace.agent.core.instrumentation.utils.ContentLengthUtils;
4141
import org.hypertrace.agent.core.instrumentation.utils.ContentTypeCharsetUtils;
4242
import org.hypertrace.agent.core.instrumentation.utils.ContentTypeUtils;
43+
import org.hypertrace.agent.otel.extensions.config.ServiceNameHeaderUtils;
4344

4445
public class HttpClientRequestTracingHandler extends ChannelOutboundHandlerAdapter {
4546

@@ -68,6 +69,13 @@ public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise prm) {
6869
headersMap.forEach(span::setAttribute);
6970
}
7071

72+
// Add service name header to outgoing requests
73+
httpRequest
74+
.headers()
75+
.add(
76+
ServiceNameHeaderUtils.getClientServiceKey(),
77+
ServiceNameHeaderUtils.getClientServiceName());
78+
7179
CharSequence contentType = DataCaptureUtils.getContentType(httpRequest);
7280
if (instrumentationConfig.httpBody().request()
7381
&& contentType != null

instrumentation/netty/netty-4.1/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ afterEvaluate{
4444
val versions: Map<String, String> by extra
4545

4646
dependencies {
47+
api(project(":otel-extensions"))
4748
implementation("io.opentelemetry.javaagent.instrumentation:opentelemetry-javaagent-netty-4-common:${versions["opentelemetry_java_agent"]}")
4849
implementation("io.opentelemetry.instrumentation:opentelemetry-netty-common:${versions["opentelemetry_java_agent"]}")
4950
implementation("io.opentelemetry.instrumentation:opentelemetry-netty-4-common:${versions["opentelemetry_java_agent"]}")

instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/client/HttpClientRequestTracingHandler.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import org.hypertrace.agent.core.instrumentation.utils.ContentLengthUtils;
4141
import org.hypertrace.agent.core.instrumentation.utils.ContentTypeCharsetUtils;
4242
import org.hypertrace.agent.core.instrumentation.utils.ContentTypeUtils;
43+
import org.hypertrace.agent.otel.extensions.config.ServiceNameHeaderUtils;
4344

4445
public class HttpClientRequestTracingHandler extends ChannelOutboundHandlerAdapter {
4546

@@ -67,6 +68,13 @@ public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise prm) {
6768
headersMap.forEach(span::setAttribute);
6869
}
6970

71+
// Add service name header to outgoing requests
72+
httpRequest
73+
.headers()
74+
.add(
75+
ServiceNameHeaderUtils.getClientServiceKey(),
76+
ServiceNameHeaderUtils.getClientServiceName());
77+
7078
CharSequence contentType = DataCaptureUtils.getContentType(httpRequest);
7179
if (instrumentationConfig.httpBody().request()
7280
&& contentType != null

instrumentation/okhttp/okhttp-3.0/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ afterEvaluate{
2626
val versions: Map<String, String> by extra
2727

2828
dependencies {
29+
api(project(":otel-extensions"))
2930
compileOnly("com.squareup.okhttp3:okhttp:3.0.0")
3031
testImplementation(project(":testing-common"))
3132
}

instrumentation/okhttp/okhttp-3.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/okhttp/v3_0/OkHttpTracingInterceptor.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.hypertrace.agent.core.config.InstrumentationConfig;
3737
import org.hypertrace.agent.core.instrumentation.HypertraceSemanticAttributes;
3838
import org.hypertrace.agent.core.instrumentation.utils.ContentTypeUtils;
39+
import org.hypertrace.agent.otel.extensions.config.ServiceNameHeaderUtils;
3940
import org.slf4j.Logger;
4041
import org.slf4j.LoggerFactory;
4142

@@ -57,6 +58,10 @@ public Response intercept(Chain chain) throws IOException {
5758
if (instrumentationConfig.httpHeaders().request()) {
5859
captureHeaders(span, request.headers(), HypertraceSemanticAttributes::httpRequestHeader);
5960
}
61+
62+
// Add service name header to outgoing requests
63+
request = addClientSeriveNameHeader(request);
64+
6065
captureRequestBody(span, request.body());
6166

6267
Response response = chain.proceed(request);
@@ -149,4 +154,16 @@ private static void captureHeaders(
149154
}
150155
}
151156
}
157+
158+
private static Request addClientSeriveNameHeader(Request request) {
159+
// Add service name header to outgoing requests
160+
request =
161+
request
162+
.newBuilder()
163+
.addHeader(
164+
ServiceNameHeaderUtils.getClientServiceKey(),
165+
ServiceNameHeaderUtils.getClientServiceName())
166+
.build();
167+
return request;
168+
}
152169
}

0 commit comments

Comments
 (0)