Skip to content
Open
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
Expand Up @@ -109,7 +109,10 @@ public final class ConfigDefaults {
static final int DEFAULT_METRICS_OTEL_TIMEOUT = 7_500; // ms
static final int DEFAULT_METRICS_OTEL_CARDINALITY_LIMIT = 2_000;

static final String DEFAULT_OTLP_HTTP_METRIC_ENDPOINT = "v1/metrics";
static final int DEFAULT_OTLP_TRACES_TIMEOUT = 10_000; // ms

static final String DEFAULT_OTLP_HTTP_METRICS_ENDPOINT = "v1/metrics";
static final String DEFAULT_OTLP_HTTP_TRACES_ENDPOINT = "v1/traces";
static final String DEFAULT_OTLP_HTTP_PORT = "4318";
static final String DEFAULT_OTLP_GRPC_PORT = "4317";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,12 @@ public enum Temporality {
LOWMEMORY
}

public static final String TRACE_OTEL_ENABLED = "trace.otel.enabled";
public static final String OTLP_TRACES_ENDPOINT = "otlp.traces.endpoint";
public static final String OTLP_TRACES_HEADERS = "otlp.traces.headers";
public static final String OTLP_TRACES_PROTOCOL = "otlp.traces.protocol";
public static final String OTLP_TRACES_COMPRESSION = "otlp.traces.compression";
public static final String OTLP_TRACES_TIMEOUT = "otlp.traces.timeout";

private OtlpConfig() {}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ public final class TraceInstrumentationConfig {
public static final String CODE_ORIGIN_FOR_SPANS_ENABLED = "code.origin.for.spans.enabled";
public static final String CODE_ORIGIN_MAX_USER_FRAMES = "code.origin.max.user.frames";
public static final String TRACE_ENABLED = "trace.enabled";
public static final String TRACE_OTEL_ENABLED = "trace.otel.enabled";
public static final String INTEGRATIONS_ENABLED = "integrations.enabled";

public static final String TRACE_EXTENSIONS_PATH = "trace.extensions.path";
Expand Down
98 changes: 84 additions & 14 deletions internal-api/src/main/java/datadog/trace/api/Config.java
Original file line number Diff line number Diff line change
Expand Up @@ -112,12 +112,13 @@
import static datadog.trace.api.ConfigDefaults.DEFAULT_LLM_OBS_AGENTLESS_ENABLED;
import static datadog.trace.api.ConfigDefaults.DEFAULT_LOGS_INJECTION_ENABLED;
import static datadog.trace.api.ConfigDefaults.DEFAULT_METRICS_OTEL_CARDINALITY_LIMIT;
import static datadog.trace.api.ConfigDefaults.DEFAULT_METRICS_OTEL_ENABLED;
import static datadog.trace.api.ConfigDefaults.DEFAULT_METRICS_OTEL_INTERVAL;
import static datadog.trace.api.ConfigDefaults.DEFAULT_METRICS_OTEL_TIMEOUT;
import static datadog.trace.api.ConfigDefaults.DEFAULT_OTLP_GRPC_PORT;
import static datadog.trace.api.ConfigDefaults.DEFAULT_OTLP_HTTP_METRIC_ENDPOINT;
import static datadog.trace.api.ConfigDefaults.DEFAULT_OTLP_HTTP_METRICS_ENDPOINT;
import static datadog.trace.api.ConfigDefaults.DEFAULT_OTLP_HTTP_PORT;
import static datadog.trace.api.ConfigDefaults.DEFAULT_OTLP_HTTP_TRACES_ENDPOINT;
import static datadog.trace.api.ConfigDefaults.DEFAULT_OTLP_TRACES_TIMEOUT;
import static datadog.trace.api.ConfigDefaults.DEFAULT_PARTIAL_FLUSH_MIN_SPANS;
import static datadog.trace.api.ConfigDefaults.DEFAULT_PERF_METRICS_ENABLED;
import static datadog.trace.api.ConfigDefaults.DEFAULT_PRIORITY_SAMPLING_ENABLED;
Expand Down Expand Up @@ -446,7 +447,6 @@
import static datadog.trace.api.config.LlmObsConfig.LLMOBS_AGENTLESS_ENABLED;
import static datadog.trace.api.config.LlmObsConfig.LLMOBS_ML_APP;
import static datadog.trace.api.config.OtlpConfig.METRICS_OTEL_CARDINALITY_LIMIT;
import static datadog.trace.api.config.OtlpConfig.METRICS_OTEL_ENABLED;
import static datadog.trace.api.config.OtlpConfig.METRICS_OTEL_INTERVAL;
import static datadog.trace.api.config.OtlpConfig.METRICS_OTEL_TIMEOUT;
import static datadog.trace.api.config.OtlpConfig.OTLP_METRICS_COMPRESSION;
Expand All @@ -455,6 +455,11 @@
import static datadog.trace.api.config.OtlpConfig.OTLP_METRICS_PROTOCOL;
import static datadog.trace.api.config.OtlpConfig.OTLP_METRICS_TEMPORALITY_PREFERENCE;
import static datadog.trace.api.config.OtlpConfig.OTLP_METRICS_TIMEOUT;
import static datadog.trace.api.config.OtlpConfig.OTLP_TRACES_COMPRESSION;
import static datadog.trace.api.config.OtlpConfig.OTLP_TRACES_ENDPOINT;
import static datadog.trace.api.config.OtlpConfig.OTLP_TRACES_HEADERS;
import static datadog.trace.api.config.OtlpConfig.OTLP_TRACES_PROTOCOL;
import static datadog.trace.api.config.OtlpConfig.OTLP_TRACES_TIMEOUT;
import static datadog.trace.api.config.ProfilingConfig.PROFILING_AGENTLESS;
import static datadog.trace.api.config.ProfilingConfig.PROFILING_AGENTLESS_DEFAULT;
import static datadog.trace.api.config.ProfilingConfig.PROFILING_API_KEY_FILE_OLD;
Expand Down Expand Up @@ -913,7 +918,6 @@ public static String getHostName() {
private final boolean jmxFetchMultipleRuntimeServicesEnabled;
private final int jmxFetchMultipleRuntimeServicesLimit;

private final boolean metricsOtelEnabled;
private final int metricsOtelInterval;
private final int metricsOtelTimeout;
private final int metricsOtelCardinalityLimit;
Expand All @@ -924,6 +928,12 @@ public static String getHostName() {
private final int otlpMetricsTimeout;
private final OtlpConfig.Temporality otlpMetricsTemporalityPreference;

private final String otlpTracesEndpoint;
private final Map<String, String> otlpTracesHeaders;
private final OtlpConfig.Protocol otlpTracesProtocol;
private final OtlpConfig.Compression otlpTracesCompression;
private final int otlpTracesTimeout;

// These values are default-ed to those of jmx fetch values as needed
private final boolean healthMetricsEnabled;
private final String healthMetricsStatsdHost;
Expand Down Expand Up @@ -1889,9 +1899,6 @@ private Config(final ConfigProvider configProvider, final InstrumenterConfig ins
statsDClientSocketBuffer = configProvider.getInteger(STATSD_CLIENT_SOCKET_BUFFER);
statsDClientSocketTimeout = configProvider.getInteger(STATSD_CLIENT_SOCKET_TIMEOUT);

metricsOtelEnabled =
configProvider.getBoolean(METRICS_OTEL_ENABLED, DEFAULT_METRICS_OTEL_ENABLED);

int cardinalityLimit =
configProvider.getInteger(
METRICS_OTEL_CARDINALITY_LIMIT, DEFAULT_METRICS_OTEL_CARDINALITY_LIMIT);
Expand Down Expand Up @@ -1919,11 +1926,11 @@ private Config(final ConfigProvider configProvider, final InstrumenterConfig ins
metricsOtelTimeout = otelTimeout;

// keep OTLP default timeout below the overall export timeout
int defaultOtlpTimeout = Math.min(metricsOtelTimeout, DEFAULT_METRICS_OTEL_TIMEOUT);
int otlpTimeout = configProvider.getInteger(OTLP_METRICS_TIMEOUT, defaultOtlpTimeout);
int defaultOtlpMetricsTimeout = Math.min(metricsOtelTimeout, DEFAULT_METRICS_OTEL_TIMEOUT);
int otlpTimeout = configProvider.getInteger(OTLP_METRICS_TIMEOUT, defaultOtlpMetricsTimeout);
if (otlpTimeout < 0) {
log.warn("Invalid OTLP metrics timeout: {}. The value must be positive", otlpTimeout);
otlpTimeout = defaultOtlpTimeout;
otlpTimeout = defaultOtlpMetricsTimeout;
}
otlpMetricsTimeout = otlpTimeout;

Expand All @@ -1946,7 +1953,7 @@ private Config(final ConfigProvider configProvider, final InstrumenterConfig ins
+ ':'
+ DEFAULT_OTLP_HTTP_PORT
+ '/'
+ DEFAULT_OTLP_HTTP_METRIC_ENDPOINT;
+ DEFAULT_OTLP_HTTP_METRICS_ENDPOINT;
}
}
otlpMetricsEndpoint = otlpMetricsEndpointFromEnvironment;
Expand All @@ -1957,6 +1964,37 @@ private Config(final ConfigProvider configProvider, final InstrumenterConfig ins
OtlpConfig.Temporality.class,
OtlpConfig.Temporality.DELTA);

otlpTimeout = configProvider.getInteger(OTLP_TRACES_TIMEOUT, DEFAULT_OTLP_TRACES_TIMEOUT);
if (otlpTimeout < 0) {
log.warn("Invalid OTLP traces timeout: {}. The value must be positive", otlpTimeout);
otlpTimeout = DEFAULT_METRICS_OTEL_TIMEOUT;
}
otlpTracesTimeout = otlpTimeout;

otlpTracesHeaders = configProvider.getMergedMap(OTLP_TRACES_HEADERS, '=');
otlpTracesProtocol =
configProvider.getEnum(
OTLP_TRACES_PROTOCOL, OtlpConfig.Protocol.class, OtlpConfig.Protocol.HTTP_PROTOBUF);
otlpTracesCompression =
configProvider.getEnum(
OTLP_TRACES_COMPRESSION, OtlpConfig.Compression.class, OtlpConfig.Compression.NONE);

String otlpTracesEndpointFromEnvironment = configProvider.getString(OTLP_TRACES_ENDPOINT);
if (otlpTracesEndpointFromEnvironment == null) {
if (otlpMetricsProtocol == OtlpConfig.Protocol.GRPC) {
otlpTracesEndpointFromEnvironment = "http://" + agentHost + ':' + DEFAULT_OTLP_GRPC_PORT;
} else {
otlpTracesEndpointFromEnvironment =
"http://"
+ agentHost
+ ':'
+ DEFAULT_OTLP_HTTP_PORT
+ '/'
+ DEFAULT_OTLP_HTTP_TRACES_ENDPOINT;
}
}
otlpTracesEndpoint = otlpTracesEndpointFromEnvironment;

// Runtime metrics are disabled if Otel metrics are enabled and the metrics exporter is none
runtimeMetricsEnabled = configProvider.getBoolean(RUNTIME_METRICS_ENABLED, true);

Expand Down Expand Up @@ -5205,7 +5243,7 @@ public boolean isJmxFetchIntegrationEnabled(
}

public boolean isMetricsOtelEnabled() {
return metricsOtelEnabled;
return instrumenterConfig.isMetricsOtelEnabled();
}

public int getMetricsOtelCardinalityLimit() {
Expand Down Expand Up @@ -5244,6 +5282,30 @@ public OtlpConfig.Temporality getOtlpMetricsTemporalityPreference() {
return otlpMetricsTemporalityPreference;
}

public boolean isTraceOtelEnabled() {
return instrumenterConfig.isTraceOtelEnabled();
}

public String getOtlpTracesEndpoint() {
return otlpTracesEndpoint;
}

public Map<String, String> getOtlpTracesHeaders() {
return otlpTracesHeaders;
}

public OtlpConfig.Protocol getOtlpTracesProtocol() {
return otlpTracesProtocol;
}

public OtlpConfig.Compression getOtlpTracesCompression() {
return otlpTracesCompression;
}

public int getOtlpTracesTimeout() {
return otlpTracesTimeout;
}

public boolean isRuleEnabled(final String name) {
return isRuleEnabled(name, true);
}
Expand Down Expand Up @@ -6255,8 +6317,6 @@ public String toString() {
+ aiGuardEnabled
+ ", aiGuardEndpoint="
+ aiGuardEndpoint
+ ", metricsOtelEnabled="
+ metricsOtelEnabled
+ ", metricsOtelInterval="
+ metricsOtelInterval
+ ", metricsOtelTimeout="
Expand All @@ -6275,6 +6335,16 @@ public String toString() {
+ otlpMetricsTimeout
+ ", otlpMetricsTemporalityPreference="
+ otlpMetricsTemporalityPreference
+ ", otlpTracesEndpoint="
+ otlpTracesEndpoint
+ ", otlpTracesHeaders="
+ otlpTracesHeaders
+ ", otlpTracesProtocol="
+ otlpTracesProtocol
+ ", otlpTracesCompression="
+ otlpTracesCompression
+ ", otlpTracesTimeout="
+ otlpTracesTimeout
+ ", serviceDiscoveryEnabled="
+ serviceDiscoveryEnabled
+ ", sfnInjectDatadogAttributeEnabled="
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import static datadog.trace.api.config.IastConfig.IAST_ENABLED;
import static datadog.trace.api.config.LlmObsConfig.LLMOBS_ENABLED;
import static datadog.trace.api.config.OtlpConfig.METRICS_OTEL_ENABLED;
import static datadog.trace.api.config.OtlpConfig.TRACE_OTEL_ENABLED;
import static datadog.trace.api.config.ProfilingConfig.PROFILING_DIRECT_ALLOCATION_ENABLED;
import static datadog.trace.api.config.ProfilingConfig.PROFILING_DIRECT_ALLOCATION_ENABLED_DEFAULT;
import static datadog.trace.api.config.ProfilingConfig.PROFILING_ENABLED;
Expand Down Expand Up @@ -80,7 +81,6 @@
import static datadog.trace.api.config.TraceInstrumentationConfig.TRACE_EXECUTORS_ALL;
import static datadog.trace.api.config.TraceInstrumentationConfig.TRACE_EXTENSIONS_PATH;
import static datadog.trace.api.config.TraceInstrumentationConfig.TRACE_METHODS;
import static datadog.trace.api.config.TraceInstrumentationConfig.TRACE_OTEL_ENABLED;
import static datadog.trace.api.config.TraceInstrumentationConfig.TRACE_PEKKO_SCHEDULER_ENABLED;
import static datadog.trace.api.config.TraceInstrumentationConfig.TRACE_THREAD_POOL_EXECUTORS_EXCLUDE;
import static datadog.trace.api.config.TraceInstrumentationConfig.TRACE_WEBSOCKET_MESSAGES_ENABLED;
Expand Down
Loading
Loading