Dashboard di monitoraggio
โ Obiettivo
Creare una dashboard web browser-based con tema scuro, responsive e visualizzabile anche su smartphone, per monitorare un server Ubuntu via SSH. ร una Progressive Web App (PWA) installabile su Android/iOS, con grafici live e aggiornamenti in tempo reale via Socket.io.
๐งฑ Stack Tecnologico
-
Node.js + Express: backend server
-
Socket.io: comunicazione real-time
-
Chart.js: grafici dinamici
-
HTML + CSS (dark mode): frontend
-
PWA: manifest.json, service worker, icone
๐ Struttura del progetto
โ๏ธ Codice
๐ server.js (backend con Socket.io + Express)
๐ public/index.html (dashboard + PWA)
๐จ public/style.css (tema scuro)
๐ public/script.js (client Socket.io + grafici)
๐ public/manifest.json
๐ ๏ธ public/service-worker.js
๐ผ๏ธ Icone (cartella public/icons)
Puoi generare le icone a partire da una immagine base e ridimensionarle in:
-
96x96,144x144,192x192,512x512(PNG)
Update
๐ง 1. Backend โ server.js
Aggiungiamo lโutilizzo di si.fsSize() per ottenere tutti i filesystem montati e separatamente un controllo dedicato per il mount-point /mnt/storagepool.
๐ si.fsSize() restituisce un array con tutti i filesystem montati, inclusi /, /boot, /mnt/... e cosรฌ via github.com+2spec.org+2stackoverflow.com+2stackoverflow.com+6app.unpkg.com+6classic.yarnpkg.com+6.
๐ 2. Frontend โ script.js
Includi nuovi listener e visualizzazione:
๐งฉ 3. HTML โ inserisci i contenitori nella pagina
Aggiungi sotto la tabella principale:
E nello style.css aggiungi un po' di stile per chiarezza:
๐ 4. Riepilogo
-
si.fsSize()restituisce tutti i filesystem montati npmjs.com. -
Nel backend invii due eventi via Socket:
-
diskSingleโ ogni singolo disco/partizione. -
diskPoolโ solo/mnt/storagepoolper riassunto pool.
-
-
Nel frontend, aggiungi unโarea dedicata in cui inserire queste info in tempo reale.
-
Nessun plugin aggiuntivo; tutto gestito con
systeminformatione socket.io giร in uso.
Versione 2.0
Guida aggiornata: Dashboard di monitoraggio server Ubuntu con temperatura CPU da sensors
โ Obiettivo
Creare una dashboard web browser-based, tema scuro, responsive e installabile come PWA, per monitorare un server Ubuntu via SSH, con dati in tempo reale via Socket.io.
In questa versione, la temperatura della CPU viene letta con il comando Linux sensors invece che da systeminformation per avere valori piรน affidabili.
๐งฑ Stack Tecnologico
-
Node.js + Express (backend server)
-
Socket.io (comunicazione real-time)
-
Chart.js (grafici dinamici)
-
HTML + CSS (dark mode) (frontend)
-
PWA (manifest.json, service worker, icone)
-
Comando shell
sensors(per la temperatura CPU)
๐ Struttura del progetto
โ๏ธ Codice
๐ server.js (backend con Socket.io + Express + sensors per temperatura CPU)
Gli altri file (public/index.html, public/style.css, public/script.js, manifest.json, service-worker.js) restano invariati rispetto alla versione precedente.
๐งฉ Nota importante
-
Assicurati di avere installato il pacchetto
lm-sensorse che il comandosensorsfunzioni correttamente nel tuo sistema (sudo apt install lm-sensors+sudo sensors-detect). -
Il backend esegue il comando
sensorsogni 2 secondi per ottenere la temperatura CPU in modo piรน affidabile rispetto asysteminformation.
UPDATE FINAL (si spera)
Guida alla Dashboard Server Web Responsive con Monitoraggio (Node.js + Chart.js)
๐ง Introduzione
Questa guida descrive come creare una dashboard web responsive, dark theme, per il monitoraggio in tempo reale di un server Ubuntu via SSH. Utilizza Node.js, Express, Socket.io e Chart.js per mostrare dati su CPU, RAM, dischi, rete, temperatura CPU/GPU e carico GPU AMD. Include anche la configurazione come PWA.
๐ Struttura del progetto
server-dashboard/
โโโ public/
โ โโโ index.html
โ โโโ script.js
โ โโโ style.css
โ โโโ manifest.json
โ โโโ service-worker.js
โ โโโ icons/
โโโ server.js
โโโ package.json
โโโ package-lock.json
๐ Avvio rapido
-
Installa Node.js:
sudo apt install nodejs npm -
Installa dipendenze:
npm install express socket.io systeminformation -
Installa
sensorseradeontop:sudo apt install lm-sensors radeontop sudo sensors-detect -
Avvia la dashboard:
node server.js -
Apri nel browser:
http://localhost:3000
๐ง Componenti principali
1. server.js โ Backend
-
Recupera dati da
systeminformation,sensors,radeontop -
Emette dati via WebSocket (
socket.io) -
Raccoglie:
-
Carico CPU
-
RAM totale e usata
-
Utilizzo disco (primo disco + storage pool)
-
Rete (rx/tx)
-
Temperatura CPU e GPU (da
sensors) -
Dati dettagliati GPU AMD (da
radeontop)
-
2. index.html โ Frontend
-
Layout a tabella 1x6 per i grafici principali
-
Sezione inferiore con 2 colonne: GPU dettagliata e Storage
-
Responsive, dark theme, icone emoji
-
Include service worker per funzionare come PWA
3. script.js โ Frontend JS
-
Inizializza grafici con Chart.js
-
Riceve dati dal server via WebSocket
-
Aggiorna grafici e visualizzazioni (GPU bar, RAM, discoโฆ)
4. style.css โ Tema dark responsive
-
Layout a tabella per i 6 grafici principali
-
Due colonne responsive in basso (GPU e Storage)
-
Barre GPU dinamiche con tooltip
-
Nessuna scrollbar: sezioni visibili in verticale
๐ PWA: Progressive Web App
manifest.json
Configura nome, icona, colore tema, start_url.
service-worker.js
Caching base per offline e installabilitร su smartphone.
๐ Grafici
| Tipo | ID HTML | Dati |
|---|---|---|
| CPU | chartCpu | % uso CPU |
| RAM | chartRam | GB usati |
| Disco | chartDisk | GB usati sul primo disco |
| Temperature | chartTemp | ยฐC CPU + GPU (grafico doppio) |
| Rete | chartNet | KB/s (somma Rx+Tx) |
๐ GPU AMD (radeontop)
-
I dati sono estratti in tempo reale da
radeontop -d - -l 1 -
Parametri visualizzati con barre (tooltip descrittivo)
-
gpuLoad,ee,vgt,ta,sx,sh,spi,sc,pa,db,cb,vram,gtt,mclk,sclk
-
๐พ Storage
-
Ogni disco montato ha barra con
% -
Se presente
/mnt/storagepool, viene mostrato separatamente con info GB liberi/occupati
๐งผ Personalizzazioni finali
-
โ Layout 1x6 con
table, centrato e responsive -
โ Colonne inferiori piรน alte per mostrare tutta la GPU
-
โ Tema dark pulito
-
โ Compatibilitร mobile
-
โ Dati testuali sempre visibili sopra ogni grafico
โ TODO futuri (opzionale)
A cura di Arya (INFN Catania) โ Progetto dashboard real-time server