diff --git a/tracer/src/Datadog.Trace/Configuration/TracerSettings.cs b/tracer/src/Datadog.Trace/Configuration/TracerSettings.cs index 9be6f376cc2c..fd7ce552448d 100644 --- a/tracer/src/Datadog.Trace/Configuration/TracerSettings.cs +++ b/tracer/src/Datadog.Trace/Configuration/TracerSettings.cs @@ -420,10 +420,11 @@ _ when x.ToBoolean() is { } boolean => boolean, value => string.Equals(value, "none", StringComparison.OrdinalIgnoreCase) ? ParsingResult.Success(result: false) : ParsingResult.Failure()); + _runtimeMetricsEnabled = config .WithKeys(ConfigurationKeys.RuntimeMetricsEnabled) .AsBoolResult() - .OverrideWith(in otelRuntimeMetricsEnabled, ErrorLog, defaultValue: false); + .OverrideWith(in otelRuntimeMetricsEnabled, ErrorLog, defaultValue: EnvironmentHelpers.ShouldActivateRuntimeMetrics(isRunningInCiVisibility)); DataPipelineEnabled = config .WithKeys(ConfigurationKeys.TraceDataPipelineEnabled) diff --git a/tracer/src/Datadog.Trace/FrameworkDescription.cs b/tracer/src/Datadog.Trace/FrameworkDescription.cs index 8c1a0321a5b3..679846671015 100644 --- a/tracer/src/Datadog.Trace/FrameworkDescription.cs +++ b/tracer/src/Datadog.Trace/FrameworkDescription.cs @@ -68,6 +68,11 @@ public static bool IsNet5() return Environment.Version.Major >= 5; } + public static bool IsLowerThanNet9() + { + return Environment.Version.Major < 9; + } + public bool IsWindows() { return string.Equals(OSPlatform, OSPlatformName.Windows, StringComparison.OrdinalIgnoreCase); diff --git a/tracer/src/Datadog.Trace/Util/EnvironmentHelpers.cs b/tracer/src/Datadog.Trace/Util/EnvironmentHelpers.cs index d092787ae556..5b3376f99b09 100644 --- a/tracer/src/Datadog.Trace/Util/EnvironmentHelpers.cs +++ b/tracer/src/Datadog.Trace/Util/EnvironmentHelpers.cs @@ -154,6 +154,24 @@ public static bool IsGoogleCloudFunctions() EnvironmentVariableExists(ConfigurationKeys.GCPFunction.DeprecatedProjectKey)); } + /// + /// Activate runtime metrics only on >= net9 or NetFx + /// + /// isRunningInCiVisibility + /// whether to activate it or not + public static bool ShouldActivateRuntimeMetrics(bool isRunningInCiVisibility) + { + // only activate runtime metrics by default from net9 or netframework + var shouldActivateRuntimeMetrics = !isRunningInCiVisibility; +#if !NETFRAMEWORK + if (shouldActivateRuntimeMetrics && FrameworkDescription.IsLowerThanNet9()) + { + shouldActivateRuntimeMetrics = false; + } +#endif + return shouldActivateRuntimeMetrics; + } + /// /// Checks if the specified environment variable exists in the current environment. ///