Build

Tutorial: Real Time Process Monitoring using PubNub

3 min readPubNub Staff on Dec 4, 2015
Try PubNub Today

Free up to 1MM monthly messages. No credit card required.

Subscribe to our newsletter

By submitting this form, you are agreeing to our Terms and Conditions and Privacy Policy.

Time is essential in a server environment. And when it comes to a possible failure we need to act fast! In this tutorial, we will build a Windows service application that monitors server processing lo...

Time is essential in a server environment. And when it comes to a possible failure we need to act fast!

In this tutorial, we will build a Windows service application that monitors server processing load and memory consumption, sending alerts to a Windows Phone 8.1, with all communication through PubNub's Data Stream Network.

The service starts a thread that will get CPU consumption and available memory and compares to parameters. If the CPU usage is greater than a threshold (MaxCPUUsage) for a certain length of time (Period) then send a message with the type AlertType.PROCESS_ALERT to the channel.

Likewise, if available memory is less than a threshold (MinRAMAvailable) then it will send a message with the type AlertType.RAM_ALERT to the channel.

Real Time Process Monitoring Service

First is a Windows service project in the created using Visual Studio 2015 and .Net Framework 4. This service will send alert messages to the **PNRTPM** channel.

Configuring parameters

Next use RegEdit to configure the service parameters.

You can use RegEdit to configure tree parameters at
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PubnubRTPM

MaxCPUUsage

The max CPU usage to alert in % (default=50)

MinRAMAvailable

The min RAM available to alert in % (default=10)

Period

The period of time to watch continue CPU usage in seconds (default=60)

Edit imagePath and configure your parameters
Example: "C:\Directory_OF_Application\PubnubRTPM.exe" 60 20 60

 

OnStart Service Method

The OnStart method in the service.cs file is triggered when Windows starts the service.

It subscribes to the PNRTPM channel and creates a thread to monitor the server while the service is running.

Process Thread

The Process thread is in the service.cs file and is also started from the OnStart service method.

This thread uses a PerformanceCounter class to get the CPU usage and available memory and compares with parameters. If the CPU usage is greater than a threshold (MaxCPUUsage) for a certain length of time (Period) then it sends a message with the type AlertType.PROCESS_ALERT to the channel.

Likewise, if available memory is less than a threshold (MinRAMAvailable) then it sends a message with the type AlertType.RAM_ALERT to the channel.

Sending Alert Message

The SendAlertMessage method is in the service.cs file and is started by the process thread.

To compose an alert message, a list of RTPMProcess objects is created getting CPU usage and memory of each process.

After that, a RTPMServer class is created with the alert type, date, server name, CPU usage, RAM available, RTPMProcessList and then sent to the channel.

OnStop Service Method

The OnStop method is in the service.cs file and is triggered when Windows stops the service.

This method unsubscribes from the PNRTPM channel and finalizes the thread that was created to monitor the server.

Real Time Process Monitoring Windows Phone 8.1

The second part of our project is a Windows Phone 8.1 app created using Visual Studio 2015 and Windows Phone 8.1 SDK

This app will receive alert messages from the Real Time Process Monitoring service. It can handle messages from more than one server, each over the PNRTPM channel.

Real Time Process Monitoring

The mainpage.xaml file below creates the app seen above using XAML notation. It creates a grid for messages and a button to start and stop monitoring.

Start Monitoring

When you click on the Start Monitoring button, it will subscribe to the PNRTPM channel and wait for an alert message.

Stop Monitoring

If you click on the Stop Monitoring button it will unsubscribe from the PNRTPM channel.

Alert Message Received

The ReceivedMessageCallbackWhenSubscribed method is in the mainpage.xaml.cs file and is triggered when there is a message on PNRTPM channel.

Conclusion

This tutorial showed you how to create a Windows service, collecting CPU and memory information, Windows Phone 8.1 SDK and send/receive messages using PubNub C# SDK. We collected CPU and memory information using the PerformanceCounter class and send messages using publish function.

In the future you could add an e-mail notification and SMS message on the service project to notify the administrator about CPU and memory consumption. You could also improve the Windows Phone 8.1 project by adding a window where the user could see all server processes and find out which is consuming the CPU or memory.

You can download the Real Time Process Monitoring service project [here]

You can download the Real Time Process Monitoring Windows Phone 8.1 project [here]

More from PubNub

How to Advance Telehealth and Virtual Care Technologies
News May 2, 20221 min read

How to Advance Telehealth and Virtual Care Technologies

Dr. Joe Kvedar, Chair of the Board for the American Telemedicine Association, joins our COO, Casey Clegg, to discuss why...

PubNub Staff

PubNub Staff

Another Step Towards Data Security: ISO-27001 Implementation
BuildMay 2, 20221 min read

Another Step Towards Data Security: ISO-27001 Implementation

Today, we are glad to announce that we are currently in the process of implementing ISO-27001 security standards.

PubNub Staff

PubNub Staff

Improving Virtual Care in a Post-Pandemic World
News Apr 14, 20221 min read

Improving Virtual Care in a Post-Pandemic World

Meg Barron, VP of Digital Health Strategy at the AMA, talks with PubNub’s COO, Casey Clegg, about what’s next for the healthcare...

PubNub Staff

PubNub Staff