Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ $serviceControlInstance = New-ServiceControlInstance `
-Port 33334 `
-DatabaseMaintenancePort 33335 `
-Transport MSMQ `
-EnableIntegratedServicePulse `
-ErrorQueue error1 `
-ErrorRetentionPeriod 10:00:00:00
# endcode
Expand Down
2 changes: 2 additions & 0 deletions menu/menu.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1576,6 +1576,8 @@
Articles:
- Title: ServiceControl Error instances
Url: servicecontrol/servicecontrol-instances
- Title: Integrated ServicePulse
Url: servicecontrol/servicecontrol-instances/integrated-servicepulse
- Title: Deployment
Url: servicecontrol/servicecontrol-instances/deployment
Articles:
Expand Down
14 changes: 11 additions & 3 deletions platform/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,17 +52,25 @@ ServiceControl, along with ServicePulse, can be hosted in Visual Studio, with no

ServicePulse is a single page application which can be deployed in multiple ways:

#### Windows service
#### Integrated in ServiceControl

ServiceControl version 6.13 and above includes [integrated ServicePulse](/servicecontrol/servicecontrol-instances/integrated-servicepulse.md) and can host ServicePulse from a ServiceControl [Error instance](/servicecontrol/servicecontrol-instances/) host.

#### Separate from ServiceControl

ServicePulse can be installed as a separate application from ServiceControl, although it still must be connected to a ServiceControl Error instance to function.

##### Windows service

