You can trigger alerts and actions in Uptime Infrastructure Monitor when an Element changes state. This is discussed in the UIM Administrator's Guide under Alerts and Actions. The following actions are available out of the box: 

  • Log to File
  • Recovery Script
  • Windows Service
  • SNMP trap

The Windows service action can start, stop, or restart a Windows service identified by name. This is useful when you've created a service monitor using the Windows Service Check monitor to watch for a state change with a specific Windows service. A typical scenario is to set a Critical status if a specified Windows service is stopped. In this case, you can use the Windows service action in UIM to automatically try to start the Windows service in an attempt to minimize service disruption.

The limitation to leveraging the Windows service action on an action profile is that the Windows service that you want to start must be identified by name. If you have a large number of Windows services that could drive an action, you should create a new action profile for each Windows service, and then make sure that you tie it to the correct service monitor. In environments where the number of Windows services that fit this scenario is small, this works well. However, in larger environments where the number of Windows services that fit this scenario is large, it might be desirable to create a single action profile that can restart any Windows service.

This article explores how to restart any Windows service with an action profile as an alternative to creating a specific action profile for each Windows service. 

Create a service monitor

To create a service monitor

  1. Select the Windows Service Check monitor.

    You must match the Service Name to the Windows Service Display Name. This name is leveraged later to select the Windows service to start. Note that Microsoft has both a Display Name and a Service Name. We want the Display Name, as shown in the following images.


  2. Complete the remainder of the Service Monitor window making sure that the Windows Service - Service Name is also the Display Name.
  3. Make sure to select options that allow you to raise a Critical alert when the service status is Stopped. Your service monitor settings should look the following example.

Create a recovery script

We are going to leverage a recovery script in an action profile to start the Windows service. You can leverage two key components built into UIM:

  • First, the ability to create a script on the UIM monitoring station that directs a UIM Agent to perform an action. In fact, the monitor agent exposes a method to the UIM monitoring station to start a Windows service and you simply need to supply the Windows service name.
  • Second, the use of recovery script variables (variables available when creating recovery scripts). These are variables handed in to our script by UIM.

Here is what the recovery script looks like:

@ECHO OFF
agentcmd.exe -s -p 9998 %UPTIME_HOSTNAME% svc_start \"%UPTIME_SERVICENAME%\" Changeme2

Some items to note:

  • %UPTIME_HOSTNAME% is the name of the system raising the alert, also the system where you want to restart the Windows service.
  • %UPTIME_SERVICENAME% is the name of the service monitor we created earlier. Note that this is why we needed the service monitor name to match the Windows service Display Name.
  • The \ may look strange, but this character makes sure that the whole Windows service name gets included regardless of spaces.
  • Changeme2 is the UIM monitor agent password in this environment, so note that your environment differs.

This script is saved to the Scripts directory on the UIM monitoring station at the default location: C:\Program Files\uptime software\uptime\scripts.

For the sake of brevity we will skip the remaining details, however, if you want more information you can find it online. Here are two key articles:

Create an action profile

Lastly, we need to tie the service monitor and recovery script together in an action profile.

To create an action profile

  1. Create a new action profile and give it a descriptive name.
  2. Populate the full path to the recovery script.
  3. Add the Service Monitor we created above.
    It should look something like the following example:
     

Testing your work

The final test is to make sure that everything works as expected. Testing is as simple as stopping the Windows service from your service monitor. You may want to adjust the Timing Settings on the service monitor to trigger the action sooner for the purposes of testing.

If you are familiar with action profiles, you may know that UIM has a built in test action profile capability. However, that won't work in our case because the variables we are leveraging only get populated when a service monitor is triggered. 

Important notes

The Windows service starts in the security context of the UIM monitor agent running on the system where the Windows service is started, by default it is the local system.

This is not the only one way to accomplish this task. You could create a UIM monitor agent side script to perform the recovery. Or you could call a third-party tool from the recovery script to start the service, among other options.

  • No labels