Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
aba076e
otel: add Meter and metric instruments
mtmk May 22, 2026
f828afc
otel: emit published.messages counter on publish
mtmk May 22, 2026
66b1361
otel: emit consumed.messages counter on receive
mtmk May 22, 2026
6bec446
otel: add NATS.Client.OpenTelemetry package and public NatsTelemetry …
mtmk May 22, 2026
4fae25e
otel: emit active_subscriptions updown counter
mtmk May 26, 2026
c5fbd15
otel: record operation.duration histogram for publish and request
mtmk May 26, 2026
2c50502
otel: record operation.duration histogram for subscribe
mtmk May 26, 2026
7296463
otel: increment reconnects counter on successful reconnect
mtmk May 26, 2026
f3ffa18
docs: document NATS.Net meter and metric instruments [no ci]
mtmk May 26, 2026
ba7ec81
otel: cache per-connection metric tag prefix with boxed port
mtmk May 26, 2026
1e37e49
otel: add sent/received bytes counters
mtmk May 26, 2026
71b593f
examples: add MeterProvider with NATS metrics to OTel example
mtmk May 26, 2026
b969495
otel: use connect URI host/port for server.address/server.port
mtmk May 26, 2026
6539274
examples: wire OTel logs and route NATS internal logs to OTLP
mtmk May 26, 2026
f599787
otel: move published.messages increment to CommandWriter
mtmk May 26, 2026
2f80a2a
test: fix Reconnect_counter race against initial ConnectionOpened
mtmk May 26, 2026
ca29f13
otel: set advisory buckets on operation.duration histogram
mtmk May 28, 2026
7e8f2e2
test: cover active-subs decrement on connection dispose
mtmk May 28, 2026
ecbefcc
Revert "test: cover active-subs decrement on connection dispose"
mtmk May 28, 2026
dacebf2
otel: address code-review findings
mtmk May 28, 2026
125b10f
Merge remote-tracking branch 'origin/release/3.0' into otel-metrics-m…
mtmk May 29, 2026
a0ee684
otel: moving otel pkg out
mtmk May 29, 2026
1919873
fmt: cleat empty line
mtmk May 29, 2026
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
20 changes: 20 additions & 0 deletions src/NATS.Client.Core/Internal/Telemetry.cs
Original file line number Diff line number Diff line change
@@ -1,13 +1,33 @@
using System.Diagnostics;
using System.Diagnostics.Metrics;

namespace NATS.Client.Core.Internal;

// https://opentelemetry.io/docs/specs/semconv/attributes-registry/messaging/
// https://opentelemetry.io/docs/specs/semconv/messaging/messaging-spans/#messaging-attributes
// https://opentelemetry.io/docs/specs/semconv/messaging/messaging-metrics/
internal static class Telemetry
{
public const string NatsActivitySource = "NATS.Net";
public static readonly ActivitySource NatsActivities = new(name: NatsActivitySource);

public static readonly Meter NatsMeter = new(name: NatsActivitySource);

public static readonly Counter<long> PublishedMessages =
NatsMeter.CreateCounter<long>("messaging.client.published.messages", unit: "{message}");

public static readonly Counter<long> ConsumedMessages =
NatsMeter.CreateCounter<long>("messaging.client.consumed.messages", unit: "{message}");

public static readonly Histogram<double> OperationDuration =
NatsMeter.CreateHistogram<double>("messaging.client.operation.duration", unit: "s");

public static readonly UpDownCounter<long> ActiveSubscriptions =
NatsMeter.CreateUpDownCounter<long>("nats.client.active_subscriptions", unit: "{subscription}");

public static readonly Counter<long> Reconnects =
NatsMeter.CreateCounter<long>("nats.client.reconnects", unit: "{event}");
Comment thread
mtmk marked this conversation as resolved.
Outdated

private static readonly object BoxedTrue = true;

public static bool HasListeners() => NatsActivities.HasListeners();
Comment thread
mtmk marked this conversation as resolved.
Expand Down
Loading