From 41ede1eb1d7fcfff28f025aa6ea9925002a22301 Mon Sep 17 00:00:00 2001 From: nenoNaninu Date: Sun, 17 Mar 2024 03:57:11 +0900 Subject: [PATCH] support semconv 1.24.0 --- .../HubInstrumentationFilter.cs | 9 ++++++--- .../Internal/HubActivitySource.cs | 17 ++++++++++++----- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/AspNetCore.SignalR.OpenTelemetry/HubInstrumentationFilter.cs b/src/AspNetCore.SignalR.OpenTelemetry/HubInstrumentationFilter.cs index fa87fe0..3b16752 100644 --- a/src/AspNetCore.SignalR.OpenTelemetry/HubInstrumentationFilter.cs +++ b/src/AspNetCore.SignalR.OpenTelemetry/HubInstrumentationFilter.cs @@ -23,9 +23,10 @@ public HubInstrumentationFilter(ILoggerFactory loggerFactory) { var hubName = invocationContext.Hub.GetType().Name; var methodName = invocationContext.HubMethodName; + var address = invocationContext.Context.GetHttpContext()?.Request.Host.Value; using var scope = HubLogger.BeginHubMethodInvocationScope(_logger, hubName, methodName); - using var activity = HubActivitySource.StartInvocationActivity(hubName, methodName); + using var activity = HubActivitySource.StartInvocationActivity(hubName, methodName, address); try { @@ -52,9 +53,10 @@ public HubInstrumentationFilter(ILoggerFactory loggerFactory) public async Task OnConnectedAsync(HubLifetimeContext context, Func next) { var hubName = context.Hub.GetType().Name; + var address = context.Context.GetHttpContext()?.Request.Host.Value; using var scope = HubLogger.BeginHubMethodInvocationScope(_logger, hubName, nameof(OnConnectedAsync)); - using var activity = HubActivitySource.StartInvocationActivity(hubName, nameof(OnConnectedAsync)); + using var activity = HubActivitySource.StartInvocationActivity(hubName, nameof(OnConnectedAsync), address); try { @@ -83,9 +85,10 @@ public async Task OnDisconnectedAsync( Func next) { var hubName = context.Hub.GetType().Name; + var address = context.Context.GetHttpContext()?.Request.Host.Value; using var scope = HubLogger.BeginHubMethodInvocationScope(_logger, hubName, nameof(OnDisconnectedAsync)); - using var activity = HubActivitySource.StartInvocationActivity(hubName, nameof(OnDisconnectedAsync)); + using var activity = HubActivitySource.StartInvocationActivity(hubName, nameof(OnDisconnectedAsync), address); try { diff --git a/src/AspNetCore.SignalR.OpenTelemetry/Internal/HubActivitySource.cs b/src/AspNetCore.SignalR.OpenTelemetry/Internal/HubActivitySource.cs index a3b9148..4faa8a4 100644 --- a/src/AspNetCore.SignalR.OpenTelemetry/Internal/HubActivitySource.cs +++ b/src/AspNetCore.SignalR.OpenTelemetry/Internal/HubActivitySource.cs @@ -9,18 +9,25 @@ internal static class HubActivitySource private static readonly ActivitySource ActivitySource = new(Name); - internal static Activity? StartInvocationActivity(string hubName, string methodName) + internal static Activity? StartInvocationActivity(string hubName, string methodName, string? address) { - //https://opentelemetry.io/docs/specs/semconv/rpc/rpc-spans/#span-name - var activity = ActivitySource.CreateActivity($"{hubName}/{methodName}", ActivityKind.Internal); + // https://opentelemetry.io/docs/specs/semconv/rpc/rpc-spans/#span-name + var activity = ActivitySource.CreateActivity($"{hubName}/{methodName}", ActivityKind.Server); if (activity is null) { return null; } - activity.SetTag("signalr.hub", hubName); - activity.SetTag("signalr.method", methodName); + // https://opentelemetry.io/docs/specs/semconv/rpc/rpc-spans/#common-attributes + activity.SetTag("rpc.system", "signalr"); + activity.SetTag("rpc.service", hubName); + activity.SetTag("rpc.method", methodName); + + if (!string.IsNullOrEmpty(address)) + { + activity.SetTag("server.address", address); + } return activity.Start(); }