Home / Tools & Script / Metriche NAS – avanzate: Script PHP per Monitoraggio Sistema Synology v1.0.0

Uno script PHP completo per visualizzare in tempo reale uptime, RAM, spazio disco, traffico di rete e processi attivi direttamente dal tuo NAS Synology. Installazione guidata, configurazione dei permessi e ottimizzazione per DSM 7.x

README.md
Documentazione del progetto

Installa e configura uno script PHP personalizzato per monitorare uptime, RAM, disco, rete e processi sul tuo Synology NAS. Guida completa per DSM 7.x con Web Station.

Introduzione

Questo script PHP rappresenta una soluzione leggera e immediata per monitorare le metriche fondamentali del tuo NAS Synology direttamente da browser. A differenza di pacchetti complessi come Controllo Risorse di DSM, questa pagina web personalizzata offre una visione snapshot delle risorse di sistema con un'interfaccia moderna e responsive.

Lo script legge dati da /proc/meminfo, /proc/net/dev, esegue comandi come uptime e ps aux, e calcola lo spazio disco su volumi specifici. È ideale per chi desidera una dashboard minimalista integrata nel proprio ecosistema web senza dipendere da container Docker o servizi esterni.

Cosa Fa Questo Script

Metriche Monitorate

Lo script raccoglie e visualizza le seguenti informazioni di sistema:

  • Uptime del sistema: Mostra il tempo di attività del NAS e il carico medio tramite il comando uptime.
  • Utilizzo RAM: Legge /proc/meminfo per mostrare memoria totale, usata e disponibile in formato leggibile (B, KB, MB, GB, TB).
  • Spazio disco: Monitora un volume specifico (default /volume3) usando le funzioni PHP disk_total_space() e disk_free_space().
  • Traffico di rete: Estrae i byte ricevuti (RX) e trasmessi (TX) da tutte le interfacce di rete attive leggendo /proc/net/dev, escludendo il loopback lo.
  • Top 5 processi per CPU: Esegue ps aux --sort=-%cpu | head -n 6 per elencare i processi più avidi di risorse CPU.
  • Info ambiente: Mostra versione PHP, server software (es. Apache/Nginx) e data/ora corrente.

Formattazione Intelligente

La funzione fmtBytes() converte automaticamente i byte in unità leggibili (B, KB, MB, GB, TB) con due decimali, rendendo i dati immediatamente comprensibili.

L'interfaccia è costruita con CSS moderno (sfondo scuro #020617, card con ombreggiature, layout responsive con CSS Grid) e si adatta a desktop e mobile.

Prerequisiti di Sistema

Prima di installare lo script, verifica di avere:

  • Synology DSM 7.0 o superiore (testato su DSM 7.2 e 7.4).
  • Web Station installato dal Package Center di DSM.
  • Profilo PHP attivo (PHP 7.4 o superiore consigliato).
  • Permessi di lettura su /proc/meminfo, /proc/net/dev e accesso alla shell per shell_exec().
  • Gruppo http con permessi sulla cartella web condivisa.

Installazione Passo Passo

1. Installa Web Station e PHP

Accedi al DSM del tuo Synology e apri il Package Center.

Cerca e installa:

  • Web Station (se non già presente)
  • PHP (seleziona una versione recente come PHP 7.4 o 8.0)
Dopo l'installazione, Web Station sarà accessibile dal menu principale di DSM.

2. Configura il Profilo PHP

Apri Web Station dal menu principale.

Vai su Impostazioni linguaggio script > PHP.

Seleziona il profilo PHP predefinito (o creane uno nuovo) e clicca su Modifica.

Nella scheda Estensioni, assicurati che tutte le estensioni siano abilitate (specialmente quelle di sistema).

Nella scheda Impostazioni generali, verifica che shell_exec non sia disabilitato (alcuni hosting condivisi lo bloccano, ma su DSM dedicato è attivo di default).

Salva le modifiche.

3. Crea il File dello Script

Apri File Station e naviga nella cartella condivisa web.

Questa è la root del server web di Web Station.

Crea un nuovo file chiamato metriche-nas.php (o il nome che preferisci) e incolla il codice PHP fornito.

Assicurati che il file abbia estensione .php e non .txt.

4. Imposta i Permessi della Cartella

Nella stessa finestra di File Station, seleziona la cartella web, clicca con il tasto destro e scegli Proprietà®».

Vai alla scheda Autorizzazioni e verifica che il gruppo http abbia almeno i permessi di Lettura (meglio se Lettura/Scrittura per evitare problemi).

