Skip to main content

Command Palette

Search for a command to run...

πŸ”Œ Power Reset Monitoring with Uptime Kuma

Mechanism to track & be notified of power issues on devices

Updated
πŸ”Œ Power Reset Monitoring with Uptime Kuma
R

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:

  1. A device-side script (custom-reboot.sh) that notifies Kuma of a reboot.

  2. A monitoring-host script (custom10.sh) that clears the alert every 10 minutes else the monitor will always be red/down.

  3. A push-based Uptime Kuma monitor to receive and visualise these events.


🧩 How It Works

  • When a device reboots, it sends a DOWN status to Kuma using a unique push URL.

  • Every 10 minutes, the Kuma host pings back with a UP status, 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:

  1. Go to Uptime Kuma β†’ Add New Monitor

  2. Select Push Monitor

  3. Copy the Push URL

  4. Insert that URL into both custom-reboot.sh (device) and custom10.sh (Uptime Kuma host)


πŸ” What You’ll See in Uptime Kuma

  • A reboot = a DOWN spike, tagged with the hostname

  • A UP alert 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. 🎯