Getting Started
Architecture
NServiceBus
Transports
Persistence
ServiceInsight
ServicePulse
ServiceControl
Samples

Metrics

NuGet Package: NServiceBus.Metrics (5.x)
Target Version: NServiceBus 9.x

The Metrics plugin collects metric data about the performance of running endpoints. This data can be forwarded to a ServiceControl monitoring instance and then viewed in ServicePulse.

To see performance monitoring in action, try the standalone demo.

For a full list of the performance metrics captured and their formal definitions, see Metric definitions.

graph LR subgraph Endpoint Metrics[Metrics<br>Plugin] -- Metric Data --> MetricsSC[Metrics<br>ServiceControl<br>Plugin] end MetricsSC -- Metric Data --> MQ MQ[Metrics Queue] -- Metric Data --> Monitoring[ServiceControl<br>Monitoring<br>Instance] Monitoring -- Endpoint<br>performance<br>data --> ServicePulse

Set up metrics

To enable collecting metrics in an environment:

  1. Install a ServiceControl monitoring instance
  2. Install and configure the ServiceControl Metrics plugin in each endpoint
  3. (MSMQ Transport only) Install the MSMQ queue length reporter in each endpoint
  4. View the performance data collected for endpoints in ServicePulse

Performance impact on system resources

A ServiceControl monitoring instance is more lightweight than a regular ServiceControl instance. Nevertheless, it is not recommended to host a monitoring instance on the same machine that is hosting production endpoint instances.

Wire usage

Each endpoint instance collects performance metrics which are buffered and then sent. A single metrics message contains a batch of values written in a compact binary format, making reporting very lightweight.

Storage usage

A Service Control Monitoring instance processes Metric. The metric data is stored in RAM only. Logfiles are still written to disk. The metrics data are stored for at most one hour. A 100MB process can hold state for at least 100 endpoint instances.

CPU usage

The metrics service is only performing simple summing aggregation logic. The CPU usage is low.

Reporting metric data to other places

Samples

Related Articles