Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Contents

Table of Contents

Overview

This article is part of a series:
Part 1 - Creating Custom Service Monitors in up.timeUptime Infrastructure Monitor
Part 2 - Creating Custom Service Monitors with Retained Data Collection
Part 3 - Creating Plug-in Service Monitors in up.timeUptime Infrastructure Monitor

Uptime Infrastructure Monitor up.time provides many built in service monitors that allow you to monitor and alert on a wide array of services and applications within your enterprise. However, the standard up.time Uptime Infrastructure Monitor service monitors may not be adequate to monitor all of the systems, applications and proprietary devices in your environment. In some cases, you may want to capture metrics that are unique to your environment. To do this, you can define custom service monitors to monitor custom services and applications to provide the level of in depth performance monitoring that you require. Using custom service monitors, you can monitor and graph historical performance data from just about any device in your environment.

...

This article series will focus on taking a simple command line script and incorporating it into upUptime Infrastructure Monitor. time. It will then demonstrate how to expand that script for use within a Custom with Retained Data service monitor that will enable you to not only register service outages in the event of a failure but also graph the historical performance trends. The final article in this series will guide you through the steps to further expand your custom service monitor so that it can be directly plugged in to the up.time Uptime Infrastructure Monitor interface for use by your end users.

...

How Custom Service Monitors Work

In up.timeUptime Infrastructure Monitor, you can configure custom service monitors to run any application or script. The application or script can then take an action, including launching commands on one of your agent systems using a built-in agent authentication protocol. Or, your script can use a different transport method to contact other servers and applications, or simple run commands on the monitoring station itself. The only limitation is that the application or script must return status information that up.time Uptime Infrastructure Monitor will then use to determine the custom service monitor status.

The built-in agent authentication protocol provides a quick and easy way for you to have the up.time Uptime Infrastructure Monitor agent run commands (or any application) on your agent-side system without the fear of unknown users being able to execute the same commands. The output from the agent-side commands will be returned to the monitoring station custom script for parsing. This enables you to create a script that can monitor many different agent systems without duplicating the script many times. The following diagram illustrates the custom service monitor process:

 

 

...

Step 1 - Creating the Agent Side Script

When designing a custom service monitor, you should consider what information that you want the monitor to collect. For example:

...

Once you have written your agent-side script, you will need to configure your up.time Uptime Infrastructure Monitor agent to execute it. As a minimum, you must configure the following settings for each agent-side command:

...

  1. Ensure that a file named .uptmpasswd is created in the up.time Uptime Infrastructure Monitor agent bin directory -- either /opt/SPYNuptm/bin/ or /opt/uptime-agent/bin, depending the version of your agent. This file must be owned and readable by the user that the agent is run as (ex. uptimeagent or uptime users).
  2. Open the file .uptmpasswd in a text editor.
  3. Enter a password and command pair for each command that you want to run on the agent system. The following is the example format and an example of a agent-side commands:

    Format: [password] [command path, no arguments]

    Example file contents:

    Code Block
    languagepowershell
    secretpassword /opt/uptime-agent/my-scripts/show_temp.sh
    $%^& /usr/local/bin/appstatus.sh

...

Code Block
languagetext
[HKEY_LOCAL_MACHINE\SOFTWARE\uptime software\up.time agent]
"CmdsTimeout"=dword:00000014
"Port"=dword:0000270e
"MaxClients"=dword:00000005
"Debug"=dword:00000000
"CmdsPassword"="secretpassword"
"LogFile"="log.txt"

[HKEY_LOCAL_MACHINE\SOFTWARE\uptime software\up.time agent\rexec_commands] 
"dir"= cmd.exe /c "dir c:"
"show-temp"= cmd.exe /c "C:\scripts\show_temp.pl"

...

Step 2 - Creating the Monitoring Station Script

The next step is to write the monitoring station script that will attempt to execute your agent side script, validate the output, and then return status or performance information to upUptime Infrastructure Monitor.time.

