UpSnap is an open-source Wake-on-LAN manager that scans your local network, registers devices, and lets you power them on from a clean web UI — even on a schedule. Because UpSnap is the single control plane for remote device management, a crash or misconfiguration means you lose the ability to wake machines until someone notices. Vigilmon keeps watch on UpSnap's availability, database, device polling health, and scheduled wake jobs so you know before a missed 3 a.m. wake-up turns into a production incident.
What You'll Set Up
- HTTP uptime monitor for the UpSnap web UI (port 8090)
- TCP monitor for the WoL UDP broadcast path
- Cron heartbeat to confirm scheduled wake jobs are executing
- SQLite database health check via the API
- SSL certificate expiry alerts
Prerequisites
- UpSnap running on a Linux host (Docker or native, port 8090)
- A free Vigilmon account
Step 1: Monitor the Web UI
UpSnap's Go + SvelteKit server serves both the management API and the frontend on port 8090. Add an HTTP monitor:
- Log in to vigilmon.online and click Add Monitor.
- Set Type to
HTTP / HTTPS. - Enter your UpSnap URL:
http://your-server:8090(orhttps://upsnap.yourdomain.comif behind a reverse proxy). - Set Check interval to
1 minute. - Set Expected HTTP status to
200. - Click Save.
UpSnap doesn't expose a dedicated /health route by default, but the root path returns a 200 when the server is up. If you've placed UpSnap behind nginx or Caddy with a subdomain, monitor the proxied URL so the check also validates the proxy layer.
Step 2: Check the REST API Directly
The UpSnap REST API lives under /api/. A responsive API means the Go backend and SQLite database are both functioning. Add a second monitor targeting an API endpoint:
- Click Add Monitor →
HTTP / HTTPS. - URL:
http://your-server:8090/api/settings/ - Expected HTTP status:
200(public endpoint — returns app settings JSON without auth). - Check interval:
2 minutes. - Click Save.
If the web UI returns 200 but the API endpoint does not, the SvelteKit frontend is up but the Go backend has failed — a split you'd miss with a single root-path check.
Step 3: Monitor the SQLite Database via API Response
UpSnap stores its device registry, schedules, and settings in SQLite. A database failure causes API errors. You can detect this by checking that the API response is valid JSON with an expected field:
- Open the API monitor created in Step 2.
- Under Advanced, enable Response body contains and enter
"appName". - Click Save.
Now Vigilmon alerts if the API returns an error body (database locked, migration failure) even when the HTTP status code remains 200.
Step 4: Validate Wake-on-LAN Reachability with a TCP Monitor
WoL magic packets are sent as UDP broadcasts (port 9 by default). Vigilmon can't probe UDP directly, but you can confirm the UpSnap host is network-reachable and the broadcast path is intact by monitoring the TCP management port:
- Click Add Monitor → TCP Port.
- Host: your UpSnap server IP.
- Port:
8090. - Check interval:
2 minutes. - Click Save.
For a deeper WoL health check, add a lightweight script to your UpSnap host that fires a test magic packet to a known-offline MAC address and pings back to Vigilmon on success:
#!/bin/bash
# /usr/local/bin/wol-health-check.sh
wakeonlan AA:BB:CC:DD:EE:FF 2>/dev/null
# If the tool exits cleanly, the WoL stack is working
if [ $? -eq 0 ]; then
curl -s https://vigilmon.online/heartbeat/YOUR_HEARTBEAT_ID
fi
Schedule it with cron:
*/5 * * * * /usr/local/bin/wol-health-check.sh
Step 5: Cron Heartbeat for Scheduled Wake Jobs
UpSnap supports scheduling device wake-ups at specific times. If the internal cron scheduler silently fails, your server won't wake at the configured time. Use a Vigilmon cron heartbeat to detect this.
Add a ping to the device wake schedule script or hook into UpSnap's scheduled job by wrapping the scheduled action:
- In Vigilmon, click Add Monitor → Cron Heartbeat.
- Set Expected interval to match your shortest scheduled wake time — e.g.,
60minutes for an hourly wake job. - Copy the heartbeat URL.
- Send the ping from a host-level cron job that fires on the same schedule and confirms UpSnap's jobs ran:
#!/bin/bash
# Fire after UpSnap's scheduled job window
# Check if the target device came online (via ping)
if ping -c1 -W2 192.168.1.50 &>/dev/null; then
curl -s https://vigilmon.online/heartbeat/YOUR_HEARTBEAT_ID
fi
If the scheduled wake job fails and the device never comes online, the heartbeat ping is never sent and Vigilmon fires an alert.
Step 6: Monitor Device Status Polling
UpSnap periodically pings registered devices via ICMP to determine online/offline status. If this polling breaks, device states become stale. The polling health is reflected in the API — add a response-time monitor:
- Click Add Monitor →
HTTP / HTTPS. - URL:
http://your-server:8090/api/devices/ - Expected HTTP status:
200. - Maximum response time:
3000 ms— a slow response here indicates the Go backend is blocking on ICMP timeouts. - Click Save.
Step 7: SSL Certificate Alerts
If you're exposing UpSnap over HTTPS via a reverse proxy (nginx, Caddy, Traefik), add a certificate expiry monitor:
- Open the HTTPS monitor for your UpSnap domain.
- Enable Monitor SSL certificate.
- Set Alert when certificate expires in less than
21 days. - Click Save.
Step 8: Configure Alert Channels
- Go to Alert Channels and add Slack, email, or a webhook.
- Set Consecutive failures before alert to
2on HTTP monitors — the Go server may take a few seconds to restart after a crash. - Add a Maintenance window to suppress alerts during planned UpSnap upgrades.
Summary
| Monitor | Target | What It Catches |
|---|---|---|
| Web UI HTTP | :8090/ | App crash, frontend down |
| API HTTP | :8090/api/settings/ | Backend failure, DB error |
| TCP port | :8090 | Network unreachable |
| Cron heartbeat | Heartbeat URL | Scheduled wake job failure |
| Device API response time | :8090/api/devices/ | ICMP polling blocked or stalled |
| SSL certificate | HTTPS domain | TLS cert expiry |
UpSnap makes remote device management effortless — but only when it's running. With Vigilmon watching the web UI, API, device polling, and scheduled wake jobs, you'll know the moment UpSnap can't do its job, before a forgotten late-night server wake-up reminds you the hard way.