ServicePulse can be installed using a dedicated [installation package](https://particular.net/downloads), which deploys ServicePulse as a Windows service host.

ServicePulse can be installed more than once on a single machine, with each instance listening on its own port. This is done by [specifying appropriate arguments during installation](/servicepulse/installation.md#installation-available-installation-parameters).

#### Container (Linux only)
##### Container (Linux only)

A container image for ServicePulse is pushed to [Docker Hub](https://hub.docker.com/u/particular) creating the ability to deploy ServicePulse on a Linux and [OCI compatible](https://opencontainers.org/) container host, e.g. Docker or Kubernetes.

#### Extracted
##### Extracted

Using the [installation package](https://particular.net/downloads), ServicePulse can be [extracted as a set of HTML, JavaScript, and CSS files](/servicepulse/install-servicepulse-in-iis.md#basic-setup-detailed-steps) and subsequently deployed to any web server.

Expand Down
2 changes: 1 addition & 1 deletion servicecontrol/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ For more information on how ServiceControl and ServicePulse work together, refer
There are three types of instances that can be created:

- [Error instances](/servicecontrol/servicecontrol-instances/)
This is the most commonly used ServiceControl instance and indispensable to ensure the smooth operation of an NServiceBus system. Together with ServicePulse, it provides the ability to visualize and retry failed messages.
This is the most commonly used ServiceControl instance and is indispensable to ensure the smooth operation of an NServiceBus system. Together with ServicePulse (which can be [hosted by the ServiceControl Error instance](/servicecontrol/servicecontrol-instances/integrated-servicepulse.md)), it provides the ability to visualize and retry failed messages.
- [Audit instances](/servicecontrol/audit-instances/)
Audit instances provide valuable information about the message flow through a system. Among other things, this is used by ServicePulse to help visualize a distributed system.
- [Monitoring instances](/servicecontrol/monitoring-instances/)
Expand Down
5 changes: 5 additions & 0 deletions servicecontrol/security/configuration/cors.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@ CORS configuration is required when:
- ServicePulse is hosted on a different domain than ServiceControl
- ServiceControl is accessed through a reverse proxy with a different domain

CORS configuration is *not* required when:

- ServicePulse is [hosted by ServiceControl](/servicecontrol/servicecontrol-instances/integrated-servicepulse.md)
- ServicePulse is using the [internal reverse proxy](/servicepulse/containerization/#settings-enable-reverse-proxy).

## Configuration examples

To restrict access to only your ServicePulse domain, using the primary ServiceControl instance:
Expand Down
16 changes: 16 additions & 0 deletions servicecontrol/servicecontrol-instances/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,22 @@ Run [ServiceControl error instance in maintenance mode](/servicecontrol/ravendb/
| --- | --- |
| bool | False |

### ServiceControl/EnableIntegratedServicePulse

_Added in version 6.13.0_

Set to `true` to enable [integrated ServicePulse](/servicecontrol/servicecontrol-instances/integrated-servicepulse.md) included in ServiceControl versions 6.13 and above.

| Context | Name |
| --- | --- |
| **Environment variable** | `SERVICECONTROL_ENABLEINTEGRATEDSERVICEPULSE` |
| **App config key** | `ServiceControl/EnableIntegratedServicePulse` |
| **SCMU field** | `Enable integrated ServicePulse` |

| Type | Default value |
| --- | --- |
| bool | `false` |

## [Authentication](/servicecontrol/security/configuration/authentication.md)

These settings configure [authentication using OAuth 2.0 and OpenID Connect](/servicecontrol/security/). Refer to the [hosting and security guide](/servicecontrol/security/hosting-guide.md) or [authentication configuration examples](/servicecontrol/security/configuration/authentication.md#identity-provider-setup-configuration-examples) for additional information.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ docker run -d --name servicecontrol -p 33333:33333 \
-e CONNECTIONSTRING="host=rabbitmq" \
-e RAVENDB_CONNECTIONSTRING="http://servicecontrol-db:8080" \
-e REMOTEINSTANCES='[{"api_uri":"http://audit:44444/api"}]' \
-e ENABLE_INTEGRATED_SERVICEPULSE="true" \
particular/servicecontrol:latest
```

Expand Down Expand Up @@ -65,6 +66,12 @@ _Environment variable:_ `REMOTEINSTANCES`

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.

### Enable integrated ServicePulse

_Environment variable:_ `ENABLE_INTEGRATED_SERVICEPULSE`

A boolean value specifying whether to enable the [integrated ServicePulse](/servicecontrol/servicecontrol-instances/integrated-servicepulse.md) for this Error instance.

include: servicecontrol-container-license

## Ports
Expand Down
1 change: 1 addition & 0 deletions servicecontrol/servicecontrol-instances/deployment/scmu.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ There are [three types](/servicecontrol/#servicecontrol-instance-types) of Servi
This queue is important to endpoints that send error and audit messages to these ServiceControl instances, as well as [plugins](/servicecontrol/servicecontrol-instances/configuration.md#host-settings-servicecontrolinstancename).
6. If needed, configure [forwarding queues](/servicecontrol/errorlog-auditlog-behavior.md).
7. Full-text search can be turned off for [performance reasons](/servicecontrol/capacity-and-planning.md#storage-performance) if it's not needed.
8. Disable [integrated ServicePulse](/servicecontrol/servicecontrol-instances/integrated-servicepulse.md) if it is not needed.

A monitoring instance differs from error and audit instances in its configuration:

Expand Down
47 changes: 47 additions & 0 deletions servicecontrol/servicecontrol-instances/integrated-servicepulse.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
---
title: Integrated ServicePulse
summary: A guide to hosting ServicePulse and ServiceControl within the same host process.
reviewed: 2026-02-16
component: ServiceControl
---

Version 6.13 of ServiceControl and above include integrated ServicePulse. Integrated ServicePulse is hosted in the same host process as the ServiceControl Error instance, and is automatically configured to use it.

Benefits:
- No need for a standalone ServicePulse installation. Install and manage ServiceControl and ServicePulse in one place.
- No need to configure ServicePulse with the ServiceControl Error instance url. Integrated ServicePulse is preconfigured to connect to the ServiceControl installation it runs in.
- No need to upgrade ServicePulse. Each new version of ServiceControl includes the latest ServicePulse. Every time ServiceControl is upgraded, integrated ServicePulse is upgraded as well.

Drawbacks:
- Can not use built-in ServicePulse reverse proxy. Enable [security features of ServiceControl](/servicecontrol/security/) to secure access to ServiceControl data.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Might be worth adding something to this page about not having (or needing, really) the built-in reverse proxy if using integrated SP - https://docs.particular.net/servicepulse/containerization/#settings-enable-reverse-proxy

- Can not use a single ServicePulse instance to control multiple ServiceControl installations. Each ServiceControl Error instance can be configured with a dedicated integrated ServicePulse.

> [!NOTE]
> Standalone ServicePulse installations continue to function normally and can be used in conjunction with integrated ServicePulse.

## Enable integrated ServicePulse

Integrated ServicePulse can be [enabled in the ServiceControl Error instance configuration](/servicecontrol/servicecontrol-instances/configuration.md#host-settings-servicecontrolenableintegratedservicepulse).

When upgrading an existing ServiceControl Error instance via ServiceControl Management, the user is prompted to enable integrated ServicePulse.

![ServiceControl Management Error instance upgrade screen](/servicecontrol/servicecontrol-instances/upgrade-enable-integrated-servicepulse.png)

When upgrading an existing ServiceControl Error instance via Powershell or docker, update the configuration manually to enable integrated ServicePulse.

> [!NOTE]
> Once integrated ServicePulse is enabled, standalone ServicePulse installations are no longer needed and can be removed.

## Configuring integrated ServicePulse

Integrated ServicePulse shares settings with the ServiceControl Error instance it is hosted by (the hosting instance).

- All host settings (such as [host name](/servicecontrol/servicecontrol-instances/configuration.md#host-settings-servicecontrolhostname) and [port number](/servicecontrol/servicecontrol-instances/configuration.md#host-settings-servicecontrolport)) are shared with the hosting instance. Integrated ServicePulse is available at the root url (`http://localhost:33333/` in a default installation).
- Most security settings are shared with the hosting instance. There is no need to enable [header forwarding](/servicepulse/security/configuration/forward-headers.md) for ServicePulse specifically, and [CORS](/servicecontrol/security/configuration/cors.md) is no longer required
- [ServicePulse specific authorization configuration](/servicecontrol/servicecontrol-instances/configuration.md#authentication-servicecontrolauthentication-servicepulse-clientid) is still required.
- Integrated ServicePulse is automatically configured to connect to the hosting instance. This configuration is read-only and cannot be changed.
- Connection to a ServiceControl Monitoring instance can be [configured via the ServicePulse UI](/servicepulse/host-config.md#configuring-connections-via-the-servicepulse-ui).

## Upgrade integrated ServicePulse

There is no need to upgrade integrated ServicePulse separately. Each release of ServiceControl contains the latest version of ServicePulse, and each new release of ServicePulse will trigger a release of ServiceControl. Upgrading the ServiceControl Error instance will upgrade integrated ServicePulse automatically.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions servicepulse/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ ServicePulse uses information provided by ServiceControl. To use ServicePulse, f
- For message flow visualisation and viewing successful messages, one or more [audit instances](/servicecontrol/audit-instances/) are required.
- For monitoring throughput and other metrics, a [monitoring instance](/servicecontrol/monitoring-instances/) is required.

[ServiceControl version 6.13 and above include integrated ServicePulse](/servicecontrol/servicecontrol-instances/integrated-servicepulse.md).

#### Relationship between ServicePulse, ServiceControl, Monitoring, and Endpoints

```mermaid
Expand Down
2 changes: 1 addition & 1 deletion servicepulse/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ related:
---

> [!NOTE]
> It is also possible to run ServicePulse in a [container](containerization).
> This guide explains how to install ServicePulse using the standalone installer package. It is also possible to run ServicePulse [in ServiceControl](/servicecontrol/servicecontrol-instances/integrated-servicepulse.md) or in a [container](containerization).

## Prerequisites

Expand Down
4 changes: 3 additions & 1 deletion servicepulse/security/configuration/forward-headers.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ related:
---

> [!NOTE]
> This page is **not** relevant if the [ServicePulse static files have been extracted](/servicepulse/install-servicepulse-in-iis.md), and is being hosted in anything other than the [Container](/servicepulse/containerization/) or [Windows Service](/servicepulse/installation.md) hosting options provided. Forward header configuration is only required if using a reverse proxy.
> This page is **not** relevant if:
> - [integrated ServicePulse](/servicecontrol/servicecontrol-instances/integrated-servicepulse.md) is used. Integrated ServicePulse uses [the forward header configuration of the ServiceControl Error instance](/servicecontrol/security/configuration/forward-headers.md) that hosts it.
> - the [ServicePulse static files have been extracted](/servicepulse/install-servicepulse-in-iis.md), and is being hosted in anything other than the [Container](/servicepulse/containerization/) or [Windows Service](/servicepulse/installation.md) hosting options provided. Forward header configuration is only required if using a reverse proxy.

When ServicePulse is deployed behind a reverse proxy that terminates SSL/TLS (like nginx, Traefik, or a cloud load balancer), you need to configure forwarded headers so ServicePulse correctly understands the original client request.

Expand Down
4 changes: 3 additions & 1 deletion servicepulse/security/configuration/tls.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ related:
---

> [!NOTE]
> This page is **not** relevant if the [ServicePulse static files have been extracted](/servicepulse/install-servicepulse-in-iis.md), and is being hosted in anything other than the [Container](/servicepulse/containerization/) or [Windows Service](/servicepulse/installation.md) hosting options provided. If using [authentication](/servicepulse/security/configuration/authentication.md), it is recommended to use TLS encryption.
> This page is **not** relevant if:
> - [integrated ServicePulse](/servicecontrol/servicecontrol-instances/integrated-servicepulse.md) is used. Integrated ServicePulse will use [the TLS configuration of the ServiceControl Error instance](/servicecontrol/security/configuration/tls.md) that hosts it.
> - the [ServicePulse static files have been extracted](/servicepulse/install-servicepulse-in-iis.md), and is being hosted in anything other than the [Container](/servicepulse/containerization/) or [Windows Service](/servicepulse/installation.md) hosting options provided. If using [authentication](/servicepulse/security/configuration/authentication.md), it is recommended to use TLS encryption.

ServicePulse can be configured to use HTTPS directly, enabling encrypted connections without relying on a reverse proxy for SSL termination.

Expand Down