Se il gruppo http non esiste, crealo o usa l'utente http creato automaticamente da Web Station.

5. Configura il Percorso del Disco

Nel codice PHP, cerca la riga:

PHP
$path = '/volume3';

Modifica /volume3 con il percorso del volume che desideri monitorare (es. /volume1, /volume2, ecc.).

Se vuoi monitorare più volumi, puoi duplicare il blocco di codice o creare un array di percorsi e iterarci sopra.

6. Accedi alla Pagina

Apri il browser e digita:

CODICE
http://<IP-del-tuo-NAS>/metriche-nas.php

Sostituisci <IP-del-tuo-NAS> con l'indirizzo IP locale del tuo Synology (es. 192.168.1.100).

Dovresti vedere la dashboard con tutte le metriche in tempo reale.

Configurazione Avanzata

Abilitare shell_exec su DSM

Se la pagina mostra errori o dati mancanti per uptime e processi, shell_exec potrebbe essere disabilitato.

Su DSM, shell_exec è attivo di default per i profili PHP di Web Station, ma puoi verificarlo creando un file test.php con:

PHP
<?php
phpinfo();
?>

Carica il file via browser e cerca la sezione shell_exec.

Se è disabilitato, modifica il file php.ini del profilo PHP:

1. Apri Web Station > Impostazioni linguaggio script > PHP.
2. Clicca su
Modifica sul profilo attivo.
3. Vai alla scheda
Impostazioni generali.
4. Cerca disable_functions e rimuovi shell_exec dalla lista.
5. Salva e riavvia il servizio HTTP da
Pannello di controllo > Servizi terminali e applicazioni > Servizio HTTP > Riavvia.

In alternativa, modifica direttamente il file php.ini via SSH:

BASH
sudo vi /usr/local/etc/php74/php.ini

Cerca la riga:

INI
disable_functions = shell_exec, ...

Rimuovi shell_exec e salva.

Riavvia Web Station o il servizio HTTP.

Monitorare Più Volumi

Per estendere il monitoraggio a più volumi, modifica la sezione del disco così:

PHP
$volumes = ['/volume1', '/volume2', '/volume3'];

foreach ($volumes as $path) {
$diskTotal = @disk_total_space($path);
$diskFree = @disk_free_space($path);
$diskUsed = ($diskTotal !== false && $diskFree !== false) ? $diskTotal - $diskFree : 0;

echo "<h2>Disco " . htmlspecialchars($path) . "</h2>";
echo "<table>";
echo "<tr><th>Totale</th><td>" . ($diskTotal !== false ? fmtBytes($diskTotal) : 'N/D') . "</td></tr>";
echo "<tr><th>Usato</th><td>" . ($diskTotal !== false ? fmtBytes($diskUsed) : 'N/D') . "</td></tr>";
echo "<tr><th>Libero</th><td>" . ($diskTotal !== false ? fmtBytes($diskFree) : 'N/D') . "</td></tr>";
echo "</table>";
}

Questo ciclo stamper๲ una card per ogni volume specificato.

Personalizzare l'Interfaccia

Il CSS incluso è già responsive e moderno, ma puoi modificarlo per adattarlo al tuo stile.

Per esempio, per cambiare il colore di sfondo:

CSS
body { 
    background: #1a1a2e; / Nuovo colore scuro /
    color: #e5e7eb; 
}

Per aggiungere un logo o un'intestazione personalizzata, inserisci un tag <img> prima del titolo <h1>:

HTML
<img src="/logo.png" alt="Logo" style="height:40px; margin-bottom:12px;">

Assicurati che il file logo.png sia nella cartella web o in una sottocartella accessibile.

Risoluzione dei Problemi

La pagina mostra solo codice PHP o scarica il file

Questo errore indica che PHP non è configurato correttamente in Web Station.

Verifica:

  • Il file è nella cartella web (non in una sottocartella non configurata).
  • Il profilo PHP è selezionato in Web Station > Servizio Web > Modifica > Backend HTTP e Profilo PHP.
  • L'estensione del file è .php e non .txt o .php.txt.

Errori di permesso su /proc/meminfo o /proc/net/dev

Se le sezioni RAM o Rete mostrano "Nessun dato disponibile", il processo PHP non ha permessi di lettura.

Soluzioni:

  • Assicurati che il gruppo http abbia permessi di lettura su /proc.
  • Esegui da SSH:
BASH
sudo chmod 644 /proc/meminfo
sudo chmod 644 /proc/net/dev

  • Verifica che open_basedir non sia impostato su una directory restrittiva in php.ini.

