ServiceControl is a background process that collects useful information about an NServiceBus system. It uses an audit queue to collect every message flowing through the system and an error queue to collect failed messages. It can also collect saga state changes, endpoint heartbeats, and perform custom checks using a control queue. This information is exposed to ServicePulse and ServiceInsight via an HTTP API and SignalR notifications.
ServiceControl can also be configured to collect detailed performance metrics, for display in ServicePulse.
NServiceBus endpoints can be configured to send data about their operations to a set of centralized queues that are unique to the system. A ServiceControl instance monitors these queues, and collects and processes this data. ServiceControl instances are created and managed using the ServiceControl Management Utility.
Note that data is still collected even if the ServiceControl instance is down. When it starts working again, it will process the information that was saved while it was offline.
To enable ServiceControl to gather this information, configure the endpoints appropriately:
- Enable auditing to collect all messages.
- Configure recoverability to collect failed messages.
- Install plugins to monitor endpoint health, collect saga state changes, and use custom checks.
See Optimizing ServiceControl for use in different environments for more information about practical considerations.