Beszel is a lightweight, self-hosted server monitoring hub. It uses a Go-based hub server and lightweight agents installed on the machines you want to monitor. Beszel gives you CPU, memory, disk, and network metrics for your entire fleet from a single web dashboard. But Beszel itself needs monitoring — if the hub goes down, or if agents lose connectivity, your monitoring coverage disappears without any warning. Vigilmon closes that gap by watching Beszel from the outside, so you always know when your monitoring infrastructure has a problem.
What You'll Set Up
- HTTP uptime monitoring for the Beszel hub dashboard (port 8090)
- Agent connectivity health check via API
- Metrics collection pipeline probe
- Alert delivery verification heartbeat
- SSL certificate expiry monitoring
- Instant alerts for any Beszel infrastructure failure
Prerequisites
- Beszel hub running (Go) on port 8090
- At least one Beszel agent installed and reporting
- A free Vigilmon account
Why Monitoring Your Monitoring Tool Matters
Beszel is infrastructure for your infrastructure. When Beszel itself fails, you lose visibility into everything it was watching — and you lose the alerts that would have told you something was wrong. Common failure modes:
- Hub web server down — you can't view metrics, configure alerts, or access dashboards; agents may still collect data but you can't see it
- Agent connectivity lost — agents run but can't push metrics to the hub; metric history develops gaps silently
- Metrics collection pipeline stalled — metrics are collected but not stored or displayed correctly; charts appear frozen
- Alert delivery broken — Beszel is running and collecting data, but notifications aren't sent when thresholds are breached
- Disk full on hub host — Beszel's embedded database (PocketBase/SQLite) stops accepting writes; metrics collection silently stops
The meta-monitoring problem is real: your monitoring tool can fail quietly, and you only discover it when you go to check on something else. Vigilmon provides the external check that Beszel can't provide for itself.
Step 1: Monitor the Beszel Hub Dashboard
Beszel's web interface runs on port 8090. Add an HTTP uptime monitor to confirm the hub is running:
- Log in to vigilmon.online and click Add Monitor.
- Set Type to
HTTP / HTTPS. - Enter your hub URL:
https://beszel.yourdomain.com(orhttp://your-server-ip:8090if you haven't put it behind a reverse proxy). - Set Check interval to
1 minute. - Set Expected HTTP status to
200. - Click Save.
If Beszel is behind a reverse proxy (nginx, Caddy, Traefik), monitor both the proxied URL and the direct port 8090 address. Beszel uses PocketBase as its backend, which serves the UI from the same port — a dashboard failure means the entire hub process is down.
Step 2: Monitor Agent Connectivity Health
Beszel agents push metrics to the hub over a persistent connection. If agents lose connectivity, metric gaps appear in your charts but no alert fires by default. Use Beszel's API to check agent status from Vigilmon's perspective.
First, verify the Beszel API health endpoint:
- Click Add Monitor → HTTP / HTTPS.
- URL:
https://beszel.yourdomain.com/api/health(PocketBase's built-in health endpoint). - Expected status:
200. - Under Advanced, set Expected response body contains to
"status":"ok". - Check interval:
2 minutes. - Save.
Confirm the endpoint manually:
curl -s https://beszel.yourdomain.com/api/health
# {"status":"ok"}
For deeper agent status checking, use a cron-driven heartbeat that queries the Beszel API for connected agents. In Vigilmon:
- Click Add Monitor → Cron Heartbeat.
- Name it
Beszel Agent — db-server-01(one per agent server). - Expected interval:
5 minutes. - Copy the heartbeat URL.
On each agent server, add a cron job:
# Run every 5 minutes — ping Vigilmon only if beszel-agent is alive
*/5 * * * * pgrep beszel-agent > /dev/null && curl -s https://vigilmon.online/heartbeat/YOUR_HEARTBEAT_TOKEN
If the agent process crashes or the server reboots without restarting the agent, the heartbeat goes silent and Vigilmon alerts you.
For servers running beszel-agent as a systemd service, hook the ping in directly:
[Service]
ExecStart=/usr/local/bin/beszel-agent
ExecStartPost=/bin/sh -c 'sleep 10 && curl -s https://vigilmon.online/heartbeat/YOUR_HEARTBEAT_TOKEN'
Step 3: Monitor the Metrics Collection Pipeline
The metrics pipeline is the path from agent collection through hub storage to dashboard display. A stalled pipeline means Beszel charts show stale data without any error indicator.
Add a monitor that checks a known-good metrics endpoint to confirm data is flowing:
- Click Add Monitor → HTTP / HTTPS.
- URL:
https://beszel.yourdomain.com/api/collections/stats/records?perPage=1&sort=-created - Expected status:
200 - Add a Body match:
"totalItems"(confirms the response is a records list, not an error) - Check interval:
5 minutes - Save.
This checks that the PocketBase records API is responding with metrics data. Combine it with the agent heartbeat from Step 2 to distinguish "hub is up but agents are disconnected" from "hub is up but pipeline is stalled."
Step 4: Monitor Alert Delivery
Beszel can send alerts via email, Telegram, Slack, or other channels when monitored servers exceed thresholds. If alert delivery is broken, your servers can be in critical state while Beszel silently fails to notify you.
Use a Vigilmon heartbeat to verify alert delivery is functioning. In Vigilmon:
- Click Add Monitor → Cron Heartbeat.
- Expected interval:
60 minutes. - Copy the heartbeat URL.
Configure a Beszel webhook alert that fires on a predictable, low-risk condition and points to the Vigilmon heartbeat:
Alert type: Webhook
URL: https://vigilmon.online/heartbeat/YOUR_ALERT_HEARTBEAT_TOKEN
Trigger: CPU > 0% (guaranteed to fire on any active server)
Frequency: Every 1 hour
This creates a canary: as long as Beszel is evaluating alerts and delivering them, the heartbeat fires every hour. If Beszel stops evaluating or delivering alerts, the heartbeat goes silent and Vigilmon alerts you externally.
Step 5: SSL Certificate Alerts
If your Beszel hub is exposed over HTTPS, a lapsed certificate will lock you out of the dashboard entirely. Add certificate expiry monitoring:
- Open the monitor created in Step 1 (the hub dashboard monitor).
- Enable Monitor SSL certificate.
- Set Alert when certificate expires in less than
21 days. - Click Save.
A 21-day window gives you three renewal cycles with Let's Encrypt and enough lead time to troubleshoot any DNS or ACME challenge failures before the certificate actually expires.
Step 6: Configure Alert Channels
- In Vigilmon, go to Alert Channels → Add Channel.
- Add email, Slack (paste your incoming webhook URL), or another channel.
- For the hub dashboard monitor, set Consecutive failures before alert to
2— brief restarts during Beszel upgrades are normal. - For the API health and agent connectivity monitors, set to
1— monitoring infrastructure failures need immediate attention. - Enable the alert channel on all monitors.
Alert example:
🔴 DOWN: beszel.yourdomain.com (HTTP)
Status: Connection refused
Detected: 2 minutes ago
Summary
| Monitor | Target | What It Catches |
|---|---|---|
| Hub dashboard | :8090 HTTP | Beszel process crashed, hub unreachable |
| API health endpoint | /api/health | PocketBase backend failure |
| Agent connectivity | Cron heartbeat per agent | Agent crashed, server rebooted |
| Metrics pipeline | API records endpoint | Pipeline stalled, stale data |
| Alert delivery | Canary heartbeat | Alert evaluation or delivery broken |
| SSL certificate | Hub domain | Cert expiry before lockout |
Beszel gives you lightweight fleet monitoring on your own hardware. Vigilmon ensures that Beszel's own infrastructure stays healthy — so your monitoring coverage is always complete and your alerts are always reliable.
Get started free at vigilmon.online.