shell_exec non restituisce dati per uptime o processi

Se le sezioni Uptime e Top processi sono vuote, shell_exec potrebbe essere disabilitato o bloccato.

Controlla:

  • In Web Station > PHP > Impostazioni generali, la voce disable_functions non includa shell_exec.
  • Da SSH, esegui uptime e ps aux manualmente per verificare che i comandi funzionino.
  • Se usi un profilo PHP personalizzato, modifica il file php.ini corrispondente (es. /usr/local/etc/php74/php.ini) e rimuovi shell_exec da disable_functions.

La pagina è lenta o non si carica

Se il caricamento è lento, i comandi shell_exec potrebbero bloccarsi.

Aggiungi un timeout ai comandi:

PHP
$uptimeRaw = trim(shell_exec('timeout 2 uptime 2>&1'));
$psRaw = shell_exec('timeout 2 ps aux --sort=-%cpu | head -n 6 2>&1');

Questo limita l'esecuzione a 2 secondi per comando.

Sicurezza e Best Practice

Limitare l'Accesso alla Pagina

Questa pagina espone informazioni sensibili sul tuo sistema (processi attivi, uso risorse, interfacce di rete).

Per proteggerla:

  • Accesso solo da rete locale: Configura il firewall di DSM per permettere l'accesso alla porta HTTP (80 o 8080) solo da indirizzi IP locali (es. 192.168.1.0/24).
  • Autenticazione HTTP: Crea un file .htaccess nella cartella web per richiedere username e password:
APACHE
AuthType Basic
AuthName "Area Riservata"
AuthUserFile /volume1/web/.htpasswd
Require valid-user

Genera il file .htpasswd con:

BASH
htpasswd -c /volume1/web/.htpasswd username
  • HTTPS obbligatorio: Configura un certificato SSL in Pannello di controllo > Sicurezza > Certificato e forza la redirect su HTTPS.

Non Esporre la Pagina su Internet

Evita di esporre questa pagina su Internet pubblico senza protezioni adeguate (firewall, autenticazione, VPN).

Se devi accedervi da remoto, usa:

  • VPN (OpenVPN o WireGuard su DSM)
  • QuickConnect con autenticazione a due fattori
  • Reverse proxy con autenticazione (es. Nginx Proxy Manager)

Aggiornare lo Script

Tieni lo script aggiornato se moduli DSM o PHP.

Verifica periodicamente:

  • Che i percorsi /proc/* siano ancora leggibili
  • Che shell_exec non sia stato disabilitato da aggiornamenti di sicurezza
  • Che le funzioni disk_total_space() e disk_free_space() funzionino con nuovi volumi o configurazioni RAID

Alternative e Integrazioni

Controllo Risorse di DSM

DSM include già uno strumento nativo chiamato Controllo risorse che mostra CPU, RAM, disco e rete in tempo reale con grafici storici.

Tuttavia, questo script PHP offre:

  • Maggiore personalizzazione dell'interfaccia
  • Integrazione in pagine web esistenti
  • Leggerezza (nessun container o servizio aggiuntivo)
  • Accesso diretto via URL senza login DSM (se configurato)

Monitoraggio con Docker

Se cerchi funzionalità avanzate (alert, storici, dashboard multiple), considera container Docker come:

  • Uptime Kuma: Monitoraggio uptime e latenza di servizi.
  • Netdata: Dashboard in tempo reale con metriche dettagliate.
  • Grafana + Prometheus**: Soluzione enterprise per monitoraggio e alerting.
Questo script PHP è ideale come complemento leggero a queste soluzioni, non come sostituto.

Conclusione

Questo script PHP trasforma il tuo Synology NAS in una dashboard di monitoraggio accessibile da browser, senza dipendenze esterne o configurazioni complesse.

Seguendo questa guida, avrai installato e configurato una pagina web che mostra uptime, RAM, disco, rete e processi in tempo reale, con un'interfaccia moderna e responsive.

Per ulteriori personalizzazioni, integra lo script con altri strumenti di monitoraggio o estendilo per includere metriche aggiuntive (temperatura CPU, stato SMART dei dischi, ecc.).

Buon monitoraggio!

Versione Corrente:
v1.0.0

Commenti e Feedback (0)

Nessun commento per questo progetto. Sii il primo a condividere un feedback!
Lascia un commento o una recensione

Devi aver effettuato l'accesso per poter scrivere un commento su questo progetto.

Accedi al tuo Account oppure Registrati