Documentation

PUSH Checks

About PUSH Monitoring

PUSH checks allow you to send heartbeats and metrics from your servers to NodePing. Use a PUSH check for things like monitoring your servers that are behind firewalls, tracking CPU load on your Windows SQL servers, or getting alerts before you run out of disk space on your web servers.

PUSH checks are quite different from all the other check types NodePing offers. The others use our probe servers to reach out and see if your services are working correctly. With PUSH checks, you provide the monitoring results to us through an HTTP POST. You can use your own scripts or one of our many PUSH clients for Linux and Windows to push the results into NodePing.

Simple heartbeat monitoring with a PUSH check will ensure you get an alert if one of your servers stops sending in results. This can be used to send alerts of a server or process goes offline, or if a server that can't be reached from the Internet loses the ability to make outbound connections.

You can also go well beyond simple heartbeats and use the PUSH check to track basically any numeric value. You can send the PUSH check a data payload, and NodePing will parse it to see if the metrics are missing or are outside your configured range for the fields you've chosen to track. This allows you send any kind of metric you can muster from your server and we'll track it and you can get alerts about it. We'll also automatically graph the metrics in our reports.

The JSON data payload provides deep linking using a flattened path. For example, in this typical JSON payload:

{
    "load": {
        "1min": 0.17,
        "5min": 0.19,
        "15min": 0.17
    },
    "memfree": 26596,
    "diskfree": {
        "/": 0.96
    }
}

We can monitor the percentage of free space on the root partition with the path "diskfree./".

We can also handle arrays in the JSON by using the numbered element in the flattened path. For example, in this payload:

{ 
    "mount": [ 
        { "filesystem": "/dev/sda1", "free": 99 },  
        { "filesystem": "/dev/sda2", "free": 70 }
    ]
}

We can monitor the free space on these hard drives with the two paths: "mount.0.free" and "mount.1.free".

PUSH results must be an HTTP POST to https://push.nodeping.com/v1 and require the following elements in the query string:

  • id - the check id of the PUSH check - this is seen in the check drawer (click on the check label to open the drawer)
  • checktoken - the check token of the PUSH check - also seen in the check drawer

If you want to pass a data payload to the PUSH results, please POST it as a JSON body, with the required HTTP header "Content-Type: application/json" and in the following format:

{ 
    "data": {
        { "<Your metric name here>": <Your float parsable value here>},
        { "<Your other metric name here>": <Your other float parsable value here>}
    }
}

Below is a simple heartbeat PUSH example:

curl -X POST 'https://push.nodeping.com/v1?id=MY_CHECK_ID_HERE&checktoken=LONG_CHECK_TOKEN_HERE'

And here's a sample data payload PUSH example:

curl -X POST -H "Content-Type: application/json" --data '{"data":{"mymetric":5}}' 'https://push.nodeping.com/v1?id=MY_CHECK_ID_HERE&checktoken=LONG_CHECK_TOKEN_HERE'

NodePing's PUSH Client Wizard provides a very cool command line wizard for creating, configuring, and deploying PUSH clients to both *nix and Windows.

When to use PUSH Checks

Use PUSH checks to monitor servers and their system metrics that are not accessible by our other check types. They may be located behind network firewalls or we just don't have a check type for the metric you want to track. You can also use them as a way to get notified if your cron jobs are no longer running using the simple heartbeat PUSH.

Using PUSH Checks

To set up a PUSH check,

  1. Select PUSH from the Check type drop down.
  2. Give it a friendly label to identify this check in lists and notifications.
  3. Set how often you will push in results in the Check Frequency field. You can set this to as frequent as every minute.
  4. If you are sending a data payload, enter the flattened path of the data you want to parse in the Name field (examples: load.1min, cpu, RAM.free, disks.0.freemb) and set Min and Max values as integers or floats (examples: -1, 0, 234985, 1.653). The check will fail if the data payload values are outside of your Min or Max or if the data payload is missing that metric.
  5. Add more fields to track by clicking the Add another field link.
  6. If you'd like to receive notifications when the PUSH check results are old, check the box next to 'Fail if results are old'. Results are considered 'old' when the latest result timestamp is older than your check interval multiplied by your check sensitivity. The default of a 1 minute check and a sensitivity of 'High (2 rechecks)' means your result will be considered old when it is more than 2 minutes old (1 minute interval * 2 rechecks).
  7. Set the Sensitivity. High (2) is usually appropriate. Do not set this to 'Very High (0)' as it is not a useful setting for PUSH checks and will cause false 'down' notifications.
  8. Set the notifications for this check. More information about notifications.

Common usage:

  • Monitor servers behind firewalls to ensure they are up and running.
  • Be notified if a server is rebooted. Use the data payload and an uptime metric with a Min value less than your check interval.
  • Track and get alerts when the server load get high. Use the data payload and load metrics.
  • Track and alert hard to reach metrics like database performance, number of emails being sent, packet loss, etc using our PUSH client modules

Other considerations

We have several open-source PUSH client scripts available for Linux, Windows, freeBSD, etc that you can use, modify, and extend with our modules - or write your own.

The PUSH Client Wizard can be used to create, configure, and deploy PUSH clients. It's a simple command line interface wizard that walks you through the process.

If you have any questions, get in touch at support@nodeping.com, or use our Contact form.