diff --git a/src/NATS.Net.OpenTelemetry/NATS.Net.OpenTelemetry.csproj b/src/NATS.Net.OpenTelemetry/NATS.Net.OpenTelemetry.csproj index f5ae8bf9b..89f1cf38b 100644 --- a/src/NATS.Net.OpenTelemetry/NATS.Net.OpenTelemetry.csproj +++ b/src/NATS.Net.OpenTelemetry/NATS.Net.OpenTelemetry.csproj @@ -16,4 +16,12 @@ + + + + + + + + diff --git a/src/NATS.Net.OpenTelemetry/OpenTelemetryTracingExtensions.cs b/src/NATS.Net.OpenTelemetry/OpenTelemetryTracingExtensions.cs new file mode 100644 index 000000000..3e64c7c0c --- /dev/null +++ b/src/NATS.Net.OpenTelemetry/OpenTelemetryTracingExtensions.cs @@ -0,0 +1,23 @@ +using NATS.Client.Core; + +// ReSharper disable once CheckNamespace - Place in OTEL namespace for discoverability +namespace OpenTelemetry.Trace; + +public static class OpenTelemetryTracingExtensions +{ + /// + /// Enables trace collection on activity sources from the NATS.Client nuget package. + /// + /// being configured. + /// Include traces from internal messaging used for control flow and lower level usage during high level abstractions (e.g. JetStream, KvStore, etc) + /// The same instance of to chain the calls. + public static TracerProviderBuilder AddNatsInstrumentation(this TracerProviderBuilder builder, bool includeInternal = false) + { + builder.AddSource("NATS.Client"); + + if (includeInternal) + builder.AddSource("NATS.Client.Internal"); + + return builder; + } +}