Skip to content

Commit 4635bef

Browse files
committed
change tag names, add tags only if they are known, add feature flag for experimental tags
1 parent 28e0568 commit 4635bef

3 files changed

Lines changed: 55 additions & 15 deletions

File tree

communication/src/main/java/datadog/communication/http/OkHttpUtils.java

Lines changed: 45 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,26 @@ public static Request.Builder prepareRequest(final HttpUrl url, Map<String, Stri
210210
builder.addHeader(DATADOG_ENTITY_ID, entityId);
211211
}
212212

213+
if (Config.get().isExperimentalProcessTagsEnabled()) {
214+
// custom X-Datadog-Process-Tags
215+
String customTags = getCustomTags();
216+
String existingProcessTags = headers.getOrDefault("X-Datadog-Process-Tags", "");
217+
if (!existingProcessTags.isEmpty() && !existingProcessTags.endsWith(",")) {
218+
existingProcessTags += ",";
219+
}
220+
if (customTags.length() > 0) {
221+
headers.put("X-Datadog-Process-Tags", existingProcessTags + customTags);
222+
}
223+
}
224+
225+
for (Map.Entry<String, String> e : headers.entrySet()) {
226+
builder.addHeader(e.getKey(), e.getValue());
227+
}
228+
229+
return builder;
230+
}
231+
232+
private static String getCustomTags() {
213233
String javaCommand = System.getProperty("sun.java.command", "unknown");
214234
String[] parts = javaCommand.split(" ");
215235
String mainTarget = parts.length > 0 ? parts[0] : "unknown";
@@ -246,24 +266,34 @@ public static Request.Builder prepareRequest(final HttpUrl url, Map<String, Stri
246266
String jbossMode = System.getProperty("jboss.server.mode", "unknown");
247267
String jbossServerName = System.getProperty("jboss.server.name", "unknown");
248268

249-
String customTags =
250-
String.format(
251-
"JavaMainClass:%s,JavaJarFile:%s,JavaJarPath:%s,JbossHome:%s,JbossMode:%s,JbossServerName:%s",
252-
javaMainClass, javaJarFile, javaJarPath, jbossHome, jbossMode, jbossServerName);
253-
254-
String existingProcessTags = headers.getOrDefault("X-Datadog-Process-Tags", "");
255-
if (!existingProcessTags.isEmpty() && !existingProcessTags.endsWith(",")) {
256-
existingProcessTags += ",";
269+
StringBuilder customTags = new StringBuilder();
270+
if (!"unknown".equals(javaMainClass)) {
271+
if (customTags.length() > 0) customTags.append(",");
272+
customTags.append("java_main_class:").append(javaMainClass);
257273
}
258-
headers.put("X-Datadog-Process-Tags", existingProcessTags + customTags);
259-
260-
System.out.println(customTags);
261-
262-
for (Map.Entry<String, String> e : headers.entrySet()) {
263-
builder.addHeader(e.getKey(), e.getValue());
274+
if (!"unknown".equals(javaJarFile)) {
275+
if (customTags.length() > 0) customTags.append(",");
276+
customTags.append("java_jar_file:").append(javaJarFile);
277+
}
278+
if (!"unknown".equals(javaJarPath)) {
279+
if (customTags.length() > 0) customTags.append(",");
280+
customTags.append("java_jar_path:").append(javaJarPath);
281+
}
282+
if (!"unknown".equals(jbossHome)) {
283+
if (customTags.length() > 0) customTags.append(",");
284+
customTags.append("jboss_home:").append(jbossHome);
285+
}
286+
if (!"unknown".equals(jbossMode)) {
287+
if (customTags.length() > 0) customTags.append(",");
288+
customTags.append("jboss_mode:").append(jbossMode);
289+
}
290+
if (!"unknown".equals(jbossServerName)) {
291+
if (customTags.length() > 0) customTags.append(",");
292+
customTags.append("jboss_server_name:").append(jbossServerName);
264293
}
265294

266-
return builder;
295+
System.out.println(customTags);
296+
return customTags.toString();
267297
}
268298

269299
public static Request.Builder prepareRequest(

dd-trace-api/src/main/java/datadog/trace/api/config/GeneralConfig.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ public final class GeneralConfig {
9595
public static final String AGENTLESS_LOG_SUBMISSION_URL = "agentless.log.submission.url";
9696
public static final String APM_TRACING_ENABLED = "apm.tracing.enabled";
9797
public static final String JDK_SOCKET_ENABLED = "jdk.socket.enabled";
98+
public static final String EXPERIMENTAL_PROCESS_TAGS_ENABLED =
99+
"experimental.process.tags.enabled";
98100

99101
private GeneralConfig() {}
100102
}

internal-api/src/main/java/datadog/trace/api/Config.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -570,6 +570,7 @@ public static String getHostName() {
570570
private final Set<String> experimentalFeaturesEnabled;
571571

572572
private final boolean jdkSocketEnabled;
573+
private final boolean experimentalProcessTagsEnabled;
573574

574575
// Read order: System Properties -> Env Variables, [-> properties file], [-> default value]
575576
private Config() {
@@ -2011,6 +2012,9 @@ PROFILING_DATADOG_PROFILER_ENABLED, isDatadogProfilerSafeInCurrentEnvironment())
20112012

20122013
this.jdkSocketEnabled = configProvider.getBoolean(JDK_SOCKET_ENABLED, true);
20132014

2015+
this.experimentalProcessTagsEnabled =
2016+
configProvider.getBoolean(EXPERIMENTAL_PROCESS_TAGS_ENABLED, false);
2017+
20142018
log.debug("New instance: {}", this);
20152019
}
20162020

@@ -3617,6 +3621,10 @@ public boolean isJdkSocketEnabled() {
36173621
return jdkSocketEnabled;
36183622
}
36193623

3624+
public boolean isExperimentalProcessTagsEnabled() {
3625+
return experimentalProcessTagsEnabled;
3626+
}
3627+
36203628
/** @return A map of tags to be applied only to the local application root span. */
36213629
public Map<String, Object> getLocalRootSpanTags() {
36223630
final Map<String, String> runtimeTags = getRuntimeTags();

0 commit comments

Comments
 (0)