Releases: Particular/ServicePulse
1.2.0
As part of this release we had 81 commits which resulted in 12 issues being closed.
Improvements
#177 Failed messages are now grouped by exception type and failed line of code
When a Failed Message is detected it is bundled into a group based on the type of Exception that was thrown and the method in the source code that it was thrown from.
All of the messages with a Failure Group can be retried or archived at once from the Failure Group screen. To see a list of messages within a Failure Group click the the title of the group.
See Failed Message Monitoring in ServicePulse for more information.
NOTE: This feature requires ServiceControl version 1.6 or higher.
#183 "Endpoints Overview" and "Configuration" screens are now displaying their lists in alphabetically order
When you have more than a few endpoints, this quickly becomes unmanageable.
By sorting these lists by default, it becomes easier to manage and browse the lists.
#180 Failed messages to display UNKNOWN when data is missing instead of blank or minimum date
When an NServiceBus endpoint receives messages from external systems such as BizTalk, TIBCO, etc. directly, the message itself will not contain regular NServiceBus headers. Without them ServiceControl cannot provide all usual information. For example, it won’t be able to determine when message was sent or what is its type.
To ensure that you are able to monitor your endpoints and have valuable metadata from ServiceControl, it becomes important as to how you integrate these messages. If for some reason failed messages will miss some metadata ServicePulse will handle it better by providing more meaningful defaults and descriptions.
Here is an example:

