Skip to content
Draft
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
22 changes: 22 additions & 0 deletions tracer/src/Datadog.Trace/Agent/TracesEncodingExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// <copyright file="TracesEncodingExtensions.cs" company="Datadog">
// Unless explicitly stated otherwise all files in this repository are licensed under the Apache 2 License.
// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2017 Datadog, Inc.
// </copyright>

#nullable enable

namespace Datadog.Trace.Agent;

internal static class TracesEncodingExtensions
{
/// <summary>
/// Returns <c>true</c> when traces are exported using any OTLP encoding.
/// </summary>
/// <remarks>
/// Defined as "not a Datadog-native encoding" so future OTLP encodings (e.g. gRPC) are covered
/// automatically; if a new Datadog-native encoding is added, exclude it here. The unsupported-OTLP-protocol
/// fallback resolves to <see cref="TracesEncoding.DatadogV0_4"/>, so this correctly returns <c>false</c> for it.
/// </remarks>
public static bool IsOtlp(this TracesEncoding encoding)
=> encoding is not TracesEncoding.DatadogV0_4;
}
9 changes: 9 additions & 0 deletions tracer/src/Datadog.Trace/TracerManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -555,6 +555,15 @@ void WriteDictionary(IReadOnlyDictionary<string, string> dictionary)
writer.WritePropertyName("activity_listener_enabled");
writer.WriteValue(instanceSettings.IsActivityListenerEnabled);

writer.WritePropertyName("otlp_traces_export_enabled");
writer.WriteValue(exporterSettings.TracesEncoding.IsOtlp());

writer.WritePropertyName("otlp_metrics_export_enabled");
writer.WriteValue(instanceSettings.OtlpRuntimeMetricsEnabled);

writer.WritePropertyName("otlp_logs_export_enabled");
writer.WriteValue(instanceSettings.OpenTelemetryLogsEnabled && instanceSettings.OtelLogsExporterEnabled);

writer.WritePropertyName("profiler_enabled");
writer.WriteValue(Profiler.Instance.Status.IsProfilerReady);

Expand Down
2 changes: 1 addition & 1 deletion tracer/src/Datadog.Trace/TracerManagerFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ protected virtual ISpanSampler GetSpanSampler(TracerSettings settings)

protected virtual IAgentWriter GetAgentWriter(TracerSettings settings, IStatsdManager statsd, Action<Dictionary<string, float>> updateSampleRates, Action<string> updateConfigHash, IDiscoveryService discoveryService, TelemetrySettings telemetrySettings)
{
if (settings.Manager.InitialExporterSettings.TracesEncoding is TracesEncoding.OtlpProtobuf or TracesEncoding.OtlpJson)
if (settings.Manager.InitialExporterSettings.TracesEncoding.IsOtlp())
{
var otlpApi = new ManagedApiOtlp(settings);
var otlpStatsAggregator = StatsAggregator.Create(otlpApi, settings, discoveryService, statsd, isOtlp: true);
Expand Down