|
| 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 | + |
| 39 | +- Uncheck the `ServiceControl Audit` node, since this isn't required for usage reports |
| 40 | + |
| 41 | +- Choose your transport and supply the connection string |
| 42 | + |
| 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 | +>  |
| 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. |
0 commit comments