Skip to content

About

Lightweight, real-time web monitor for Raspberry Pi with WebSocket streaming, embedded SQLite history, and PMIC power telemetry. Built with Rust and uPlot.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

rPI-Monitoring

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.

Dashboard Preview

Features

  • 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_adc streamed over WebSocket.
    • Voltage, current, and wattage breakdown across subsystems (CPU/GPU cores, RAM, PCIe/USB, 3.3V rails).
  • 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.

Quick Start (Docker)

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 -d

Open http://<your-pi-ip>:5000 in your browser.

Building from Source

git clone https://github.com/solymosit/rPI-Monitoring.git
cd rPI-Monitoring
docker compose up -d --build

How It Works

  • 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.

About

Lightweight, real-time web monitor for Raspberry Pi with WebSocket streaming, embedded SQLite history, and PMIC power telemetry. Built with Rust and uPlot.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages