This is an Instrumentation Library, which instruments ASP.NET Core SignalR and collect traces about SignalR hub method invocations.
NuGet: AspNetCore.SignalR.OpenTelemetry
dotnet add package AspNetCore.SignalR.OpenTelemetry
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSignalR()
.AddHubInstrumentation(); // <- Add this!
builder.Services.AddOpenTelemetry()
.ConfigureResource(builder =>
{
builder.AddService("AspNetCore.SignalR.OpenTelemetry.Example");
})
.WithTracing(providerBuilder =>
{
providerBuilder
.AddAspNetCoreInstrumentation()
.AddSignalRInstrumentation() // <- Add this!
.AddOtlpExporter();
});
The example code architecture is as follows.
graph LR;
app[ASP.NET Core Server] --> otelc[OpenTelemetry Collector];
otelc --> Tempo;
Grafana --> Tempo;
The example code can be quickly executed from Visual Studio.
It can also be quickly executed from the CLI.
$ docker compose build
$ docker compose up
- App Server: http://localhost:8080/signalr-dev/index.html
- Grafana: http://localhost:3000/explore
In Grafana, you can see the SignalR method call trace as follows.
- nenoNaninu/TypedSignalR.Client
- C# Source Generator to create strongly typed SignalR clients.
- nenoNaninu/TypedSignalR.Client.TypeScript
- TypeScript source generator to provide strongly typed SignalR clients by analyzing C# type definitions.
- nenoNaninu/TypedSignalR.Client.DevTools
- SignalR development tools inspired by SwaggerUI.