tutorial

Monitoring PufferPanel with Vigilmon

PufferPanel is your self-hosted multi-game server control panel — but managing dozens of game server nodes means many failure points. Here's how to monitor the web UI, API endpoints, daemon agents, databases, SFTP service, and individual game server processes with Vigilmon.

PufferPanel is an open source game server management panel that lets you run Minecraft, Factorio, Rust, CS:GO, Terraria, and many other game servers from a single interface. Its Go backend and Vue.js frontend run on port 8080, while the pufferd daemon agent runs on every game server node it manages. That distributed architecture means a single Vigilmon dashboard isn't enough — you need monitors for the web panel, the API, each daemon node, the database, and the individual game server processes underneath. Vigilmon gives you all of that in one place.

What You'll Set Up

  • Web panel availability monitor on port 8080
  • API endpoint response time checks for /api/auth/login and /api/servers
  • Per-node pufferd daemon health checks
  • Database (MySQL/MariaDB or SQLite) connectivity monitoring
  • SFTP server availability on port 2022
  • Game server process health per instance
  • WebSocket log streaming health
  • Cron heartbeat for scheduled backup jobs

Prerequisites

  • PufferPanel installed and accessible at http://your-server:8080
  • At least one pufferd daemon node registered
  • MySQL/MariaDB or SQLite configured as the panel database
  • A free Vigilmon account

Step 1: Monitor the Web Panel and API Endpoints

PufferPanel's web interface is the entry point for all administration. If the panel goes down, no one can start, stop, or configure any game server.

  1. Log in to vigilmon.online and click Add Monitor.
  2. Set Type to HTTP / HTTPS.
  3. Enter your panel URL: http://your-server:8080.
  4. Set Check interval to 1 minute.
  5. Set Expected HTTP status to 200.
  6. Click Save.

Next, add API endpoint monitors to verify the backend is responding correctly — not just the frontend:

Authentication endpoint:

  1. Click Add MonitorHTTP / HTTPS.
  2. URL: http://your-server:8080/api/auth/login.
  3. Set Method to POST and add header Content-Type: application/json with a minimal body {"username":"monitor","password":"invalid"}.
  4. Set Expected HTTP status to 400 or 401 — a structured error response proves the API is alive.
  5. Set Check interval to 2 minutes.

Servers list endpoint:

  1. Click Add MonitorHTTP / HTTPS.
  2. URL: http://your-server:8080/api/servers.
  3. Set Expected HTTP status to 401 (unauthenticated probe is expected to bounce).
  4. This confirms the API router is handling requests.

Step 2: Monitor Each pufferd Daemon Node

The pufferd daemon runs on every machine that hosts actual game server processes. If a daemon node goes offline, all game servers on that node become unmanageable — even if the web panel appears healthy.

Each pufferd daemon listens on a configurable port (default 5656 for daemon communication). Add a TCP monitor for each node:

  1. Click Add MonitorTCP Port.
  2. Enter the node's IP address and port: game-node-1.internal:5656.
  3. Set Check interval to 1 minute.
  4. Click Save.

Repeat for every registered daemon node. Name each monitor clearly — for example, pufferd – Node 1 (game-node-1) — so alerts pinpoint the exact node without log diving.

If your nodes are accessible over HTTP for their local API, add an HTTP monitor targeting http://game-node-1.internal:5656/api and expect a 200 or 401 response.


Step 3: Monitor Database Connectivity

PufferPanel stores all panel configuration, user accounts, and server definitions in MySQL/MariaDB (or SQLite for single-node setups). A database failure makes the panel unusable even if the web server is up.

For MySQL/MariaDB, add a TCP monitor:

  1. Click Add MonitorTCP Port.
  2. Host: localhost (or your DB host), Port: 3306.
  3. Set Check interval to 1 minute.

To get a richer signal, add a health check route to PufferPanel by creating a small sidecar script that queries the database and exposes an HTTP endpoint:

#!/bin/bash
# /opt/pufferpanel/scripts/db-health.sh — called by a lightweight HTTP server
mysql -u pufferpanel -p"$DB_PASS" -h localhost pufferpanel \
  -e "SELECT 1;" > /dev/null 2>&1 && echo "ok" || echo "error"

Expose this via a minimal web server (e.g., python3 -m http.server) or embed the check in a custom PufferPanel plugin route, then monitor http://localhost:9090/db-health expecting 200 ok.

