You can easily add X-EYE monitoring to a shell script. All you have to do is make a HTTP request at an appropriate place in the script. curl and wget are two common command line HTTP clients you can use.
# Sends a HTTP GET request with curl:
curl -m 10 --retry 5 https://eye.xeung.tech/ping/your-uuid-here
# Silent version (no stdout/stderr output unless curl hits an error):
curl -fsS -m 10 --retry 5 -o /dev/null https://eye.xeung.tech/ping/your-uuid-here
Here's what each curl parameter does:
You can append /fail to any ping URL and use the resulting URL to actively
signal a failure. The following example:
/usr/bin/certbot renewhttps://eye.xeung.tech/ping/your-uuid-herehttps://eye.xeung.tech/ping/your-uuid-here/fail#!/bin/sh
# Payload here:
/usr/bin/certbot renew
# Ping X-EYE
curl -m 10 --retry 5 "https://eye.xeung.tech/ping/your-uuid-here$([ $? -ne 0 ] && echo -n /fail)"
When pinging with HTTP POST, you can put extra diagnostic information in request body. If the request body looks like a valid UTF-8 string, X-EYE will accept and store first 10KB of the request body.
In the below example, certbot's output is captured and submitted via HTTP POST:
#!/bin/sh
m=$(/usr/bin/certbot renew 2>&1)
curl -fsS -m 10 --retry 5 --data-raw "$m" https://eye.xeung.tech/ping/your-uuid-here
This example uses X-EYE Management API to create a check "on the fly" (if it does not already exist) and to retrieve its ping URL. Using this technique, you can write services that automatically register with X-EYE the first time they run.
#!/bin/bash
API_KEY=your-api-key-here
# Check's parameters. This example uses system's hostname for check's name.
PAYLOAD='{"name": "'`hostname`'", "timeout": 60, "grace": 60, "unique": ["name"]}'
# Create the check if it does not exist.
# Grab the ping_url from JSON response using the jq utility:
URL=`curl -s https://eye.xeung.tech/api/v1/checks/ -H "X-Api-Key: $API_KEY" -d "$PAYLOAD" | jq -r .ping_url`
# Finally, send a ping:
curl -m 10 --retry 5 $URL