Skip to content

Commit

Permalink
Instrument EMR's relocated AWS SDK (#8157)
Browse files Browse the repository at this point in the history
* Support configuring a different namespace in AWS-SDK module
  • Loading branch information
mcculls authored Jan 6, 2025
1 parent 350b2cd commit 6ef294d
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,15 @@
*/
public class AWSHttpClientInstrumentation
implements Instrumenter.ForSingleType, Instrumenter.HasMethodAdvice {
private final String namespace;

public AWSHttpClientInstrumentation(String namespace) {
this.namespace = namespace;
}

@Override
public String instrumentedType() {
return "com.amazonaws.http.AmazonHttpClient";
return namespace + ".http.AmazonHttpClient";
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,16 @@

/** Groups the instrumentations for AWS SDK 1.11.0+. */
@AutoService(InstrumenterModule.class)
public final class AwsSdkModule extends InstrumenterModule.Tracing {
public class AwsSdkModule extends InstrumenterModule.Tracing {
private final String namespace;

public AwsSdkModule() {
super("aws-sdk");
this("com.amazonaws", "aws-sdk");
}

protected AwsSdkModule(String namespace, String instrumentationName) {
super(instrumentationName);
this.namespace = namespace;
}

@Override
Expand All @@ -30,18 +36,18 @@ public String[] helperClassNames() {
@Override
public Map<String, String> contextStore() {
Map<String, String> map = new java.util.HashMap<>();
map.put("com.amazonaws.services.sqs.model.ReceiveMessageResult", "java.lang.String");
map.put(namespace + ".services.sqs.model.ReceiveMessageResult", "java.lang.String");
map.put(
"com.amazonaws.AmazonWebServiceRequest",
namespace + ".AmazonWebServiceRequest",
"datadog.trace.bootstrap.instrumentation.api.AgentSpan");
return map;
}

@Override
public List<Instrumenter> typeInstrumentations() {
return Arrays.asList(
new AWSHttpClientInstrumentation(),
new RequestExecutorInstrumentation(),
new HandlerChainFactoryInstrumentation());
new AWSHttpClientInstrumentation(namespace),
new RequestExecutorInstrumentation(namespace),
new HandlerChainFactoryInstrumentation(namespace));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package datadog.trace.instrumentation.aws.v0;

import static java.util.Collections.singletonMap;

import com.google.auto.service.AutoService;
import datadog.trace.agent.tooling.InstrumenterModule;
import java.util.Map;

/** Repackaged AWS SDK instrumentations for Amazon EMR. */
@AutoService(InstrumenterModule.class)
public class EmrSdkModule extends AwsSdkModule {
public EmrSdkModule() {
super("com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws", "emr-aws-sdk");
}

@Override
public String muzzleDirective() {
return "emr-aws-sdk";
}

@Override
public Map<String, String> adviceShading() {
return singletonMap("com.amazonaws", "com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,15 @@
*/
public final class HandlerChainFactoryInstrumentation
implements Instrumenter.ForSingleType, Instrumenter.HasMethodAdvice {
private final String namespace;

public HandlerChainFactoryInstrumentation(String namespace) {
this.namespace = namespace;
}

@Override
public String instrumentedType() {
return "com.amazonaws.handlers.HandlerChainFactory";
return namespace + ".handlers.HandlerChainFactory";
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,15 @@
*/
public final class RequestExecutorInstrumentation
implements Instrumenter.ForSingleType, Instrumenter.HasMethodAdvice {
private final String namespace;

public RequestExecutorInstrumentation(String namespace) {
this.namespace = namespace;
}

@Override
public String instrumentedType() {
return "com.amazonaws.http.AmazonHttpClient$RequestExecutor";
return namespace + ".http.AmazonHttpClient$RequestExecutor";
}

@Override
Expand Down

0 comments on commit 6ef294d

Please sign in to comment.