For SQLite, monitor disk-level availability using a cron heartbeat (see Step 7) that verifies the database file is readable before pinging Vigilmon.


Step 4: Monitor Game Server Process Health

PufferPanel manages individual game server processes on each daemon node. A game server can crash while the daemon and panel remain healthy — Vigilmon needs a separate signal per game server.

For game servers that expose a query port (many do), add a TCP monitor per server instance:

| Game | Default Query Port | Protocol | |---|---|---| | Minecraft Java | 25565 | TCP | | Factorio | 34197 | UDP | | Rust | 28015 | TCP | | CS:GO | 27015 | TCP | | Terraria | 7777 | TCP |

  1. Click Add MonitorTCP Port.
  2. Enter game-node-1.internal:25565 for a Minecraft server.
  3. Set Check interval to 2 minutes.
  4. Name it Minecraft – Survival SMP.

For game servers that expose an HTTP RCON or admin API, add an HTTP monitor instead. If neither is available, use a cron heartbeat: configure your server startup script to ping Vigilmon every minute, and alert if the heartbeat goes missing.


Step 5: Monitor WebSocket Log Streaming and SFTP

WebSocket log streaming. PufferPanel streams game server console output to the web UI via WebSocket. If the WebSocket service breaks, the UI appears to work but console access is lost — game operators can't see crashes or run commands.

Use Vigilmon's HTTP monitor targeting the WebSocket upgrade endpoint:

  1. Click Add MonitorHTTP / HTTPS.
  2. URL: http://your-server:8080/api/servers/{server-id}/console.
  3. Set Expected HTTP status to 101 (Switching Protocols) or 401 (unauthenticated bounce — either proves the WS endpoint is alive).

SFTP server. PufferPanel includes an SFTP server on port 2022 for game file management. Add a TCP monitor:

  1. Click Add MonitorTCP Port.
  2. Host: your-server, Port: 2022.
  3. Set Check interval to 2 minutes.

An unreachable SFTP port means game operators can't upload maps, mods, or configs — often a more urgent outage than a game server crash.


Step 6: Heartbeat for Scheduled Backup Jobs

PufferPanel supports scheduled backup tasks per server. If a backup job silently fails, you may not discover data loss until after a server incident.

  1. In Vigilmon, click Add MonitorCron Heartbeat.
  2. Set the expected interval to match your backup schedule (e.g. 1440 minutes for daily backups).
  3. Copy the heartbeat URL: https://vigilmon.online/heartbeat/abc123.
  4. In your backup script or PufferPanel post-backup hook, add:
#!/bin/bash
# Run after each successful backup
tar -czf /backups/minecraft-$(date +%Y%m%d).tar.gz /gameservers/minecraft/
if [ $? -eq 0 ]; then
  curl -s https://vigilmon.online/heartbeat/abc123
fi

If the backup script crashes or the server runs out of disk space mid-archive, the heartbeat is never sent and Vigilmon alerts you before the next scheduled run.


Step 7: Configure Alert Channels

  1. Go to Alert Channels in Vigilmon and add Slack, Discord (via webhook), email, or PagerDuty.
  2. For game server TCP monitors, set Consecutive failures before alert to 3 — brief restarts are normal and shouldn't page on-call.
  3. For the web panel and API monitors, set Consecutive failures to 2 — panel downtime affects all operators immediately.
  4. Create separate alert channel routes for infrastructure (panel, daemons, database) vs. game servers, so game server crashes don't wake your sysadmin at 3 AM.

Summary

| Monitor | Target | What It Catches | |---|---|---| | Web panel | http://your-server:8080 | Panel crash, Go server exit | | Auth API | /api/auth/login (POST) | API routing failures | | Servers API | /api/servers | Backend database disconnection | | pufferd daemon (TCP) | game-node:5656 per node | Node offline, daemon crash | | Database (TCP) | localhost:3306 | MySQL/MariaDB connectivity | | Game server (TCP) | Per-server query port | Game process crash | | WebSocket console | /api/servers/:id/console | Console streaming broken | | SFTP server (TCP) | your-server:2022 | File management unavailable | | Backup heartbeat | Heartbeat URL | Silent backup failure |

PufferPanel's distributed design — panel, daemons, and game servers spread across nodes — means a monitoring strategy limited to the web UI misses the majority of real incidents. With Vigilmon watching every layer from the API to individual game processes, you get complete visibility across your entire self-hosted game server infrastructure.

Monitor your app with Vigilmon

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

Start free →