π Power Reset Monitoring with Uptime Kuma
Mechanism to track & be notified of power issues on devices

Driving SD-WAN Adoption in South Africa
Power instability is a reality β whether you're dealing with remote edge routers, Raspberry Pis, or industrial IoT sensors. Wouldn't it be great to know when a device has unexpectedly rebooted due to power loss? π₯π
Using Uptime Kuma and a little scripting magic, you can turn your monitoring host into a central watchdog that knows when your devices go down β and when they come back.
To monitor actual devices being down requires separate monitors. This just identifies outages due to power resets.
π― What Youβll Achieve
You'll implement:
A device-side script (
custom-reboot.sh) that notifies Kuma of a reboot.A monitoring-host script (
custom10.sh) that clears the alert every 10 minutes else the monitor will always be red/down.A push-based Uptime Kuma monitor to receive and visualise these events.
π§© How It Works
When a device reboots, it sends a
DOWNstatus to Kuma using a unique push URL.Every 10 minutes, the Kuma host pings back with a
UPstatus, effectively clearing any stale reboot alerts.The notification identifies power outages that have occurred for purposed of causation.
π Device-Side Setup: custom-reboot.sh
Install this script on each remote device (router, server, IoT box):
#!/bin/bash
# Get the device hostname
HOSTNAME=$(hostname)
# URL encode the hostname
ENCODED_HOSTNAME=$(printf '%s' "$HOSTNAME" | jq -s -R -r @uri)
# Notify Kuma of reboot
URL="https://claymore.amastelek.com/api/push/ktqNBtJK13?status=down&msg=${ENCODED_HOSTNAME}&ping=1"
curl -s "$URL"
π Trigger on Boot
Add this to the deviceβs crontab:
@reboot sleep 180 && /usr/local/sbin/custom-reboot.sh
β±οΈ 3-minute delay ensures network is up before script runs.
π₯οΈ Kuma Host Setup: custom10.sh
This script is installed and scheduled only on the Uptime Kuma host. It acts as a clearing heartbeat by sending an UP status to the Kuma push monitor.
#!/bin/bash
# Get the Kuma host's hostname
HOSTNAME=$(hostname)
# URL encode the hostname
ENCODED_HOSTNAME=$(printf '%s' "$HOSTNAME" | jq -s -R -r @uri)
# Send heartbeat UP to clear any stale reboots
URL="https://claymore.amastelek.com/api/push/ktqNBtJK13?status=up&msg=${ENCODED_HOSTNAME}&ping=0"
curl -s "$URL"
β²οΈ Schedule Every 10 Minutes
Add to crontab on the Uptime Kuma server:
*/10 * * * * /usr/local/sbin/custom10.sh
π‘ Creating Push Monitors in Uptime Kuma
For each device you want to monitor:
Go to Uptime Kuma β Add New Monitor
Select Push Monitor
Copy the Push URL
Insert that URL into both
custom-reboot.sh(device) andcustom10.sh(Uptime Kuma host)
π What Youβll See in Uptime Kuma
A reboot = a
DOWNspike, tagged with the hostnameA
UPalert comes within 10 minutes, marking systems as up.
π You get visual logs of reboot frequency.
β Summary
You now have a lightweight, reliable mechanism to detect power-related reboots across devices using:
π Uptime Kuma's Push Monitor
π Device-side cron-based scripts
π§ Centralised clearing via the Kuma host
No agents. No overhead. Just results. π―




