Skip to main content

Observability

Vali-Mediator.Observability adds telemetry to every request handled by the mediator — distributed tracing, metrics, and custom observers.

Installation

dotnet add package Vali-Mediator.Observability

Setup

builder.Services.AddValiMediator(config =>
{
config.RegisterServicesFromAssemblyContaining<Program>();
config.AddObservabilityBehavior();
});

builder.Services.AddObservability();

Three Pillars

PillarTypeDescription
TracingValiMediatorDiagnostics.ActivitySourceOpenTelemetry-compatible Activity per request
MetricsIMetricsCollectorRecord duration, success/failure counts
ObserversIRequestObserverHook into started/completed/failed lifecycle

What Gets Recorded

For every IRequest<T>, INotification, and IFireAndForget processed:

  • Activity started with request type name
  • Handler name tagged on the activity
  • Duration in milliseconds
  • Success/failure status
  • ErrorType if applicable

OpenTelemetry Integration

builder.Services.AddOpenTelemetry()
.WithTracing(tracing => tracing
.AddSource("Vali-Mediator") // listen to Vali-Mediator activities
.AddJaegerExporter()
.AddZipkinExporter());

Disabling for Specific Requests

To opt out of observability for a specific request, don't register AddObservabilityBehavior globally and instead apply it selectively, or implement a custom behavior that skips certain request types.