Skip to content

Commit 3bab590

Browse files
authored
add minimum installation instructions for generating usage report. (#7121)
Fixes #7105
1 parent 9a81b99 commit 3bab590

File tree

8 files changed

+84
-3
lines changed

8 files changed

+84
-3
lines changed

menu/menu.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,8 @@
140140
Url: nservicebus/release-notifications
141141
- Title: Third-party licenses
142142
Url: platform/third-party-licenses
143+
- Title: Usage Report Requirements
144+
Url: platform/throughput-report
143145

144146
- Name: NServiceBus
145147
Topics:
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
---
2+
title: Usage Report Requirements
3+
summary: Minimal setup required for generating a usage report for licensing of the Particular Service Platform.
4+
reviewed: 2025-05-08
5+
related:
6+
- nservicebus/licensing
7+
- servicepulse/usage
8+
---
9+
10+
The Particular Service Platform is licensed based on the number of NServiceBus endpoints and the message throughput of those endpoints. In order to determine these values, a monitor needs to be run over the transport broker for a representative period of time (24 hours) and a report generated from this data to be sent to Particular.
11+
12+
The minimal installation required to generate the usage report is:
13+
14+
- [ServiceControl](/servicecontrol/). Only a single [error instance](/servicecontrol/servicecontrol-instances/) is required, as this is the primary service that contains the monitoring logic.
15+
- [ServicePulse](/servicepulse/). This is the UI that interfaces with the ServiceControl service to allow users to specify which endpoints are NServiceBus related and generate the usage report to send to Particular.
16+
17+
The following methods can be used to install these requirements:
18+
19+
- Windows Only
20+
- ServiceControl through [ServiceControl Management Utility](#windows-installation-servicecontrol-servicecontrol-management-utility-scmu)
21+
- ServiceControl through [Powershell](#windows-installation-servicecontrol-powershell)
22+
- [ServicePulse](#windows-installation-servicepulse)
23+
- Linux or Windows
24+
- ServiceControl and ServicePulse through [Containers](#container-installation)
25+
26+
27+
## Windows Installation
28+
29+
### ServiceControl
30+
31+
ServiceControl is installed as a Windows service, and starts automatically. It includes an embedded RavenDB instance that stores all the data required for generating usage reports (and any other functions of ServiceControl that you may use).
32+
33+
#### ServiceControl Management Utility (SCMU)
34+
35+
- [Download](https://particular.net/start-servicecontrol-download) the latest SCMU
36+
- Run the executable. This will require Admin priveleges
37+
- Add a new ServiceControl and Audit instance
38+
![Add new ServiceControl and Audit Instance](scmu-1.png 'width=500')
39+
- Uncheck the `ServiceControl Audit` node, since this isn't required for usage reports
40+
![Uncheck Audit Instance](scmu-2.png 'width=500')
41+
- Choose your transport and supply the connection string
42+
![Choose transport](scmu-3.png 'width=500')
43+
> [!WARNING]
44+
> By default, the ServiceControl instance will immediately start reading from the `error` queue when it starts. If this is not desired, e.g. if you have another process that monitors the error queue, then expand the `ServiceControl` node and change the value of `Error Queue Name` to a non-existing queue name before clicking 'Add'
45+
> ![Change Error Queue Name](scmu-4.png 'width=500')
46+
> Alternatively, set the [`SERVICECONTROL_INGESTERRORMESSAGES`](/servicecontrol/servicecontrol-instances/configuration.md#recoverability-servicecontrolingesterrormessages) environment variable to `false` before clicking `Add`
47+
- Click 'Add'
48+
49+
#### Powershell
50+
51+
- Ensure you meet the [prerequisites](/servicecontrol/servicecontrol-instances/deployment/powershell.md#prerequisites)
52+
- Install and import the [Particular.ServiceControl.Management module](/servicecontrol/servicecontrol-instances/deployment/powershell.md#installing-and-using-the-powershell-module)
53+
- Run the [New-ServiceControlInstance cmdlet](/servicecontrol/servicecontrol-instances/deployment/powershell.md#error-instance-cmdlets-and-aliases-deploying-an-error-instance)
54+
- Most of the parameters can be left as per the example, with the `-Transport` and `-ConnectionString` parameters set according to your environment.
55+
> [!WARNING]
56+
> By default, the ServiceControl instance will immediately start reading from the `error` queue when it starts. If this is not desired, e.g. if you have another process that monitors the error queue, either set the `-ErrorQueue` parameter to a non-existing queue name, or set the [`SERVICECONTROL_INGESTERRORMESSAGES`](/servicecontrol/servicecontrol-instances/configuration.md#recoverability-servicecontrolingesterrormessages) environment variable to `false` before running the cmdlet
57+
58+
### ServicePulse
59+
60+
Follow the [installation instructions](/servicepulse/installation.md) and ensure ServicePulse is [configured](/servicepulse/host-config.md#configuring-connections-via-the-servicepulse-ui) to point to the port of the ServiceControl instance installed above.
61+
62+
## Container Installation
63+
64+
When installing ServiceControl directly, through one of the [above solutions](#windows-installation), it includes an embedded RavenDB instance that stores all the data required for generating usage reports (and any other functions of ServiceControl that you may use). When using containers, a separate RavenDB database is required. This can also be containerized, allowing for a single docker compose to install all dependencies. An example of this can be found in the [Platform Container Examples repository](https://github.com/Particular/PlatformContainerExamples).
65+
66+
The containers required for generating a usage report are:
67+
68+
- [RavenDB](/servicecontrol/ravendb/containers.md)
69+
- Alternatively another RavenDB source can be used. The [connection string](/servicecontrol/servicecontrol-instances/deployment/containers.md#required-settings-ravendb-connection-string) must be supplied when installing ServiceControl
70+
- [ServiceControl](/servicecontrol/servicecontrol-instances/deployment/containers.md)
71+
> [!WARNING]
72+
> By default, the ServiceControl instance will immediately start reading from the `error` queue when it starts. If this is not desired, e.g. if you have another process that monitors the error queue, then one of the following parameters should be supplied to the `docker run` command
73+
> - -e SERVICEBUS_ERRORQUEUE=<<name of non-existing queue, e.g. `errornotused`>>
74+
> - -e SERVICECONTROL_INGESTERRORMESSAGES=false
75+
- [ServicePulse](/servicepulse/containerization/)
76+
77+
### Cloud
78+
79+
When hosting containers in the cloud, it is suggested to use [RavenDB Cloud](https://ravendb.net/cloud) to host the database. This is because the [storage requirements](https://ravendb.net/docs/article-page/6.2/csharp/start/installation/deployment-considerations#storage-considerations) of RavenDB generally cannot be met on most cloud offerings.
35.5 KB
Loading
21.9 KB
Loading
35.7 KB
Loading
30.5 KB
Loading

servicecontrol/common-includes/containers/servicecontrol-container-ravenconnectionstring.include.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@ When connecting to an external RavenDB instance, the RavenDB client certificate
1919
1. An environment variable `RAVENDB_CLIENTCERTIFICATEBASE64` can be used to supply the client certificate as a Base64-encoded string.
2020
2. An environment variable `RAVENDB_CLIENTCERTIFICATEPATH` can be used to identify the local path to a certificate that has added to the container via a mounted volume.
2121
3. The app will attempt to load the certificate from `/app/raven-client-certificate.pfx`.
22-
4. The app will attempte to access the database without a client certificate.
22+
4. The app will attempt to access the database without a client certificate.
2323

2424
In any of the above cases, the certificate can be password-protected, in which case the password can be supplied using the `RAVENDB_CLIENTCERTIFICATEPASSWORD` environment variable.

servicecontrol/servicecontrol-instances/deployment/containers.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,15 +54,15 @@ Using `--setup-and-run` removes the need to repeat a setup process when the cont
5454

5555
## Required settings
5656

57-
_Environment variable:_ `REMOTEINSTANCES`
58-
5957
The following environment settings are required to run a ServiceControl error instance.
6058

6159
include: servicecontrol-container-transport
6260
include: servicecontrol-container-ravenconnectionstring
6361

6462
### Remote instances
6563

64+
_Environment variable:_ `REMOTEINSTANCES`
65+
6666
A JSON structure that provides URLs for the Error instance to access any [remote audit instances](/servicecontrol/servicecontrol-instances/remotes.md). When requesting audit data via the ServiceControl API, the Error instance will communicate to each of the remote audit instances in a scatter-gather pattern and then return the combined results. The URLs must be accessible by the Error instance directly, not constructed to be accessible from an external browser.
6767

6868
include: servicecontrol-container-license

0 commit comments

Comments
 (0)