The monitoring station script can be written in any language and format, provided that it adheres to these general rules:

  1. The script must return at least one line of output to the system console. up.time Uptime Infrastructure Monitor will use this output to determine the status of the custom service monitor.
  2. The script must exit with a success status, unless there has been a problem during the execution of the script or you want to force a status for the service monitor. Acceptable return codes are:
    • exit 0 - The script executed without any errors, all output produced from the script will be parsed by up.time Uptime Infrastructure Monitor to determine the service monitor status.
    • exit 1 - The service monitor status will be set to WNG (warning) and an outage will be recorded. The console output from the script will be placed in the custom service monitor status message.
    • exit 2 - The service monitor status will be set to CRIT (critical) and an outage will be recorded. The console output from the script will be placed in the custom service monitor status message.
  3. The script must accept the host name of the agent system as the first argument. up.time Uptime Infrastructure Monitor will automatically add this argument to the arguments that are passed to the script.

...

You will normally use netcat or agentcmd in the monitoring station script to return the results of an agent-side script, validate the status of those results, and return the status to up.timeUptime Infrastructure Monitor. The following is an example of a monitoring station script:

...

Code Block
languagebash
# now lets check our values to see if they are over the thresholds and set our status message
RET="OK - $msg is $VALUE on $AGENT"

if [ $VALUE -ge "$WNG" ]
then
# this is our warning message
# include WARNING for use in the web interface thresholds
RET="WARNING - $MSG is $VALUE on $AGENT"
fi
if [ $VALUE -ge "$CRIT" ]
then
# this is our critical message
# include CRITICAL for use in the web interface thresholds
echo "CRITICAL - $MSG is $VALUE on $AGENT"
fi

# here we simply print our status message to the console and exit with a 0, 
# the thresholds provided in the up.time web interface will be used to set the monitor status
rm $TMPFILE
echo "$RET"
exit 0

...

Step 3 - Adding your Custom Service Monitor to

...

Uptime Infrastructure Monitor

The next step is to add a custom service monitor to the up.time Uptime Infrastructure Monitor Web interface using the same process that you would use to add a standard custom service monitor to up.timeUptime Infrastructure Monitor. The Custom monitor option is found in the List Other Monitors section of the Add New Service Instance page..

...

Option NameDescriptionExample
Script NameThe script name is the path to your monitoring station script, this is the script that up.time Uptime Infrastructure Monitor will execute when running this service monitor. Be sure to use the complete path wherever possible and that the path is to a locally mounted volume. For Windows script paths you must use UNIX style directory separators (/ instead of \) and also place double quotes around the entire script nameUNIX/Linux Example:
/usr/local/uptime/check_temp.sh

Windows Example:
"C:/my scripts/check_temp.bat"
ArgumentsThese are the arguments that you would like up.time Uptime Infrastructure Monitor to pass into your monitoring station script. No arguments are required but please be aware that up.time Uptime Infrastructure Monitor will automatically include the selected hostname as the first argument to your script.temp 60 80
Output WarningThis is the warning threshold used against the output returned from your monitoring station script. This is a textual comparison. You must select both a comparison method and a search string to enable the warning level thresholdOutput contains: "warning"
Output CriticalThis is the critical threshold used against the output returned from your monitoring station script. This is a textual comparison. You must select both a comparison method and a search string to enable the critical level thresholdOutput contains: "critical"

...

  • Enter a name and description for the monitor.
  • Select a host from the dropdown menu. Be sure to select the same host that your agent side script is on
  • In the Script Name field, enter the path to the custom script on your monitoring station. On Windows systems be sure to use UNIX style / instead of \ and put quotation marks around your path. For example: "C:/my files/check_temp.bat"
  • In the Arguments field, enter the arguments for the script. up.time Uptime Infrastructure Monitor adds the agent name as the first argument automatically so do not include it.
  • Select contains from the Warning dropdown and enter WARNING as the search text.
  • Select contains from the Critical drop down and enter CRITICAL as the search text.
  • Complete the remainder of the monitor template as you would for a normal service monitor.

...