Pi Stats
NuevoDashboard de monitoreo en tiempo real para Raspberry Pi — un servidor Python sin dependencias expone métricas del sistema, mientras un dashboard hecho con Vite + React las muestra en vivo con gráficos de historial.
Descripción General
Pi Stats es un dashboard de monitoreo en tiempo real para Raspberry Pi — Python hace la medición, React la visualización. Un servidor Python sin dependencias (solo librería estándar) expone métricas de CPU, memoria, disco, temperatura, red y procesos, mientras un dashboard hecho con Vite + React las muestra en tiempo real con sparklines, medidores radiales y gráficos de historial.
Funcionalidades
- Métricas del Sistema: Uso de CPU (total + por núcleo), memoria y swap, uso y I/O de disco, temperatura de CPU/GPU, rx/tx de red por interfaz y procesos principales — todo leído directamente de
/proc,vcgencmdyps. - Historial: Un colector muestrea cada 5 segundos en SQLite (
metrics+rollupspor hora), con rangos de1H / 24H / 7Dservidos como ~120 puntos agrupados. - Dashboard en Vivo: Selector de intervalo de refresco, tarjetas de métricas con sparklines y medidores radiales, gráficos de CPU/red/I/O de disco, panel de salud del servidor, cuadrícula por núcleo, tablas de procesos principales y tema claro/oscuro.
- Cero Dependencias (Servidor): Construido completamente con la librería estándar de Python 3 —
http.server,sqlite3ythreading. No requierepip install. - Modo Mock: Ejecuta todo el stack con datos sintéticos y variables para desarrollo local o demos — sin necesidad de hardware Raspberry Pi.
- Autenticación Opcional: Autenticación HTTP Basic mediante una sola variable de entorno
PI_STATS_PASSWORD.
Stack Tecnológico
Servidor:
- Solo librería estándar de Python 3 —
http.server.ThreadingHTTPServer,sqlite3,threading - Métricas desde
/proc/*,statvfs,vcgencmdyps - Colector de 5 segundos en SQLite con rollups por hora
Cliente:
- React 18 + TypeScript, Vite 5
- Tailwind CSS 3, Recharts,
lucide-react, shadcn/ui - Hook personalizado
useStatsque consulta/api/statscon intervalos configurables
API
GET /api/stats
Devuelve un snapshot completo del sistema: hostname, uptime, load average, IP, modelo/núcleos/frecuencia de CPU y uso por núcleo, memoria y swap, uso e I/O de disco, temperaturas, contadores de red agregados y por interfaz, además de los procesos principales por CPU y memoria.
GET /api/history?range=1H|24H|7D
Devuelve ~120 puntos de historial agrupados por tiempo (bins de 30s / 12m / 35m) cubriendo CPU, memoria, temperatura, throughput de red, I/O de disco, uso de disco, temperatura de GPU y load.
Todas las demás rutas sirven el cliente React construido con protección contra path traversal.
Despliegue
Diseñado para correr directamente en una Raspberry Pi — un solo proceso Python sirve tanto la API como el build estático del cliente en el puerto 8000. Incluye ejemplos de systemd y crontab @reboot para ejecutar al arranque.