tutorial

Monitoring Beszel with Vigilmon

Beszel is a lightweight self-hosted server monitoring hub with agent-based metrics collection — with a web dashboard, agent connectivity layer, metrics pipeline, and alert delivery all running on your infrastructure. Here's how to monitor Beszel itself with Vigilmon.

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:

  1. Log in to vigilmon.online and click Add Monitor.
  2. Set Type to HTTP / HTTPS.
  3. Enter your hub URL: https://beszel.yourdomain.com (or http://your-server-ip:8090 if you haven't put it behind a reverse proxy).
  4. Set Check interval to 1 minute.
  5. Set Expected HTTP status to 200.
  6. 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:

  1. Click Add MonitorHTTP / HTTPS.
  2. URL: https://beszel.yourdomain.com/api/health (PocketBase's built-in health endpoint).
  3. Expected status: 200.
  4. Under Advanced, set Expected response body contains to "status":"ok".
  5. Check interval: 2 minutes.
  6. 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:

  1. Click Add MonitorCron Heartbeat.
  2. Name it Beszel Agent — db-server-01 (one per agent server).
  3. Expected interval: 5 minutes.
  4. 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:

  1. Click Add MonitorHTTP / HTTPS.
  2. URL: https://beszel.yourdomain.com/api/collections/stats/records?perPage=1&sort=-created
  3. Expected status: 200
  4. Add a Body match: "totalItems" (confirms the response is a records list, not an error)
  5. Check interval: 5 minutes
  6. 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:

  1. Click Add MonitorCron Heartbeat.
  2. Expected interval: 60 minutes.
  3. 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:

  1. Open the monitor created in Step 1 (the hub dashboard monitor).
  2. Enable Monitor SSL certificate.
  3. Set Alert when certificate expires in less than 21 days.
  4. 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

  1. In Vigilmon, go to Alert ChannelsAdd Channel.
  2. Add email, Slack (paste your incoming webhook URL), or another channel.
  3. For the hub dashboard monitor, set Consecutive failures before alert to 2 — brief restarts during Beszel upgrades are normal.
  4. For the API health and agent connectivity monitors, set to 1 — monitoring infrastructure failures need immediate attention.
  5. 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.

Monitor your app with Vigilmon

Free plan — 5 monitors, no credit card required. Up and running in 60 seconds.

Start free →