ServicePulse

ServicePulse

Docker app from Syknight's Repository

Overview

Particular Software ServicePulse The 'particular/servicepulse' image is part of the Particular Service Platform, which includes the following images: - particular/servicecontrol-ravendb | The database used by the error/audit instances (https://docs.particular.net/servicecontrol/ravendb/containers) - particular/servicecontrol | The primary/error instance, which includes error handling and recoverability (https://docs.particular.net/servicecontrol/servicecontrol-instances/) - particular/servicecontrol-audit | The audit instance, which stores audit data, and can be scaled out to multiple audit instances (https://docs.particular.net/servicecontrol/audit-instances/) - particular/servicecontrol-monitoring | The monitoring instance, which tracks runtime information like throughput, queue length, and other metrics (https://docs.particular.net/servicecontrol/monitoring-instances/) - particular/servicepulse | The web application that provides a front end for recoverability and monitoring features (https://docs.particular.net/servicepulse/)

ServicePulse Current Version

ServicePulse provides real-time production monitoring for distributed applications. It monitors the health of a system's endpoints, detects processing errors, sends failed messages for reprocessing, and ensures the specific environment's needs are met, all in one consolidated dashboard.

ServicePulse is part of the Particular Service Platform, which includes NServiceBus and tools to build, monitor, and debug distributed systems.

See the ServicePulse documentation for more information.

Setting up the project for development

Setting up ServiceControl Main and ServiceControl Monitoring instances

ServicePulse mainly presents data provided by ServiceControl and ServiceControl Monitoring instances.

The URLs for both services can be set in src/Frontend/public/js/app.constants.js.

Setting up package managers

ServicePulse uses npm and Bower as package managers. For the solution to work, dependencies must be downloaded before launching the ServicePulse website.

Install dependencies

Install the following dependencies if you don't have them installed yet.

  • Git for Windows
  • Node.js
    • NOTE: It is good practice when installing or updating node.js on your local environment also to check and make sure that the node.js version for the ci.yml and release.yml workflows match the version of your local environment. Look for the step name: Set up Node.js

Set development environment

Step 0 - Using a suitable IDE for frontend development

Even though Visual Studio or Rider seem to be adequate IDEs for front-end development, they tend to be unreliable with the latest front-end frameworks, linting, and formatting. Because of that, we have extra recommendations to help you succeed even more at front-end development.

Step 1 - run the Vue.js development server

Navigate to ServicePulse\src\Frontend and:

  • run npm install to install all the npm dependencies
  • run the following command npm run dev (this will host a dev server on port 5173 and start watching for changes in /Frontend directory)

If npm run dev fails with an error related to git submodules not being correctly configured, run the npm install command again to ensure all required dependencies are available, and then run npm run dev.

Step 2 - open the browser

After doing the above steps, navigate to the URL presented by the execution of the Vue.js application to see the ServicePulse application.

Running automated tests

The frontend automated tests utilize Vitest as the testing framework and testing-library for testing utilities. Vitest provide two modes: watch mode in the development environment and run mode in the CI environment by default. Watch mode instantly re-runs relevant tests upon file save, providing immediate feedback during development.

Before running test, ensure you've set up the development server. Navigate to ServicePulse\src\Frontend and run npm install to install all the npm dependencies.

Running component tests

Navigate to ServicePulse\src\Frontend and run:

npm run test:component

This command runs all the component test files *.spcs.ts in the directory ServicePulse\src\Frontend\src and its subdirectories. With watch mode enabled it allows for efficient test development, as only the relevant tests are re-run on file save.

Running application tests

Navigate to ServicePulse\src\Frontend and run:

npm run test:application

Similar to component tests, this command runs all the application test files *.spcs.ts in the directory ServicePulse\src\Frontend\test and its subdirectories.

Running test coverage

Navigate to ServicePulse\src\Frontend and run:

npm run test:coverage

This command generates a report indicating the percentage of statements, branches, function, and lines covered by tests. Additionally, it identifies uncovered line numbers.

Provided npm scripts

Vue.js

  • dev - runs vite that starts the development server doing hot reload over source files
  • build - runs build script that outputs files to ..\app folder
  • lint - checks with eslint all vue, ts, and js files. See IDE setup to catch errors on save, or run manually before committing.
  • type-check - runs TypeScript in no emit mode

Vitest

  • test:application - runs all the application tests located in the Frontend/test folder.
  • test:component - runs tests all the component tests located in the Frontend/src folder and any subdirectories.
  • test:coverage - runs the test coverage report on the files defined in vitest.config.ts

Running from ServicePulse.Host.exe

It is possible to run ServicePulse directly via ServicePulse.Host.exe.

Step 1 - reserve URL ACL

ServicePulse.Host.exe depends on a self-hosted web server. A URL ACL reservation must be set up before the project can run. Either run Visual Studio with Administrative privileges or run the following command to add the required URL ACL reservation:

add urlacl url=URL

Where URL is the configured URL on the local machine.

Step 2 - build ServicePulse site

Execute the build script from the command line:

PowerShell -File .\build.ps1

[!NOTE] It might be necessary to change the PowerShell execution policy using Set-ExecutionPolicy Unrestricted -scope UserPolicy

Step 3 - run ServicePulse.Host.exe

Build and run the ServicePulse.Host project in the IDE.

Supported browser versions

ServicePulse is supported on the following desktop browser versions:

Container image development

A Dockerfile for ServicePulse resides within the src/ServicePulse folder. The container images are all built as part of the release workflow and staged in the Github Container Registry. For branches with PRs, the image will be tagged with the PR number, e.g. pr-1234.

Integrated ServicePulse

Since version 2.6, ServicePulse is shipped as a package (Particular.ServicePulse.Core) for inclusion in ServiceControl to support the integrated ServicePulse feature.

To test this feature, either:

a. Create a local nuget repository called "local packages" and push builds of ServicePulse into it. ServiceControl should be able to find these packages. b. Manually run the release action. This pushes a pre-release copy of the package to the particular testing feed.

Install ServicePulse on Unraid in a few clicks.

Find ServicePulse in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for ServicePulse Review the template variables and paths Click Install

Requirements

See "https://docs.particular.net/servicepulse/containerization/" and "https://github.com/Particular/PlatformContainerExamples".

Download Statistics

238,805
Total Downloads
12,654
This Month
12,127
Avg / Month

Total Downloads Over Time

Loading chart...

Related apps

Explore more like this

Explore all

Details

Repository
particular/servicepulse:latest
Last Updated2026-06-19
First Seen2025-08-05

Runtime arguments

Network
bridge
Shell
sh
Privileged
false

Template configuration

SERVICECONTROL_URLVariable

The ServiceControl URL points to the ServiceControl (Error) instance URL. ServicePulse requests to /api/* will be proxied to this URL in order to fetch ServiceControl data used by ServicePulse.

Default
http://servicecontrol-error:33333
Value
http://servicecontrol-error:33333
MONITORING_URLVariable

The Monitoring URL points to the ServiceControl Monitoring instance URL. ServicePulse requests to /monitoring-api/* will be proxied to this URL in order to fetch monitoring data used by ServicePulse.

Default
http://servicecontrol-monitoring:33633
Value
http://servicecontrol-monitoring:33633
Web UI PortPorttcp

9090 is the canonical port exposed by ServicePulse within the container, though this port can be mapped to any desired external port.

Target
9090
Default
9090
Value
9090