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 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