From 8165b65a4dfebe7836db8bca1e1238e5ca871fa6 Mon Sep 17 00:00:00 2001 From: Mitchell Cookson <31948306+Cooksauce@users.noreply.github.com> Date: Mon, 29 Jan 2024 05:15:44 -0600 Subject: [PATCH] Add OpenTelemetry extension --- .../NATS.Net.OpenTelemetry.csproj | 8 +++++++ .../OpenTelemetryTracingExtensions.cs | 23 +++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 src/NATS.Net.OpenTelemetry/OpenTelemetryTracingExtensions.cs 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; + } +}