6af09ef9c6
Independent-hardware systemd timer on raspberrypi (.227) probing media-server Prometheus /-/healthy every 60s; pages ntfy prometheus-critical after 3 fails and on recovery. Catches media-server-dark, which the same-host Uptime-Kuma monitor structurally cannot. Deployed + live-outage tested 2026-06-30. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1.8 KiB
1.8 KiB
Off-host Prometheus watchdog (dead-man's-switch)
Independent-hardware watchdog that pages if the media-server (.183) Prometheus becomes unreachable — the one failure the same-host Uptime-Kuma monitor cannot detect (media-server itself going dark).
Runs on: Pi / raspberrypi (192.168.99.227), as root via systemd timer.
Behaviour
- Timer fires every 60s (
OnBootSec=2min,OnUnitActiveSec=60s). - Probes
http://192.168.99.183:9090/-/healthyfor the keywordHealthy. - After 3 consecutive failures (~3 min) publishes a priority-5 "Prometheus DOWN"
page to ntfy topic
prometheus-critical(compute6,http://192.168.99.198:8095); re-pages every 30 checks while still down. - On recovery sends a priority-4 "Prometheus recovered".
- State:
/var/lib/prom-watchdog/state("FAILS ALERTED").
Reaches the phone because the ntfy server has upstream-base-url: https://ntfy.sh
(FCM/APNS relay).
Install (on the Pi)
sudo install -m 755 prometheus-watchdog.sh /usr/local/bin/prometheus-watchdog.sh
cp prom-watchdog.env.example prom-watchdog.env # set NTFY_TOKEN only if ntfy auth is enabled
sudo install -m 600 prom-watchdog.env /etc/prom-watchdog.env
sudo install -m 644 prometheus-watchdog.service /etc/systemd/system/prometheus-watchdog.service
sudo install -m 644 prometheus-watchdog.timer /etc/systemd/system/prometheus-watchdog.timer
sudo systemctl daemon-reload
sudo systemctl enable --now prometheus-watchdog.timer
Notes
prom-watchdog.envhas an emptyNTFY_TOKEN— theprometheus-criticaltopic is unauthenticated on the LAN ntfy. If auth is ever enabled, put the real token in the deployed/etc/prom-watchdog.env(mode 600) and do not commit it.- Deployed + live-outage tested 2026-06-30 (DOWN + recovered pages confirmed).