# DiagnosticSource
MassTransit uses Microsoft's System.Diagnostics.DiagnosticSource
to emit diagnostic events. This allows almost every metric trace provider to connect to MassTransit and monitor it.
To connect, set the current log context prior to bus configuration using:
public static async Task Main(string[] args)
{
var subscription = DiagnosticListener.AllListeners.Subscribe(delegate (DiagnosticListener listener)
{
if (listener.Name == "MassTransit")
{
// subscribe to the listener with your monitoring tool, etc.
}
});
var busControl = Bus.Factory.CreateUsingInMemory(cfg =>
{
});
}
That's it! Magic is done. Now you need to choose your Trace provider (for example: Application Insights, OpenTracing) and configure to read metrics from your DiagnosticSource
.
The OpenTracing.Contrib.NetCore
library subscribes to every diagnostic source under the hood it doesn't require any interaction from your side,
however it neither propagates the remote context nor injects the current context to message headers, so the trace will be
limited to local operations. Also, it won't use TraceId
and SpanId
from the Activity
even when you set the activity default id format to W3C
,
those ids will be random and cannot be associated with ActivityId
.
To enable Application Insights
, add it to the Startup
:
public void ConfigureServices(IServiceCollection services)
{
services.ConfigureTelemetryModule<DependencyTrackingTelemetryModule>((m, o) => m.IncludeDiagnosticSourceActivities.Add("Listener.Name"));
services.AddApplicationInsightsTelemetry("InstrumentationKey");
}
# Available diagnostic events
You can subscribe to different types of diagnostic events produced by MassTransit.
Below is the list of names of MassTransit diagnostic sources. Keep in mind that each
operation produces Start
and Stop
events using the Activity
. So, when a message is
consumed, you get MassTransit.Consumer.Consume.Start
event before the consumer is executed and
MassTransit.Consumer.Consume.Stop
after the message is consumed.
# Transport
- MassTransit.Transport.Send
- MassTransit.Transport.Receive
# Consumer
- MassTransit.Consumer.Consume
- MassTransit.Consumer.Handle
# Saga
- MassTransit.Saga.Send
- MassTransit.Saga.SendQuery
- MassTransit.Saga.Initiate
- MassTransit.Saga.Orchestrate
- MassTransit.Saga.Observe
- MassTransit.Saga.RaiseEvent
# Courier
- MassTransit.Activity.Execute
- MassTransit.Activity.Compensate