Tool/server-surveillance-–-proxmox-and-raspberry-pi-monitoring-in-a-single-instance/

Server Surveillance – Proxmox and Raspberry Pi Monitoring in a Single Instance

Self-hosted monitoring dashboard for home network infrastructure.

My monitoring dashboard monitors my home server setup, including the Proxmox host and the Raspberry Pi integrated into the network, consolidating the most important status data of the local infrastructure into a single page on its own instance.

What is monitored

Proxmox Host

  • CPU: 20-core utilization, clock frequency per core, temperatures (via SSH)
  • RAM, Disk, Uptime
  • Intel RAPL: CPU package power in Watts (live from CPU telemetry, no external power measurement)

VMs and LXC Containers

  • CPU and RAM utilization of all running guests
  • Named display: Algroveon-AI, Algroveon-Agent, Algroveon-News, Home Assistant, TrueNAS, Paperless-ngx …

GPU (RTX PRO 2000 Blackwell, PCIe passthrough in Algroveon-AI)

  • Temperature, utilization, VRAM usage, fan speed, power consumption
  • Process tracking: which processes (Ollama, ComfyUI, etc.) are currently using GPU resources

Raspberry Pi 5

  • CPU, RAM, Disk, Temperature
  • Via a lightweight local agent (FastAPI, ~60 lines of Python)

Services

  • HTTP health checks for all relevant services: Ollama, Faster-Whisper, Piper TTS, ComfyUI, Algroveon-Agent, Algroveon-News, and others
  • Status badges: online / degraded / offline

24-Hour Report

Aggregated daily statistics directly from SQLite: peak values, average values, top CPU consumers, GPU process history. Electricity costs over 24 hours, 30 days, and since the last server boot. Calculated from RAPL telemetry, nvidia-smi, and a Pi estimation formula, multiplied by the configured electricity price. These values are to be understood as a practical approximation, not as an exact electrical measurement of the entire system.

Architecture

Browser (HTMX polling every 10s)
         ↓
FastAPI (SSR via Jinja2 + HTMX partials)
         ↓
┌────────┼──────────┐
Proxmox  SSH      Pi-Agent
REST API (nvidia-  GET /metrics
(proxmox  smi,     (psutil)
 er)      sensors)
         ↓
SQLite (MetricsHistory · AlertLog · ServiceConfig)

All page content is rendered server-side; updates are returned as HTMX fragments.

Collector and Alerting

The background collector runs in a two-phase mode:

  • Idle mode (every 180 s) – heartbeat during normal load
  • Active mode (every 30 s) – when trigger thresholds are exceeded (e.g., GPU load > 25%)

Configurable thresholds for CPU, RAM, Disk, GPU temperature, VRAM, and Pi temperature trigger alerts, which are logged in the database and become visible in the dashboard.

The Pi Agent

A small, standalone FastAPI script running on the Raspberry Pi that provides its current values via GET /metrics. Installation via systemd service. No agent infrastructure, no daemons – just psutil + a handful of lines of Python.