Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package datadog.trace.bootstrap.instrumentation.decorator;

import static datadog.trace.api.gateway.Events.EVENTS;
import static datadog.trace.bootstrap.instrumentation.api.ServiceNameSources.DB_CLIENT_SPLIT_BY_HOST;
import static datadog.trace.bootstrap.instrumentation.api.Tags.DB_TYPE;

import datadog.appsec.api.blocking.BlockingException;
Expand Down Expand Up @@ -76,7 +77,7 @@ public AgentSpan onConnection(final AgentSpan span, final CONNECTION connection)
span.setTag(Tags.PEER_HOSTNAME, hostName);

if (Config.get().isDbClientSplitByHost()) {
span.setServiceName(hostName.toString(), component());
span.setServiceName(hostName.toString(), DB_CLIENT_SPLIT_BY_HOST);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package datadog.trace.instrumentation.aerospike4;

import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
import static datadog.trace.bootstrap.instrumentation.api.ServiceNameSources.DB_CLIENT_SPLIT_BY_INSTANCE;

import com.aerospike.client.AerospikeClient;
import com.aerospike.client.cluster.Cluster;
Expand Down Expand Up @@ -81,7 +82,7 @@ public AgentSpan onConnection(
}
span.setTag(Tags.DB_INSTANCE, instanceName);
if (Config.get().isDbClientSplitByInstance()) {
span.setServiceName(instanceName, component());
span.setServiceName(instanceName, DB_CLIENT_SPLIT_BY_INSTANCE);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import static datadog.trace.api.Functions.UTF8_ENCODE;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan;
import static datadog.trace.bootstrap.instrumentation.api.InternalSpanTypes.SOAP;
import static datadog.trace.bootstrap.instrumentation.api.ServiceNameSources.HTTP_CLIENT_SPLIT_BY_DOMAIN;

import datadog.trace.api.Config;
import datadog.trace.api.cache.DDCache;
Expand Down Expand Up @@ -117,7 +118,7 @@ public void onTransport(AgentSpan span, MessageContext message) {
if (null != host && !host.isEmpty()) {
span.setTag(Tags.PEER_HOSTNAME, host);
if (Config.get().isHttpClientSplitByDomain() && host.charAt(0) >= 'A') {
span.setServiceName(host, component());
span.setServiceName(host, HTTP_CLIENT_SPLIT_BY_DOMAIN);
}
if (port > 0) {
setPeerPort(span, port);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,8 +166,7 @@ public static class CaptureModuleNameAdvice {
public static void afterConstruct(@Advice.This final Module module) {
final String name = ModuleNameHelper.extractDeploymentName(module.getClassLoader());
if (name != null && !name.isEmpty()) {
ClassloaderConfigurationOverrides.withPinnedServiceName(
module.getClassLoader(), name, JBOSS_MODULES);
ClassloaderConfigurationOverrides.withPinnedServiceName(module.getClassLoader(), name);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import static datadog.trace.bootstrap.instrumentation.api.InstrumentationTags.OFFSET;
import static datadog.trace.bootstrap.instrumentation.api.InstrumentationTags.PARTITION;
import static datadog.trace.bootstrap.instrumentation.api.InstrumentationTags.RECORD_QUEUE_TIME_MS;
import static datadog.trace.bootstrap.instrumentation.api.ServiceNameSources.MESSAGE_BROKER_SPLIT_BY_DESTINATION;
import static java.util.concurrent.TimeUnit.NANOSECONDS;

import datadog.trace.api.Config;
Expand Down Expand Up @@ -145,7 +146,7 @@ public void onTimeInQueue(final AgentSpan span, final ConsumerRecord record) {
String topic = record.topic() == null ? "kafka" : record.topic();
span.setResourceName(topic);
if (Config.get().isMessageBrokerSplitByDestination()) {
span.setServiceName(topic, component());
span.setServiceName(topic, MESSAGE_BROKER_SPLIT_BY_DESTINATION);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import static datadog.trace.bootstrap.instrumentation.api.InstrumentationTags.OFFSET;
import static datadog.trace.bootstrap.instrumentation.api.InstrumentationTags.PARTITION;
import static datadog.trace.bootstrap.instrumentation.api.InstrumentationTags.RECORD_QUEUE_TIME_MS;
import static datadog.trace.bootstrap.instrumentation.api.ServiceNameSources.MESSAGE_BROKER_SPLIT_BY_DESTINATION;
import static java.util.concurrent.TimeUnit.NANOSECONDS;

import datadog.trace.api.Config;
Expand Down Expand Up @@ -145,7 +146,7 @@ public void onTimeInQueue(final AgentSpan span, final ConsumerRecord record) {
String topic = record.topic() == null ? "kafka" : record.topic();
span.setResourceName(topic);
if (Config.get().isMessageBrokerSplitByDestination()) {
span.setServiceName(topic, component());
span.setServiceName(topic, MESSAGE_BROKER_SPLIT_BY_DESTINATION);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import static datadog.trace.bootstrap.instrumentation.api.InstrumentationTags.OFFSET;
import static datadog.trace.bootstrap.instrumentation.api.InstrumentationTags.PARTITION;
import static datadog.trace.bootstrap.instrumentation.api.InstrumentationTags.PROCESSOR_NAME;
import static datadog.trace.bootstrap.instrumentation.api.ServiceNameSources.MESSAGE_BROKER_SPLIT_BY_DESTINATION;

import datadog.trace.api.Config;
import datadog.trace.api.Functions;
Expand Down Expand Up @@ -128,7 +129,7 @@ public void onTimeInQueue(final AgentSpan span, final String topic2) {
String topic = topic2 == null ? "kafka" : topic2;
span.setResourceName(topic);
if (Config.get().isMessageBrokerSplitByDestination()) {
span.setServiceName(topic, component());
span.setServiceName(topic, MESSAGE_BROKER_SPLIT_BY_DESTINATION);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public static class ThreadContextClassloaderAdvice {
public static void afterConstruct(@Advice.This ThreadContextClassLoader self) {
final String name = BundleNameHelper.extractDeploymentName(self);
if (name != null && !name.isEmpty()) {
ClassloaderConfigurationOverrides.withPinnedServiceName(self, name, LIBERTY);
ClassloaderConfigurationOverrides.withPinnedServiceName(self, name);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import static datadog.trace.bootstrap.instrumentation.api.InstrumentationTags.AMQP_QUEUE;
import static datadog.trace.bootstrap.instrumentation.api.InstrumentationTags.AMQP_ROUTING_KEY;
import static datadog.trace.bootstrap.instrumentation.api.InstrumentationTags.RECORD_QUEUE_TIME_MS;
import static datadog.trace.bootstrap.instrumentation.api.ServiceNameSources.MESSAGE_BROKER_SPLIT_BY_DESTINATION;

import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Command;
Expand Down Expand Up @@ -159,7 +160,7 @@ public void onCommand(final AgentSpan span, final Command command) {
public void onTimeInQueue(final AgentSpan span, final String queue, final byte[] body) {
String normalizedQueueName = normalizeQueueName(queue);
if (Config.get().isMessageBrokerSplitByDestination()) {
span.setServiceName(normalizedQueueName, component());
span.setServiceName(normalizedQueueName, MESSAGE_BROKER_SPLIT_BY_DESTINATION);
}
span.setResourceName("amqp.deliver " + normalizedQueueName);
if (null != body) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import static datadog.trace.bootstrap.instrumentation.api.ServiceNameSources.MESSAGE_BROKER_SPLIT_BY_DESTINATION

import com.rabbitmq.client.AMQP
import com.rabbitmq.client.Channel
import com.rabbitmq.client.ConnectionFactory
Expand Down Expand Up @@ -773,6 +775,7 @@ abstract class RabbitMQTestBase extends VersionedNamingTestBase {
measured true

final boolean isV0 = version() == 0
final boolean isSplitByDestination = splitByDestination()

tags {
"$Tags.COMPONENT" "rabbitmq-amqp"
Expand Down Expand Up @@ -829,7 +832,9 @@ abstract class RabbitMQTestBase extends VersionedNamingTestBase {
if ({ isDataStreamsEnabled() }) {
"$DDTags.PATHWAY_HASH" { String }
}
if (isV0) {
if (distributedRootSpan && isSplitByDestination) {
serviceNameSource MESSAGE_BROKER_SPLIT_BY_DESTINATION
} else if (isV0) {
// in v0 the service name is always set to DD_SERVICE while it should just be unset as v1
// this is a buggy behaviour that could not be easily fixed.
serviceNameSource "rabbitmq-amqp"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,7 @@ public static void onContextAvailable(

final String contextName = context.getBaseName();
if (contextName != null && !contextName.isEmpty()) {
info =
ClassloaderConfigurationOverrides.withPinnedServiceName(
classLoader, contextName, TOMCAT);
info = ClassloaderConfigurationOverrides.withPinnedServiceName(classLoader, contextName);
}
if (context.getNamingResources() != null) {
final ContextEnvironment[] envs = context.getNamingResources().findEnvironments();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import static datadog.trace.api.sampling.PrioritySampling.USER_DROP;
import static datadog.trace.api.sampling.PrioritySampling.USER_KEEP;
import static datadog.trace.bootstrap.instrumentation.api.InstrumentationTags.SERVLET_CONTEXT;
import static datadog.trace.bootstrap.instrumentation.api.ServiceNameSources.SPLIT_BY_SERVLET_CONTEXT;
import static datadog.trace.bootstrap.instrumentation.api.ServiceNameSources.SPLIT_BY_TAGS;
import static datadog.trace.bootstrap.instrumentation.api.Tags.HTTP_METHOD;
import static datadog.trace.bootstrap.instrumentation.api.Tags.HTTP_STATUS;
import static datadog.trace.bootstrap.instrumentation.api.Tags.HTTP_URL;
Expand Down Expand Up @@ -230,7 +232,7 @@ private static void setResourceFromUrl(

private boolean intercept(DDSpanContext span, String tag, Object value) {
if (splitServiceTags.contains(tag)) {
span.setServiceName(String.valueOf(value));
span.setServiceName(String.valueOf(value), SPLIT_BY_TAGS);
return true;
}
return false;
Expand Down Expand Up @@ -340,15 +342,15 @@ private boolean interceptServletContext(DDSpanContext span, Object value) {
String serviceName = null;
if (contextName.equals("/")) {
serviceName = Config.get().getRootContextServiceName();
span.setServiceName(serviceName, SERVLET_CONTEXT);
span.setServiceName(serviceName, SPLIT_BY_SERVLET_CONTEXT);
} else if (contextName.charAt(0) == '/') {
if (contextName.length() > 1) {
serviceName = contextName.substring(1);
span.setServiceName(serviceName, SERVLET_CONTEXT);
span.setServiceName(serviceName, SPLIT_BY_SERVLET_CONTEXT);
}
} else {
serviceName = contextName;
span.setServiceName(serviceName, SERVLET_CONTEXT);
span.setServiceName(serviceName, SPLIT_BY_SERVLET_CONTEXT);
}
ServiceNameCollector.get().addService(serviceName);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package datadog.trace.api;

import static datadog.trace.bootstrap.instrumentation.api.ServiceNameSources.JEE_SPLIT_BY_DEPLOYMENT;

import datadog.trace.api.config.GeneralConfig;
import datadog.trace.api.env.CapturedEnvironment;
import datadog.trace.api.remoteconfig.ServiceNameCollector;
Expand Down Expand Up @@ -28,10 +30,10 @@ static class Lazy {

public static class ContextualInfo {
private final String serviceName;
private final String serviceNameSource;
private final CharSequence serviceNameSource;
private final Map<String, Object> tags = new HashMap<>();

public ContextualInfo(String serviceName, String source) {
public ContextualInfo(String serviceName, CharSequence source) {
this.serviceName = serviceName;
this.serviceNameSource = source;
}
Expand All @@ -40,7 +42,7 @@ public String getServiceName() {
return serviceName;
}

public String getServiceNameSource() {
public CharSequence getServiceNameSource() {
return serviceNameSource;
}

Expand Down Expand Up @@ -88,12 +90,11 @@ public static ContextualInfo maybeCreateContextualInfo(ClassLoader classLoader)
}

@Nullable
public static ContextualInfo withPinnedServiceName(
ClassLoader classLoader, String serviceName, String serviceNameSource) {
public static ContextualInfo withPinnedServiceName(ClassLoader classLoader, String serviceName) {
if (!CAN_SPLIT_SERVICE_NAME_BY_DEPLOYMENT) {
return null;
}
final ContextualInfo contextualInfo = new ContextualInfo(serviceName, serviceNameSource);
final ContextualInfo contextualInfo = new ContextualInfo(serviceName, JEE_SPLIT_BY_DEPLOYMENT);
addContextualInfo(classLoader, contextualInfo);
return contextualInfo;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package datadog.trace.bootstrap.instrumentation.api;

public final class ServiceNameSources {
public static final CharSequence DB_CLIENT_SPLIT_BY_HOST =
UTF8BytesString.create("opt.db_client_split_by_host");
public static final CharSequence DB_CLIENT_SPLIT_BY_INSTANCE =
UTF8BytesString.create("opt.db_client_split_by_instance");
public static final CharSequence HTTP_CLIENT_SPLIT_BY_DOMAIN =
UTF8BytesString.create("opt.http_client_split_by_domain");
public static final CharSequence JEE_SPLIT_BY_DEPLOYMENT =
UTF8BytesString.create("opt.jee_split_by_deployment");
public static final CharSequence MESSAGE_BROKER_SPLIT_BY_DESTINATION =
UTF8BytesString.create("opt.message_broker_split_by_destination");
public static final CharSequence SPLIT_BY_SERVLET_CONTEXT =
UTF8BytesString.create("opt.split_by_servlet_context");
public static final CharSequence SPLIT_BY_TAGS = UTF8BytesString.create("opt.split_by_tags");

private ServiceNameSources() {
// utility class - no instantiation
}
}