#171 A confirmation is now displayed when clicking the "Retry all messages" button
Confirmation when one clicks the "Retry all messages". This will prevent situations where messages are retried when the button is clicked by accident.
#170 In Failed Messages screen, word-wrap message type and destination address is now on
The failed message details cuts off long message types and destination addresses, this commit addresses this issue.
#22 Notification of a new version available is now displayed in the Dashboard
Added a footer to the dashboard of ServicePulse that displays when a new version is available.
This footer contains a hyperlink that will take you to the download page for the latest release.
Bugs
- #172 When a message is missing headers such as
TimeSent, display appropriate defaults - #169 In Failed Messages screen, when message types are not present in the metadata from ServiceControl, ServicePulse must display proper default values instead of
NULL_TYPE - #156 When upgrading ServicePulse the "config.js" file is overridden/reset
- #149 Word-wrap endpointname in endpoints screen
- #67 White rectangle appears behind notification messages on Failed Messages page
Where to get it
You can download this release from our website
1.1.1
As part of this release we had 1 issue closed.
Bugs
#150 Installer expects 'Users' group. Language specific.
In a non-English install of Windows 7 x64 I get the error "An error occurred while applying security settings. Users is not a valid user or group.", which is correct as it doesn't exist. All local groups are language specific. Manually creating the group skips the error but causes a nondescript error later. Install can't finish.
1.1.0
New Features in the Release
- Added the ability to view the header and body of failed messages
- Reworked installer and service to allow low privilege accounts to act as the service account
Improvements in this Release
- Changed the default service account to be localservice
- Messages summary statistics now updated correctly after successful retry / archive of a failed message
- CustomChecks list page now automatically updates in responsecontent in to CustomCheck updates
- Fixed issues with graphics glyphs not being shown on Internet Explorer
- Minor Content improvements
- Minor Installer improvements
As part of this release we had 8 issues closed.
What is Service Pulse?
Particular Software ServicePulse is the new operational monitoring tool for distributed applications developed using NServiceBus.
An Introduction to ServicePulse for NServiceBus provides a short ~7 minute introductory video and demo of ServicePulse capabilities and main features for this release.
Prerequisites
- .NET Framework 4.5 or later
- Particular Software ServiceControl 1.0.0 or greater (latest is best)
- Monitored NServiceBus endpoints must use NServiceBus 4.0.0 or higher
- (support for earlier releases will be added in a future release)
Installation
- Download and install ServiceControl 1.0.0 or greater
- Download and install ServicePulse 1.1.0
- The following installation parameters are used by the ServicePulse installer:
- ServicePulse Instance URI:
- Default is http://localhost:9090
- This is the localhost address and port that will be used for accessing the ServicePulse web application
- ServiceControl instance URI:
- Default is http://localhost:33333/api/
- The URI that will be accessed by ServicePulse web app in order to communicate with the ServiceControl instance
- Review ServiceControl 1.0.0 release notes for more details on installing and configuring ServiceControl for use by ServicePulse
- ServicePulse Instance URI:
- After accepting the license terms and conditions, click "Install" (installer will require elevated privileges)
- The installation process performs the following actions:
- Installs the Windows Service "Particular ServicePulse" which hosts the web application
- Open the ServicePulse web application using the default browser
- After installing ServicePulse, see the following sections to configure your existing endpoints to be monitored via ServicePulse.
HOW TO: Configure endpoints for monitoring by ServicePulse
http://docs.particular.net/Servicepulse/how-to-configure-endpoints-for-monitoring
HOW TO: Develop Custom Checks for ServicePulse
http://docs.particular.net/Servicepulse/how-to-develop-custom-checks
Troubleshooting:
1.0.1
Introduction
Particular Software ServicePulse is the new operational monitoring tool for distributed applications developed using NServiceBus.
An Introduction to ServicePulse for NServiceBus provides a short ~7 minute introductory video and demo of ServicePulse capabilities and main features for this release.
Prerequisites
- .NET Framework 4.5 or later
- Particular Software ServiceControl 1.0.0
- Monitored NServiceBus endpoints must use NServiceBus 4.0.0 or higher
- (support for earlier releases will be added in a future release)
Installation
- Download and install ServiceControl 1.0.0
- Download and install ServicePulse 1.0.0
- The following installation parameters are used by the ServicePulse installer:
- ServicePulse Instance URI:
- Default is http://localhost:9090
- This is the localhost address and port that will be used for accessing the ServicePulse web application
- ServiceControl instance URI:
- Default is http://localhost:33333/api/
- The URI that will be accessed by ServicePulse web app in order to communicate with the ServiceControl instance
- Review ServiceControl 1.0.0 release notes for more details on installing and configuring ServiceControl for use by ServicePulse
- ServicePulse Instance URI:
- After accepting the license terms and conditions, click "Install" (installer will require elevated privileges)
- The installation process performs the following actions:
- Installs the Windows Service "Particular ServicePulse" which hosts the web application
- Open the ServicePulse web application using the default browser
- After installing ServicePulse, see the following sections to configure your existing endpoints to be monitored via ServicePulse.
HOW TO: Configure endpoints for monitoring by ServicePulse
http://docs.particular.net/Servicepulse/how-to-configure-endpoints-for-monitoring
HOW TO: Develop Custom Checks for ServicePulse
http://docs.particular.net/Servicepulse/how-to-develop-custom-checks
Troubleshooting:
1.0.0
Introduction
Particular Software ServicePulse is the new operational monitoring tool for distributed applications developed using NServiceBus.
An Introduction to ServicePulse for NServiceBus provides a short ~7 minute introductory video and demo of ServicePulse capabilities and main features for this release.
Prerequisites
- .NET Framework 4.5 or later
- Particular Software ServiceControl 1.0.0
- Monitored NServiceBus endpoints must use NServiceBus 4.0.0 or higher
- (support for earlier releases will be added in a future release)
Installation
- Download and install ServiceControl 1.0.0
- Download and install ServicePulse 1.0.0
- The following installation parameters are used by the ServicePulse installer:
- ServicePulse Instance URI:
- Default is http://localhost:9090
- This is the localhost address and port that will be used for accessing the ServicePulse web application
- ServiceControl instance URI:
- Default is http://localhost:33333/api/
- The URI that will be accessed by ServicePulse web app in order to communicate with the ServiceControl instance
- Review ServiceControl 1.0.0 release notes for more details on installing and configuring ServiceControl for use by ServicePulse
- ServicePulse Instance URI:
- After accepting the license terms and conditions, click "Install" (installer will require elevated privileges)
- The installation process performs the following actions:
- Installs the Windows Service "Particular ServicePulse" which hosts the web application
- Open the ServicePulse web application using the default browser
- After installing ServicePulse, see the following sections to configure your existing endpoints to be monitored via ServicePulse.
HOW TO: Configure endpoints for monitoring by ServicePulse
http://docs.particular.net/Servicepulse/how-to-configure-endpoints-for-monitoring
HOW TO: Develop Custom Checks for ServicePulse
http://docs.particular.net/Servicepulse/how-to-develop-custom-checks
Troubleshooting:
1.0.0-Beta4
Introduction
Particular Software ServicePulse is the new operational monitoring tool for distributed applications developed using NServiceBus.
An Introduction to ServicePulse for NServiceBus provides a short ~7 minute introductory video and demo of ServicePulse capabilities and main features for this Beta release.
Prerequisites
- .NET Framework 4.5 or later
- Particular Software ServiceControl Beta 7
- Monitored NServiceBus endpoints must use NServiceBus 4.0.0 or higher
- (support for earlier releases will be added in a future release)
Installation
- Download and install ServiceControl 1.0.0 Beta 7
- Download and install ServicePulse 1.0.0 Beta 3
- The following installation parameters are used by the ServicePulse installer:
- ServicePulse Instance URI:
- Default is http://localhost:8082
- This is the localhost address and port that will be used for accessing the ServicePulse web application
- ServiceControl instance URI:
- Default is http://localhost:33333/api/
- The URI that will be accessed by ServicePulse web app in order to communicate with the ServiceControl instance
- Review ServiceControl beta 6 release notes for more details on installing and configuring ServiceControl for use by ServicePulse
- ServicePulse Instance URI:
- After accepting the license terms and conditions, click "Install" (installer will require elevated privileges)
- The installation process performs the following actions:
- Installs the Windows Service "Particular ServicePulse" which hosts the web application
- Open the ServicePulse web application using the default browser
- After installing ServicePulse, you will need to:
- Configure your NServiceBus applications endpoints
- Author and deploy Custom Checks that will be monitored by ServicePulse.
- See the following sections for detailed guidance on performing these actions
HOWTO: Configure endpoints for monitoring by ServicePulse
http://docs.particular.net/Servicepulse/how-to-configure-endpoints-for-monitoring
HOWTO: Develop Custom Checks for ServicePulse
http://docs.particular.net/Servicepulse/how-to-develop-custom-checks
Troubleshooting:
http://docs.particular.net/Servicepulse/Troubleshooting
Fixed issues
This release consist of these issues that were achieved through these commits.
Features
#97 Create a Chocolatey package
- Since chocolatey packages are limited in size the large binary component will be stored in github releases
- Host an icon online for the package. Particular/PlatformInstaller#27
- Generate the version number here as part of a build
- Support uninstall
- Make Silent
- Add logging http://www.advancedinstaller.com/user-guide/qa-log.html
#65 SP License check and user notification
User experience
Notification of licensing limitations
- As Opie is using ServicePulse, he will be notified when the installation of SP exceeds its licensing limitations
- SP licensing limitations are:
- Number of monitored (physical or virtual) servers (based on server names)
- Trial period exceeded
- SP licensing limitations are:
- The notification will be presented as a message in ServicePulse
- Message will be displayed on browser opening or on browser page refresh (Browser F5)
- The message will not be closeable (i.e. it will always be presented, until a license is intsalled and the page is refreshed)
Content trimmed. See full issue
#15 Implement endpoint configuration Indicator and management
As Opie, I want to be notified of any configuration issues that may affect the accuracy of the ServicePulse display. I want to know when I need to update, reconfigure an existing endpoint, or stop monitoring an obsolete endpoint
Visualization:
- In the dashboard, the configuration indicator is displayed indicating the status of the endpoint monitored by ServicePulse:
- It is green when:
- all monitored endpoints have a plugin installed
- plugin version applies to minimal requirements (configured value of minimum plugin version supported by current version of ServicePulse)
- It is red when;
- one or more of the monitored endpoints do not have a plugin installed
- the installed plugin is of an earlier version than the version specified as minimum requirement for the current ServicePulse version
- It is green when:
- Clicking on the configuration indicator in the dashboard leads Opie to the endpoint configuration page
- Opie can view the endpoints list
- Opie can un-check one or more endpoints, making the un-monitored
- An un-monitored endpoint will remain visible in the list of endpoints
- An un-monitored endpoint is not expected to send heartbeat messages, and failure to receive heartbeat messages from this endpoint does not result in the heartbeat indicator being red
Notes:
- An un-monitored endpoint can still be active (i.e. send custom checks events, failed messages and process SLA events; un-monitoring affects only the expectation for a periodic hearbeat message)
Demo / Acceptance tests:
Case 1:
- Configure the Video Store sample to have the plugin installed only on the Sales and eCommerce endpoints (2 of 5 endpoints)
- All 5 endpoints will be sending auditing and error data to the audit and error queues monitored by ServiceControl
- Run the Video Store sample (5 endpoints)
- The Configuration indicator in the dashboard page is green displays 2 monitored endpoints (after receiving heartbeat messages from the Sales and eCommerce endpoints)
- 2 Configuration events are added (severity: info) indicating that 2 new endpoints were added to the monitored endpoints list (including endpoint names and hosting machine name and IP) and that heartbeat messages were received from these endpoints
- Send a purchase order using the Video Store UI and await the successful completion of the purchase process
- The Configuration indicator in the dashboard page turns red, and displays that 3 endpoints are not configured
- (i.e. the 3 of 5 endpoints belonging to the Video Store sample that do not have a configured plugin; these endpoint were added to the endpoints list through the processing of auditing messages, and they expected by default to be monitored)
- 3 Configuration events are added (severity: warning) indicating that 3 new endpoints were detected and were added to the monitored endpoints list (including endpoint names and hosting machine name and IP), but that they do not have a plugin installed and no heartbeat messages were received from these endpoints
- Click on the Configuration indicator in the dashboard page and reach the endpoint configuration page
- There are 5 endpoints in the endpoint list.
- All are marked as monitored
- 2 (sales and ecommerce) have a plugin installed and the plugin version is displayed
- 3 have no plugin installed and there is no plugin version displayed
- Uncheck the "CustomerRelations" endpoint
- 1 Configuration event is added (severity: info) indicating that the "CustomerRelations" endpoint is no longer monitored
- Return to the dashboard and make sure the configuration indicator in the dashboard page is red but that it now displays that 2 endpoints are not configured
- Stop the Video Store sample and have the plugin installed on all 5 endpoints
- Run the Video Store sample (5 endpoints)
- The Configuration indicator in the dashboard page is green displays 4 monitored endpoints
- 2 Configuration events are added (severity: info) indicating that 2 monitored endpoints (already listed in the endpoints list) started sending heartbeat messages
- Click on the Configuration indicator in the dashboard page and reach the endpoint configuration page
- There are 5 endpoints in the endpoint list.
- Check the "CustomerRelations" endpoint to make it monitored again
- 1 Configuration event is added (severity: info) indicating that the "CustomerRelations" endpoint is being monitored
- Return to the dashboard and make sure the Configuration indicator in the dashboard page is green and displays 5 monitored endpoints
Improvements
#98 Add tooltip to describe "Monitor" in SP config page
- Related to #15
- (BTW - nice implementation of #15. Works great!)
- Please add a tooltip to the "Monitor" column to explain its purpose.
- Proposed phrasing: "Monitor the endpoint, and alert if no heartbeats are received"
- Also - optionally - add a label next to the checkbox stating whether the endpoint "Monitored" or "Not Monitored"
CC @indualagarsamy, @andreasohlund - Make sense ?
#89 Remove "Beta Expired" May 1st
Related to ...
1.0.0-Beta3
Introduction
Particular Software ServicePulse is the new operational monitoring tool for distributed applications developed using NServiceBus.
An Introduction to ServicePulse for NServiceBus provides a short ~7 minute introductory video and demo of ServicePulse capabilities and main features for this Beta release.
Prerequisites
- .NET Framework 4.5 or later
- Particular Software ServiceControl Beta 6
- Monitored NServiceBus endpoints must use NServiceBus 4.0.0 or higher
- (support for earlier releases will be added in a future release)
Installation
- Download and install ServiceControl 1.0.0 Beta 6
- Download and install ServicePulse 1.0.0 Beta 3
- The following installation parameters are used by the ServicePulse installer:
- ServicePulse Instance URI:
- Default is http://localhost:8082
- This is the localhost address and port that will be used for accessing the ServicePulse web application
- ServiceControl instance URI:
- Default is http://localhost:33333/api/
- The URI that will be accessed by ServicePulse web app in order to communicate with the ServiceControl instance
- Review ServiceControl beta 6 release notes for more details on installing and configuring ServiceControl for use by ServicePulse
- ServicePulse Instance URI:
- After accepting the license terms and conditions, click "Install" (installer will require elevated privileges)
- The installation process performs the following actions:
- Installs the Windows Service "Particular ServicePulse" which hosts the web application
- Open the ServicePulse web application using the default browser
- After installing ServicePulse, you will need to:
- Configure your NServiceBus applications endpoints
- Author and deploy Custom Checks that will be monitored by ServicePulse.
- See the following sections for detailed guidance on performing these actions
HOWTO: Configure endpoints for monitoring by ServicePulse
ServicePulse monitors NServiceBus endpoints for:
- Endpoint availability (using heartbeat signals sent from the endpoint)
- Failed Messages (by monitoring the error queue defined for the endpoints)
- Custom Checks (defined and developed per application needs)
- And more (see An Introduction to ServicePulse for NServiceBus for additional upcoming monitoring features
Prerequisites for ServicePulse monitoring of endpoints:
- An Endpoint Plugin dll must be deployed in the binaries directory of each NServiceBus endpoint (required for endpoint availability and Custom Checks monitoring)
- Endpoints must use NServiceBus version 4.0.0 or higher (support for earlier releases will be added in a future release)
- Auditing must be enabled for all monitored endpoints (see Auditing With NServiceBus)
- All endpoints must forward audited data to a single audit and error queue, that is monitored by a ServiceControl instance
Deploying Endpoint Plugins in each Endpoint
- The Endpoint Plugin consists of two Nuget Packages:
ServiceControl.Plugin.Heartbeat.dllServiceControl.Plugin.CustomChecks.dll
- Get the Endpoint Heartbeat and CustomChecks Plugins using the NuGet console:
install-package ServiceControl.Plugin.Heartbeat -preinstall-package ServiceControl.Plugin.CustomChecks -pre
- For manual deployment, copy the Endpoint Plugin dll files to each endpoint bin directory (and restart the endpoint to load the plugin)
- By default, the Endpoint Plugin sends a heartbeat indication to ServiceControl every 30 seconds.
- If a heartbeat indication is not recevied within 30 seconds, ServicePulse raises an event indicates the issue
HOWTO: Develop Custom Checks for ServicePulse
- In Visual Studio, create a new Class Library project
- Add the Endpoint Plugin to the project using the NuGet console:
install-package ServiceControl.Plugin.CustomChecks -pre
- To create a custom check that executes once, on endpoint startup, create a class that inherits from
CustomCheckclass (see sample code below) - To create a custom check that executes repeatedly, in defined time intervals, create a class that inherits from
PeriodicCheckclass (see sample code below) - Build and deploy the class library dll in the Bin directory of the endpoint you wish to execute these custom checks
- You can deploy many custom checks per endpoint, and deploy the same custom checks in as many endpoints as required
Sample Custom Check
using ServiceControl.Plugin.CustomChecks;
using ServiceControl.Plugin.CustomChecks.Messages;
using System;
using System.IO;
namespace CustomCheckSample
{
class FtpAvailabilityCheck : CustomCheck
{
public static bool isAvailable = false;
public FtpAvailabilityCheck()
: base("FTP server availability check", "FTP Server")
{
if (!isAvailable)
ReportFailed("The FTP Service is down");
}
}
class FtpStorageDirectoryCheck : PeriodicCheck
{
public FtpStorageDirectoryCheck()
: base("FTP storage directory check", "FTP Server", TimeSpan.FromSeconds(5)){}
public override CheckResult PerformCheck()
{
var dir = @"C:\Checks\FTP";
if (!Directory.Exists(dir))
{
return CheckResult.Failed(string.Format("FTP storage directory '{0}' does not exist", dir));
}
return CheckResult.Pass;
}
}
}Troubleshooting:
- ServicePulse is unable to connect to ServiceControl
- See ServiceControl release notes Troubleshooting section for guidance on detecting ServiceControl HTTP API accessibility
- Verify that ServicePulse is trying to access the correct ServiceControl URI (based on ServicControl instance URI defined in ServicePulse installation settings)
- Check that ServicePulse is not blocked from accessing the ServiceControl URI by firewall settings
- ServicePulse reports that 0 endpoints are active, although Endpoint plugins were deployed
- Make sure you follow the guidance in the section "Deploying Endpoint Plugin in each Endpoint" above
- Restart the endpoint after copying the Endpoint Plugin files into the endpoint's Bin directory
- Make sure that the endpoint references NServiceBus 4.0.0 or later
- Make sure auditing is turned on for the endpoint, and the audited messages are forwarded to the correct audit and error queues monitored by ServiceControl
Known issues
- Failed Messages counter is not updated as expected
- Workaround: Click F5 to refresh the page.
- This occurs mainly on relatively slow of busy machines, that are not in production (e.g. have just been started, and components have not been fully loaded into RAM)
- The root cause is due to the internal implementation of notification and counter updates depending on RavenDB's eventual consistency approach to index updates
- Will be fixed by v1 release
1.0.0-Beta2
Introduction
Particular Software ServicePulse is the new operational monitoring tool for distributed applications developed using NServiceBus.
An Introduction to ServicePulse for NServiceBus provides a short ~7 minute introductory video and demo of ServicePulse capabilities and main features for this Beta release.
Prerequisites
- .NET Framework 4.0 or later
- Particular Software ServiceControl Beta 4
- Monitored NServiceBus endpoints must use NServiceBus 4.0.0 or higher
- (support for earlier releases will be added in a future release)
Downloads
Installation
- Download and install ServiceControl 1.0.0 Beta 4 (see release notes)
- Download and install ServicePulse 1.0.0 Beta 2
- The following installation parameters are used by the ServicePulse installer:
- ServicePulse Instance URI:
- Default is http://localhost:8082
- This is the localhost address and port that will be used for accessing the ServicePulse web application
- ServiceControl instance URI:
- Default is http://localhost:33333/api/
- The URI that will be accessed by ServicePulse web app in order to communicate with the ServiceControl instance
- Review ServiceControl beta 4 release notes for more details on installing and configuring ServiceControl for use by ServicePulse
- ServicePulse Instance URI:
- After accepting the license terms and conditions, click "Install" (installer will require elevated privileges)
- The installation process performs the following actions:
- Installs the Windows Service "Particular ServicePulse" which hosts the web application
- Open the ServicePulse web application using the default browser
- After installing ServicePulse, you will need to:
- Configure your NServiceBus applications endpoints
- Author and deploy Custom Checks that will be monitored by ServicePulse.
- See the following sections for detailed guidance on performing these actions
HOWTO: Configure endpoints for monitoring by ServicePulse
ServicePulse monitors NServiceBus endpoints for:
- Endpoint availability (using heartbeat signals sent from the endpoint)
- Failed Messages (by monitoring the error queue defined for the endpoints)
- Custom Checks (defined and developed per application needs)
- And more (see An Introduction to ServicePulse for NServiceBus for additional upcoming monitoring features
Prerequisites for ServicePulse monitoring of endpoints:
- An Endpoint Plugin dll must be deployed in the binaries directory of each NServiceBus endpoint (required for endpoint availability and Custom Checks monitoring)
- Endpoints must use NServiceBus version 4.0.0 or higher (support for earlier releases will be added in a future release)
- Auditing must be enabled for all monitored endpoints (see Auditing With NServiceBus)
- All endpoints must forward audited data to a single audit and error queue, that is monitored by a ServiceControl instance
Deploying Endpoint Plugin in each Endpoint
- The Endpoint Plugin consists of two DLL files:
ServiceControl.EndpointPlugin.dllServiceControl.EndpointPlugin.Messages.dll
- Get the Endpoint Plugin:
- Download a zip file containing the Endpoint Plugin DLL's and place them in the endpoint's Bin directory
- NuGet Galley: ServiceControl.EndpointPlugin package
- NuGet console:
install-package ServiceControl.EndpointPlugin -pre
- Copy the Endpoint Plugin files to each endpoint bin directory (and restart the endpoint to load the plugin)
- By default, the Endpoint Plugin sends a heartbeat indication to ServiceControl every 30 seconds.
- If a heartbeat indication is not recevied within 30 seconds, ServicePulse raises an event indicates the issue
HOWTO: Develop Custom Checks for ServicePulse
- In Visual Studio, create a new Class Library project
- Add the Endpoint Plugin to the project
- Download a zip file containing the Endpoint Plugin DLL's and place them in the endpoint's Bin directory
- using NuGet:
install-package ServiceControl.EndpointPlugin -pre - Or by copying the Endpoint Plugin DLL's to the endpoint's bin directory
- Add a reference to the Endpoint Plugin DLL's
- To create a custom check that executes once, on endpoint startup, create a class that inherits from
CustomCheckclass (see sample code below) - To create a custom check that executes repeatedly, in defined time intervals, create a class that inherits from
PeriodicCheckclass (see sample code below) - Build and deploy the class library DLL in the Bin directory of the endpoint you wish to execute these custom checks
- You can deploy many custom checks per endpoint, and deploy the same custom checks in as many endpoints as required
Sample Custom Check
using System;
using System.IO;
// reference ServiceControl.EndpointPlugin.dll
using ServiceControl.EndpointPlugin.CustomChecks;
// reference ServiceControl.EndpointPlugin.Messages.dll
using ServiceControl.EndpointPlugin.Messages.CustomChecks;
namespace CustomCheckSample
{
// Run the custom check once, on endpoint startup
class FtpAvailabilityCheck : CustomCheck
{
public static bool isAvailable = false;
public FtpAvailabilityCheck()
: base("FTP server availability check", "FTP Server")
{
if (!isAvailable)
ReportFailed("The FTP Service is down");
}
}
// Run the custom check periodically, in the defined interval timespan
class FtpStorageDirectoryCheck : PeriodicCheck
{
public FtpStorageDirectoryCheck()
: base("FTP storage directory check", "FTP Server", TimeSpan.FromSeconds(5)){}
public override CheckResult PerformCheck()
{
var dir = @"C:\Client\1035";
if (!Directory.Exists(dir))
{
return CheckResult.Failed(string.Format("FTP storage directory '{0}' does not exist", dir));
}
return CheckResult.Pass;
}
}
}Troubleshooting:
- ServicePulse is unable to connect to ServiceControl
- See ServiceControl release notes Troubleshooting section for guidance on detecting ServiceControl HTTP API accessibility
- Verify that ServicePulse is trying to access the correct ServiceControl URI (based on ServicControl instance URI defined in ServicePulse installation settings)
- Check that ServicePulse is not blocked from accessing the ServiceControl URI by firewall settings
- ServicePulse reports that 0 endpoints are active, although Endpoint plugins were deployed
- Make sure you follow the guidance in the section "Deploying Endpoint Plugin in each Endpoint" above
- Restart the endpoint after copying the Endpoint Plugin files into the endpoint's Bin directory
- Make sure that the endpoint references NServiceBus 4.0.0 or later
- Make sure auditing is turned on for the endpoint, and the audited messages are forwarded to the correct audit and error queues monitored by ServiceControl
Changes in this release
This release consist of these issues that were achieved through these commits.
Features
#12 Implement Heartbeat Events viewing
Improvements
#55 Add Start Menu shortcut to launch website
Bugs
#60 When exception text is too long, UI looks a bit messy
#58 Misleading custom check failed events (appears once for all endpoints)
#49 CustomChecks from multiple endpoints count as a single check
#48 Failed Messages list requires manual refresh to display correct result
#47 Failed Message summary statistics is empty
#45 Phrasing consistency: events category in plural or singular
#42 Install-Package for EndpointPlugin causes build failure due to invalid dependency
[#20 Number of endpoints zero'd on SC restart](https://github.com/...
1.0.0-Beta1
Introduction
Particular Software ServicePulse is the new operational monitoring tool for distributed applications developed using NServiceBus.
An Introduction to ServicePulse for NServiceBus provides a short ~7 minute introductory video and demo of ServicePulse capabilities and main features for this Beta release.
Prerequisites
- .NET Framework 4.0 or later
- Particular Software ServiceControl Beta 3
- Monitored NServiceBus endpoints must use NServiceBus 4.0.0 or higher
- (support for earlier releases will be added in a future release)
Downloads
Installation
- Download and install ServiceControl 1.0.0 Beta 3 (see release notes)
- Download and install ServicePulse 1.0.0 Beta 1
- The following installation parameters are used by the ServicePulse installer:
- ServicePulse Instance URI:
- Default is http://localhost:8082
- This is the localhost address and port that will be used for accessing the ServicePulse web application
- ServiceControl instance URI:
- Default is http://localhost:33333/api/
- The URI that will be accessed by ServicePulse web app in order to communicate with the ServiceControl instance
- Review ServiceControl beta 3 release notes for more details on installing and configuring ServiceControl for use by ServicePulse
- ServicePulse Instance URI:
- After accepting the license terms and conditions, click "Install" (installer will require elevated privileges)
- The installation process performs the following actions:
- Installs the Windows Service "Particular ServicePulse" which hosts the web application
- Open the ServicePulse web application using the default browser
- After installing ServicePulse, you will need to:
- Configure your NServiceBus applications endpoints
- Author and deploy Custom Checks that will be monitored by ServicePulse.
- See the following sections for detailed guidance on performing these actions
HOWTO: Configure endpoints for monitoring by ServicePulse
ServicePulse monitors NServiceBus endpoints for:
- Endpoint availability (using heartbeat signals sent from the endpoint)
- Failed Messages (by monitoring the error queue defined for the endpoints)
- Custom Checks (defined and developed per application needs)
- And more (see An Introduction to ServicePulse for NServiceBus for additional upcoming monitoring features
Prerequisites for ServicePulse monitoring of endpoints:
- An Endpoint Plugin dll must be deployed in the binaries directory of each NServiceBus endpoint (required for endpoint availability and Custom Checks monitoring)
- Endpoints must use NServiceBus version 4.0.0 or higher (support for earlier releases will be added in a future release)
- Auditing must be enabled for all monitored endpoints (see Auditing With NServiceBus)
- All endpoints must forward audited data to a single audit and error queue, that is monitored by a ServiceControl instance
Deploying Endpoint Plugin in each Endpoint
- The Endpoint Plugin consists of two DLL files:
ServiceControl.EndpointPlugin.dllServiceControl.EndpointPlugin.Messages.dll
- Get the Endpoint Plugin:
- Download a zip file containing the Endpoint Plugin DLL's and place them in the endpoint's Bin directory
- NuGet Galley: ServiceControl.EndpointPlugin package
- NuGet console:
install-package ServiceControl.EndpointPlugin -pre
- Copy the Endpoint Plugin files to each endpoint bin directory (and restart the endpoint to load the plugin)
- By default, the Endpoint Plugin sends a heartbeat indication to ServiceControl every 30 seconds.
- If a heartbeat indication is not recevied within 30 seconds, ServicePulse raises an event indicates the issue
HOWTO: Develop Custom Checks for ServicePulse
- In Visual Studio, create a new Class Library project
- Add the Endpoint Plugin to the project
- Download a zip file containing the Endpoint Plugin DLL's and place them in the endpoint's Bin directory
- using NuGet:
install-package ServiceControl.EndpointPlugin -pre - Or by copying the Endpoint Plugin DLL's to the endpoint's bin directory
- Add a reference to the Endpoint Plugin DLL's
- To create a custom check that executes once, on endpoint startup, create a class that inherits from
CustomCheckclass (see sample code below) - To create a custom check that executes repeatedly, in defined time intervals, create a class that inherits from
PeriodicCheckclass (see sample code below) - Build and deploy the class library DLL in the Bin directory of the endpoint you wish to execute these custom checks
- You can deploy many custom checks per endpoint, and deploy the same custom checks in as many endpoints as required
Sample Custom Check
using System;
using System.IO;
// reference ServiceControl.EndpointPlugin.dll
using ServiceControl.EndpointPlugin.CustomChecks;
// reference ServiceControl.EndpointPlugin.Messages.dll
using ServiceControl.EndpointPlugin.Messages.CustomChecks;
namespace CustomCheckSample
{
// Run the custom check once, on endpoint startup
class FtpAvailabilityCheck : CustomCheck
{
public static bool isAvailable = false;
public FtpAvailabilityCheck()
: base("FTP server availability check", "FTP Server")
{
if (!isAvailable)
ReportFailed("The FTP Service is down");
}
}
// Run the custom check periodically, in the defined interval timespan
class FtpStorageDirectoryCheck : PeriodicCheck
{
public FtpStorageDirectoryCheck()
: base("FTP storage directory check", "FTP Server", TimeSpan.FromSeconds(5)){}
public override CheckResult PerformCheck()
{
var dir = @"C:\Client\1035";
if (!Directory.Exists(dir))
{
return CheckResult.Failed(string.Format("FTP storage directory '{0}' does not exist", dir));
}
return CheckResult.Pass;
}
}
}Troubleshooting:
- ServicePulse is unable to connect to ServiceControl
- See ServiceControl release notes Troubleshooting section for guidance on detecting ServiceControl HTTP API accessibility
- Verify that ServicePulse is trying to access the correct ServiceControl URI (based on ServicControl instance URI defined in ServicePulse installation settings)
- Check that ServicePulse is not blocked from accessing the ServiceControl URI by firewall settings
- ServicePulse reports that 0 endpoints are active, although Endpoint plugins were deployed
- Make sure you follow the guidance in the section "Deploying Endpoint Plugin in each Endpoint" above
- Restart the endpoint after copying the Endpoint Plugin files into the endpoint's Bin directory
- Make sure that the endpoint references NServiceBus 4.0.0 or later
- Make sure auditing is turned on for the endpoint, and the audited messages are forwarded to the correct audit and error queues monitored by ServiceControl


