ServiceControl is the backend service for ServicePulse, ServiceInsight, and third-party integration. It collects and stores information from monitored NServiceBus endpoints and exposes this information for consumption by various clients via a HTTP API.
ServiceControl provides the monitoring capability by analyzing the configured error and audit queues. It can extract information like endpoint name, queue name and, in case of error messages, the exception stack trace, etc. This information is stored in an internal database.
To allow ServiceControl to monitor endpoints:
ServiceControl must be installed and at least one instance must be configured to use the same transport as the endpoints.
Every endpoint must be configured for auditing with the same audit queue as ServiceControl.graph LR EndpointA --> AuditQ EndpointB --> AuditQ EndpointC --> AuditQ AuditQ[audit] --> ServiceControl ServiceControl .-> AuditLog[audit.log]
Every endpoint must be configured for recoverability with the same error queue as ServiceControl.graph LR EndpointA --> ErrorQ EndpointB --> ErrorQ EndpointC --> ErrorQ ErrorQ[error] --> ServiceControl ServiceControl .-> ErrorLog[error.log]
In addition to ingesting audit and error information, ServiceControl can process other types of information generated by monitoring and debugging components:
Endpoints must be configured appropriately to allow ServiceControl to gather this information:
- Auditing must be enabled to collect data related to individual messages.
- Recoverability must be enabled to store information about message processing failures.
- Heartbeats, custom checks, and other plugins must be installed in endpoints.
ServiceControl detects important system events and publishes them as integration events to subscribed endpoints.
The ServiceControl Transport Adapter decouples ServiceControl from the specifics of endpoint transport configuration to support scenarios where endpoints use physical routing features not compatible with ServiceControl or where endpoints use mixed transports or multiple instances of a message broker.