Skip to content

Commit 3c1d75c

Browse files
authored
Revise ServiceControl Docs: Consistent Naming & Flow Accuracy (#7425)
* add clarity to queue forwarding
1 parent 4b76375 commit 3c1d75c

File tree

6 files changed

+94
-72
lines changed

6 files changed

+94
-72
lines changed

monitoring/custom-checks/index.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Custom Checks
33
summary: Enable endpoint health monitoring by running custom code using the Custom Checks plugin and ServiceControl
4-
reviewed: 2024-10-24
4+
reviewed: 2025-07-06
55
isLearningPath: true
66
redirects:
77
- nservicebus/operations/custom-checks
@@ -14,12 +14,12 @@ The Custom Checks plugin enables endpoint health monitoring by running custom co
1414
graph LR
1515
1616
subgraph Endpoint
17-
CustomChecks[Custom Checks]
17+
CustomChecks[Custom Checks Plugin]
1818
end
1919
2020
CustomChecks -- Custom Check<br>Data --> SCQ[ServiceControl<br>Input Queue]
2121
22-
SCQ --> SC[ServiceControl<br>instance]
22+
SCQ --> SC[ServiceControl Error<br>instance]
2323
2424
SC -. Integration<br/>Events .-> Integration[Integration<br/>Event Handler]
2525

monitoring/heartbeats/index.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Heartbeats
33
summary: Use the Heartbeat plugin to monitor the health of the endpoints
4-
reviewed: 2024-10-31
4+
reviewed: 2025-07-06
55
component: Heartbeats
66
isLearningPath: true
77
versions: 'Heartbeats:*'
@@ -20,12 +20,12 @@ The Heartbeat plugin enables endpoint health monitoring by sending regular heart
2020
graph LR
2121
2222
subgraph Endpoint
23-
Heartbeats
23+
Heartbeats[Heartbeats Plugin]
2424
end
2525
2626
Heartbeats -- Heartbeat<br>Data --> SCQ
2727
28-
SCQ[ServiceControl<br>Input Queue] --> SC[ServiceControl]
28+
SCQ[ServiceControl<br>Input Queue] --> SC[ServiceControl Error Instance]
2929
3030
SC -. Integration<br/>Events .-> Integration[Integration<br/>Event Handler]
3131

monitoring/metrics/index.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Metrics
33
summary: Collect metric data about endpoint performance using the Metrics plugin
4-
reviewed: 2024-10-30
4+
reviewed: 2025-07-06
55
component: Metrics
66
versions: 'Metrics:*'
77
related:
@@ -28,12 +28,11 @@ end
2828
2929
MetricsSC -- Metric Data --> MQ
3030
31-
MQ[Metrics Queue] -- Metric Data --> Monitoring[ServiceControl<br>Monitoring<br>Instance]
31+
MQ[Monitoring Queue] -- Metric Data --> Monitoring[ServiceControl<br>Monitoring<br>Instance]
3232
3333
Monitoring -- Endpoint<br>performance<br>data --> ServicePulse
3434
```
3535

36-
3736
## Set up metrics
3837

3938
To enable collecting metrics in an environment:

servicecontrol/errorlog-auditlog-behavior.md

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,39 @@
11
---
22
title: ServiceControl Forwarding Log Queues
33
summary: Details of the ServiceControl audit and error configuration and forwarding behavior
4-
reviewed: 2025-06-27
4+
reviewed: 2025-07-25
55
---
66

77
## Audit and error queues
88

9-
ServiceControl consumes messages from the audit and error queues and stores these messages locally in its own embedded database. These input queues names are specified at install time.
9+
ServiceControl Error and Audit instances consume messages from endpoint-defined `audit` and `error` queues. These are specified during instance setup and ingested through the instance's configured input queues, such as `Particular.ServiceControl` and `Particular.ServiceControl.Audit`. Once received, messages are persisted to ServiceControl's embedded RavenDB database. These input queues names are specified at install time.
1010

11-
ServiceControl can also forward these messages to two log queues:
11+
Optionally, ServiceControl can forward these messages to external log queues:
1212

13-
* Error messages are optionally forwarded to the _error_ log queue. Default: `error.log`.
14-
* Audit messages are optionally forwarded to the _audit_ log queue. Default: `audit.log`.
13+
* Error messages are optionally forwarded to the _error_ log queue. Default: `error.log`.
14+
* Audit messages are optionally forwarded to the _audit_ log queue. Default: `audit.log`.
1515

16-
This forwarding behavior can be enabled or disabled through ServiceControl Management.
16+
This forwarding behavior is controlled via ServiceControl Management and can be enabled or disabled as needed.
1717

1818
![](managementutil-queueconfig.png 'width=500')
1919

2020
## Processing failures are not forwarded immediately
2121

22-
Failed imports are not forwarded to the error log queue immediately. These will be stored in ServiceControl as Failed Imports or in the error queue of the ServiceControl instance type. Messages are forwarded by ServiceControl only after it is successfully stored in its datebase.
22+
When forwarding is enabled, ServiceControl does not forward [failed imports](/servicecontrol/import-failed-messages.md) to log queues immediately. It first attempts to ingest the messages from the error or audit queues to persist them in its embedded RavenDB database. Only after the message is successfully stored, does ServiceControl forward a copy of the messages to the configured log queues (error.log and/or audit.log). If the message ingestion fails (e.g., due to message corruption, transport issues , invalid headers etc.) then the message is not forwarded. Instead it is stored internally in the database under the `FailedAuditImports` and `FailedErrorImports` collections. It may also be routed to the ServiceControl's internal error queue (Particular.ServiceControl.Error).
2323

24-
If messages must be forwarded immediately, even if ServiceControl cannot process the messages, the solution is to invert the processing order. Failed messages should be sent to a `process_errors` queue. A custom process will read from the `process_errors` queue, then forward the messages to the `error` queue that ServiceControl will process.
24+
If immediate forwarding is required, regardless of whether ServiceControl can ingest the message or not, the solution is to invert the processing order. The endpoints are configured to send failed messages to a `process_errors` queue. A custom processor will read from this `process_errors` queue and can then forward the messages to the `error` queue that ServiceControl will process.
2525

2626
The same can be done for audit messages.
2727

28-
Forwarding by ServiceControl:
28+
Forwarding by ServiceControl(default):
2929

3030
"error" -> ServiceControl -> "error.log" -> Custom Processor
3131

32-
Forwarding by Custom Processor:
32+
Forwarding by Custom Processor(inverted model):
3333

3434
"error" -> Custom Processor -> "error.log" -> ServiceControl
3535

36-
This gives the custom processor control over message handling before ServiceControl does for audit and error processing.
37-
36+
This inverted model gives external processors pre-ingestion control over message behavior, including filtering, tagging, and early forwarding. It can be similarly applied to audit messages.
3837

3938
## Error and audit log queues
4039

servicecontrol/how.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: How does ServiceControl work?
33
summary: An overview of how ServiceControl collects and processes messages and data from an NServiceBus system
4-
reviewed: 2025-02-14
4+
reviewed: 2025-07-06
55
---
66

77
ServiceControl is a background process that will collect and store data and make it available via an HTTP API to ServicePulse and ServiceInsight.
@@ -23,21 +23,21 @@ graph LR
2323
end
2424
2525
Audit -- Audit<br>data --> AuditQ(Audit queue)
26-
AuditQ --> ServiceControlAudit[ServiceControl<br>audit instance]
27-
ServiceControlAudit --> AuditLog(Audit.Log<br>queue)
26+
AuditQ --> ServiceControlAudit[ServiceControl<br>Audit Instance]
27+
ServiceControlAudit --> AuditLog(audit.log<br>queue)
2828
ServiceControlAudit -. Integration<br>events .-> Watchers
2929
3030
Plugins -- Plugin data --> SCQ
3131
Plugins -- SagaAudit<br>data --> AuditQ(Audit queue)
32-
SCQ(ServiceControl<br>queue) --> ServiceControlError
32+
SCQ(ServiceControl<br> input queue<br>Particular.ServiceControl) --> ServiceControlError
3333
3434
Error -- Error<br>data --> ErrorQ(Error queue)
35-
ErrorQ --> ServiceControlError[ServiceControl<br>error instance]
36-
ServiceControlError --> ErrorLog(Error.Log<br>queue)
35+
ErrorQ --> ServiceControlError[ServiceControl<br>Error Instance]
36+
ServiceControlError --> ErrorLog(error.log<br>queue)
3737
ServiceControlError -. Integration<br>events .-> Watchers[Subscribers]
3838
39-
Monitoring --> MonQ(Monitoring queue)
40-
MonQ --> ServiceControlMonitoring[Monitoring instance]
39+
Monitoring --> MonQ(Monitoring queue<br>Particular.Monitoring)
40+
MonQ --> ServiceControlMonitoring[ServiceControl<br>Monitoring Instance]
4141
4242
classDef Endpoints fill:#00A3C4,stroke:#00729C,color:#FFFFFF
4343
classDef ServiceControlInstance fill:#A84198,stroke:#92117E,color:#FFFFFF,stroke-width:4px

0 commit comments

Comments
 (0)