A lightweight, real-time web dashboard for monitoring Raspberry Pi systems, built with Rust (Axum) and uPlot. Designed to have a tiny memory and CPU footprint while providing detailed hardware metrics, storage health, networking, and historical graphs.
Hardware note: Tested on Raspberry Pi 5. It should work on other models (like Raspberry Pi 4) as well, though hardware-specific features like PMIC power rail telemetry are Pi 5 specific.
- Live System Telemetry (1 Hz WebSocket): CPU usage, core frequencies, memory usage, load averages, and thermal zone temperatures.
- Cooling: Real-time PWM fan speed (RPM) from
hwmon. - Storage & Disk Health:
- Read/write throughput and filesystem usage.
- NVMe and SATA SMART health metrics (temperature, power-on hours, TB written, spare life).
- SD card and eMMC wear-out / Pre-EOL indicators.
- Networking:
- Auto-detection for Ethernet and Wi-Fi interfaces.
- Multi-IP display per interface, link speed, and connection status.
- Wi-Fi signal strength (dBm), frequency, and security mode.
- Power Telemetry (Raspberry Pi 5):
- Live PMIC rail telemetry via
vcgencmd pmic_read_adcstreamed over WebSocket. - Voltage, current, and wattage breakdown across subsystems (CPU/GPU cores, RAM, PCIe/USB, 3.3V rails).
- Live PMIC rail telemetry via
- Historical Analysis & Embedded SQLite:
- Onboard SQLite database with WAL mode and automated retention cleanup.
- Quick range presets (Live, 1h, 6h, 24h, 3d, 7d).
- Custom date and time range picker with selectable aggregation resolutions (from 10s to 1h).
- Lightweight Canvas Charts: High-performance rendering via uPlot with dynamic scaling and minimal browser resource usage.
Run with Docker Compose using the prebuilt image:
services:
pi-monitor:
image: egyiptomi/rpi-monitoring:latest
container_name: pi-monitor
restart: unless-stopped
volumes:
- /etc/os-release:/etc/os-release:ro
- /etc/hostname:/etc/hostname:ro
- /proc:/proc:ro
- /sys:/sys:ro
- /var/run/wpa_supplicant:/var/run/wpa_supplicant:ro
- ./data:/app/data
devices:
- /dev/vcio:/dev/vcio
privileged: true
network_mode: "host"
uts: "host"Start the container:
docker compose up -dOpen http://<your-pi-ip>:5000 in your browser.
git clone https://github.com/solymosit/rPI-Monitoring.git
cd rPI-Monitoring
docker compose up -d --build- Backend: A Rust background worker gathers system metrics, drive health, and PMIC telemetry once per second. Data is recorded into a local SQLite database (
./data/metrics.db) and streamed to connected browsers via WebSocket. - Frontend: Vanilla JavaScript and CSS with uPlot. Keeps memory usage minimal without heavy frontend frameworks.
