Make HTTP requests to the Ping URL at regular intervals. When the URL is not pinged on time, Upmon will send you an alert. You can monitor any service that can make HTTP requests or send emails.
https://upmon.net/e236c025-0eeb-4c6c-a984-85cc4eebb3e8
# m h dom mon dow command
8 6 * * * /home/user/backup.sh && curl -fsS -m 10 --retry 5 -o /dev/null https://upmon.net/e236c025-0eeb-4c6c-a984-85cc4eebb3e8
# using curl (10 second timeout, retry up to 5 times):
curl -m 10 --retry 5 https://upmon.net/e236c025-0eeb-4c6c-a984-85cc4eebb3e8
# using wget (10 second timeout, retry up to 5 times):
wget https://upmon.net/e236c025-0eeb-4c6c-a984-85cc4eebb3e8 -T 10 -t 5 -O /dev/null
# Using Python 3 standard library:
import socket
import urllib.request
try:
urllib.request.urlopen("https://upmon.net/e236c025-0eeb-4c6c-a984-85cc4eebb3e8", timeout=10)
except socket.error as e:
# Log ping failure here...
print("Ping failed: %s" % e)
# Using the requests library:
import requests
try:
requests.get("https://upmon.net/e236c025-0eeb-4c6c-a984-85cc4eebb3e8", timeout=10)
except requests.RequestException as e:
# Log ping failure here...
print("Ping failed: %s" % e)
require 'net/http'
require 'uri'
Net::HTTP.get(URI.parse('https://upmon.net/e236c025-0eeb-4c6c-a984-85cc4eebb3e8'))
var https = require('https');
https.get('https://upmon.net/e236c025-0eeb-4c6c-a984-85cc4eebb3e8').on('error', (err) => {
console.log('Ping failed: ' + err)
});
package main
import "fmt"
import "net/http"
import "time"
func main() {
var client = &http.Client{
Timeout: 10 * time.Second,
}
_, err := client.Head("https://upmon.net/e236c025-0eeb-4c6c-a984-85cc4eebb3e8")
if err != nil {
fmt.Printf("%s", err)
}
}
file_get_contents('https://upmon.net/e236c025-0eeb-4c6c-a984-85cc4eebb3e8');
try
{
using (var client = new System.Net.Http.HttpClient())
{
client.Timeout = System.TimeSpan.FromSeconds(10);
client.GetAsync("https://upmon.net/e236c025-0eeb-4c6c-a984-85cc4eebb3e8").Wait();
}
}
catch (System.Exception ex)
{
System.Console.WriteLine($"Ping failed: {ex.Message}");
}
// the server returns appropriate CORS headers so cross-domain AJAX requests work:
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://upmon.net/e236c025-0eeb-4c6c-a984-85cc4eebb3e8', true);
xhr.send(null);
# inside a PowerShell script:
Invoke-RestMethod https://upmon.net/e236c025-0eeb-4c6c-a984-85cc4eebb3e8
# Without an underlying script, passing the command to PowerShell directly:
powershell.exe -Command "&{Invoke-RestMethod https://upmon.net/e236c025-0eeb-4c6c-a984-85cc4eebb3e8}"
As an alternative to HTTP requests, you can also report "liveness" by sending email messages.
You can instruct Upmon to look for a particular keyword in the subject line. This is handy when your backup software sends an email after every run, and uses a different subject line depending on success or failure.
A list of your checks, one for each Cron job, daemon or scheduled task you want to monitor.
Give names and assign tags to your checks to easily recognize them later.
Tap on the integration icons to toggle them on and off.
Adjust Period and Grace time to match the periodicity and duration of your tasks.
New. A check that has been created, but has not received any pings yet. | |
Up. The time since the last ping has not exceeded Period. | |
Late. The time since the last ping has exceeded Period, but has not yet exceeded Period + Grace. | |
Down. The time since the last ping has exceeded Period + Grace. When a check goes from "Late" to "Down", Upmon sends you a notification. |
Alternatively, you can define the expected ping dates and times using a cron expression. See Cron Syntax Cheatsheet for the supported syntax features.
Grace Time specifies how "late" a ping can be before you are alerted. You should set it to be a little above the expected duration of your cron job.
You can add a longer, free-form description to each check. Leave notes and pointers for yourself and your team.
You can also see the log of received pings and sent "Down" notifications.
Upmon provides status badges for each of the tags you have used. Additionally, the "Upmon" badge shows the overall status of all checks in your account.
The badges have public but hard-to-guess URLs. You can use them in your READMEs, dashboards, or status pages.
Email
Webhooks
Apprise
Push Notifications
Discord
Chat
LINE Notify
Chat
Matrix
Chat
Mattermost
Chat
Microsoft Teams
Chat
OpsGenie
Incident Management
PagerTree
Incident Management
Phone Call
Pushbullet
Push Notifications
SMS
Spike.sh
Incident Management
Trello
Project Management
Splunk On-Call
Incident Management
WhatsApp
Chat
Zulip
Chat
Upmon monitoring is a great fit for cron jobs and cron-like systems (systemd timers, Jenkins build jobs, Windows Scheduled Tasks, wp-cron, uwsgi cron-like interface, Heroku Scheduler, ...). A failed cron job often has no immediate visible consequences and can go unnoticed for a long time.
Specific examples:
You can use Upmon for lightweight server monitoring: ensuring a particular system service or the whole server is alive and healthy. Write a shell script that checks for a specific condition, and pings Upmon if successful. Run the shell script regularly.
Specific examples: