Guida al server

Monitora il tuo server con Grafana, Prometheus e Node Exporter (Docker)

Pubblicato il 23 dicembre 2025

Che tu stia ospitando un blog personale, gestendo un sito web di una piccola impresa o amministrando infrastrutture critiche, conoscere lo stato di salute e le prestazioni del tuo server è essenziale. Il monitoraggio del server ti aiuta a individuare i problemi prima che diventino critici, ottimizzare l'uso delle risorse e garantire che i tuoi servizi rimangano online.

In questa guida imparerai a configurare uno stack di monitoraggio di livello professionale utilizzando tre potenti strumenti open-source: Node Exporter (raccoglie metriche), Prometheus (memorizza e interroga dati) e Grafana (visualizza tutto magnificamente). Useremo Docker Compose per rendere la configurazione incredibilmente semplice e riproducibile.

Sebbene tu possa installare questi strumenti manualmente, Docker offre vantaggi significativi: ambienti isolati, aggiornamenti facili, configurazioni riproducibili e rollback semplici. Inoltre, tutta questa configurazione è gratuita, leggera e può essere eseguita insieme ai tuoi servizi esistenti. Iniziamo!

Node Exporter Dashboard - Full server monitoring with Grafana showing CPU, memory, disk, and network metrics

Anteprima: Una dashboard completa di Node Exporter che mostra le metriche del server in tempo reale

Perché usare Docker per il monitoraggio?

Sebbene tu possa installare Prometheus, Grafana e Node Exporter direttamente sul tuo sistema, Docker offre vantaggi convincenti:

Isolamento e ambiente pulito

Ogni componente viene eseguito nel proprio contenitore, evitando conflitti con i pacchetti di sistema o altre applicazioni.

Aggiornamenti e rollback facili

Aggiorna all'ultima versione con 'docker compose pull && docker compose up -d'. Se qualcosa fallisce, effettua il rollback modificando una riga nella tua configurazione.

Configurazione riproducibile

Tutto il tuo stack di monitoraggio è definito in un file docker-compose.yml. Copialo su un altro server, esegui 'docker compose up', fatto.

Portabile e coerente

Funziona in modo identico su Ubuntu, Debian, Fedora o qualsiasi distribuzione Linux. Nessun inferno di dipendenze, nessuna differenza di gestori di pacchetti.

Gestione delle risorse

Docker facilita l'impostazione di limiti di risorse, politiche di riavvio e controlli di salute. Inoltre, puoi monitorare più server da una singola istanza di Prometheus.

Lo stack di monitoraggio

La nostra soluzione di monitoraggio è composta da tre componenti che lavorano insieme senza problemi, tutti containerizzati con Docker:

Node Exporter

Un agente leggero che viene eseguito sul tuo server e raccoglie metriche di sistema come utilizzo della CPU, consumo di memoria, I/O del disco e traffico di rete. Espone queste metriche in un formato che Prometheus può comprendere.

Prometheus

Un database di serie temporali che raccoglie metriche da Node Exporter a intervalli regolari. Memorizza questi dati in modo efficiente e fornisce un potente linguaggio di query (PromQL) per analizzarli.

Grafana

Una bellissima piattaforma di visualizzazione che si connette a Prometheus e trasforma le metriche grezze in splendide dashboard interattive. Pensala come la finestra sull'anima del tuo server.

Prerequisiti

Prima di iniziare, assicurati di avere:

  • Un server Linux (VPS, server dedicato o anche un Raspberry Pi) - confronta le opzioni VPS nella nostra homepage
  • Accesso SSH al tuo server con privilegi sudo
  • Docker e Docker Compose già installati sul tuo server
  • Familiarità di base con la riga di comando e i concetti Docker
  • Almeno 1 GB di RAM libera e 2 GB di spazio su disco per i volumi

Installazione passo dopo passo

1. Creare la configurazione Docker Compose

Crea una directory per il tuo stack di monitoraggio e configuralo:

  1. Crea directory del progetto: mkdir -p ~/monitoring && cd ~/monitoring
  2. Crea file docker-compose.yml con la configurazione dello stack di monitoraggio
  3. Crea file di configurazione prometheus.yaml per definire i target di raccolta
  4. Imposta i permessi appropriati: chmod 644 docker-compose.yml prometheus.yaml
services:
    prometheus:
        image: docker.io/prom/prometheus:latest
        container_name: prometheus
        command: "--config.file=/etc/prometheus/prometheus.yaml --storage.tsdb.retention.time=30d"
        networks:
          - prometheus
        expose:
          - 9090
        volumes:
          - ./prometheus.yaml:/etc/prometheus/prometheus.yaml:ro
          - prometheus_data:/prometheus
        restart: unless-stopped

    grafana:
        container_name: grafana
        image: grafana/grafana-oss:latest
        networks:
          - prometheus
        ports:
          - "127.0.0.1:3000:3000"
        restart: unless-stopped
        volumes:
          - grafana_storage:/var/lib/grafana
          - grafana_config:/etc/grafana

    node_exporter:
        image: quay.io/prometheus/node-exporter:latest
        container_name: node_exporter
        expose:
          - 9100
        command:
          - '--path.rootfs=/host'
        pid: host
        restart: unless-stopped
        networks:
          - prometheus
        volumes:
          - '/:/host:ro,rslave'

volumes:
    grafana_storage:
    grafana_config:
    prometheus_data:

networks:
    prometheus:
Mantieni tutti i tuoi file di configurazione in questa directory. Questo rende facile il backup, il controllo della versione o la migrazione su un altro server.

2. Configurare Prometheus

Crea il file di configurazione di Prometheus (prometheus.yaml):

  1. La configurazione definisce quanto spesso raccogliere metriche (predefinito: ogni 15 secondi)
  2. Aggiungi node_exporter come target di raccolta puntando al contenitore Docker
  3. Opzionalmente configura il tempo di conservazione dei dati (30 giorni è un buon predefinito)
  4. Puoi aggiungere più target per monitorare diversi server da una singola istanza di Prometheus
global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets: ['node_exporter:9100']

3. Avviare lo stack

Con tutto configurato, avviamo lo stack di monitoraggio:

  1. Avvia tutti i servizi: docker compose up -d (il flag -d esegue i contenitori in background)
  2. Verifica lo stato: docker compose ps (tutti i servizi dovrebbero mostrare 'running')
  3. Visualizza i log: docker compose logs -f (premi Ctrl+C per uscire)
  4. Accedi a Grafana su http://ip-tuo-server:3000 (login predefinito: admin/admin)
  5. Accedi a Prometheus su http://ip-tuo-server:9090 (opzionale, per utenti avanzati)
Se devi apportare modifiche alla configurazione, modifica i file ed esegui 'docker compose restart' per applicarle.

Configurare la tua prima dashboard

Ora che tutto funziona tramite Docker, configuriamo Grafana per visualizzare le tue metriche:

Aggiungere Prometheus come origine dati

In Grafana, vai su Configurazione → Origini dati → Aggiungi origine dati → Prometheus. Imposta l'URL su http://prometheus:9090 (rete interna Docker) e clicca su 'Salva e testa'.

Importare una dashboard predefinita

Vai su Dashboard → Importa, inserisci l'ID dashboard 1860 (Node Exporter Full), seleziona la tua origine dati Prometheus e clicca su Importa. Vedrai istantaneamente splendidi grafici delle metriche del tuo server! Esplora la Libreria di Dashboard di Grafana su grafana.com/grafana/dashboards per migliaia di dashboard predefinite per ogni tipo di servizio.

Esplorare altre possibilità

Grafana è altamente personalizzabile e può visualizzare praticamente qualsiasi tipo di dati - dalle metriche del server ai sensori IoT, dai log delle applicazioni all'analisi aziendale. La libreria di dashboard offre soluzioni pronte per database, server web, container, piattaforme cloud e molto altro. Puoi anche creare dashboard completamente personalizzate su misura per le tue esigenze specifiche.

Personalizzare la tua vista

Clicca sulle impostazioni della dashboard (icona ingranaggio) per regolare i tassi di aggiornamento, gli intervalli di tempo e i layout dei pannelli. Rimuovi i pannelli che non ti servono e aggiungi nuovi cliccando su 'Aggiungi pannello'.

Configurare gli avvisi (Opzionale)

Configura regole di avviso per notificarti quando l'utilizzo della CPU è troppo alto, lo spazio su disco è insufficiente o i servizi falliscono. Grafana può inviare avvisi via email, Slack, Discord e molti altri canali.

Casi d'uso reali

Questa configurazione di monitoraggio basata su Docker funziona per tutti, dagli hobbisti ai professionisti:

L'auto-hoster

Stai eseguendo Nextcloud, Jellyfin o un server di automazione domestica. Vuoi sapere se qualcosa sta consumando la tua RAM o se il tuo disco si sta riempiendo.

Distribuisci lo stack di monitoraggio insieme ai tuoi servizi con docker-compose. Nessuna installazione manuale, nessun pacchetto a livello di sistema. Se decidi di rimuoverlo, basta 'docker compose down' e sparisce.

Lo sviluppatore

Stai sviluppando un'applicazione web e vuoi capire il suo consumo di risorse prima di distribuirla in produzione.

Esegui lo stack di monitoraggio in sviluppo con la stessa configurazione della produzione. Vedi l'impatto in tempo reale delle modifiche al tuo codice. Esporta/importa dashboard tra ambienti.

Proprietario di piccola impresa

Il sito web della tua azienda è critico per il business. Devi sapere se il server è in salute e quando è il momento di aggiornare.

Ricevi avvisi prima che i clienti notino problemi. Backup facile: basta copiare il tuo docker-compose.yml e il volume dati di Prometheus. Migra su un server più grande in pochi minuti.

Amministratore di sistema professionale

Gestisci più server per clienti o la tua organizzazione. Hai bisogno di monitoraggio centralizzato con metriche dettagliate e avvisi.

Distribuisci stack identici su tutti i server. Usa le funzionalità di rete di Docker per monitorare più nodi. Versiona tutta la tua infrastruttura di monitoraggio.

Best practice e suggerimenti Docker

Proteggi le tue dashboard

Usa Traefik o nginx come reverse proxy con HTTPS. Non esporre le porte direttamente a Internet. L'esempio collega Grafana solo a 127.0.0.1 per accesso locale.

Persisti i tuoi dati

Il docker-compose.yml usa volumi nominati per i dati di Grafana e Prometheus. Questo garantisce che le tue dashboard e metriche sopravvivano ai riavvii dei contenitori. Esegui backup regolari di questi volumi: 'docker run --rm -v monitoring_grafana_storage:/data -v $(pwd):/backup busybox tar czf /backup/grafana-backup.tar.gz /data'

Aggiornamenti regolari e monitoraggio della sicurezza

Aggiorna i tuoi contenitori mensilmente: 'docker compose pull && docker compose up -d'. Docker rende questo sicuro - se qualcosa fallisce, basta ripristinare il tag dell'immagine nel tuo file compose. Segui le note di rilascio per Grafana, Prometheus e Node Exporter. Iscriviti agli avvisi di sicurezza e alle notifiche CVE per questi progetti per rimanere informato sulle vulnerabilità.

Monitorare più server

Distribuisci node_exporter su ogni server che vuoi monitorare. Aggiorna prometheus.yaml per aggiungere nuovi target di raccolta. Una singola istanza di Prometheus può monitorare dozzine di server.

Passi successivi e argomenti avanzati

Una volta che ti senti a tuo agio con la configurazione basata su Docker, esplora questi argomenti avanzati:

  • Aggiungi più esportatori al tuo docker-compose.yml: MySQL, PostgreSQL, nginx, Redis o Blackbox exporter per il monitoraggio degli endpoint
  • Distribuisci Alertmanager come un altro contenitore per routing, raggruppamento e silenziamento sofisticato degli avvisi
  • Usa i profili docker-compose per eseguire configurazioni di sviluppo vs produzione con un comando
  • Esplora PromQL (Prometheus Query Language) per query avanzate di metriche e dashboard personalizzate
  • Configura Docker Swarm o Kubernetes per monitoraggio ad alta disponibilità su più nodi
  • Usa la funzionalità di provisioning di Grafana con volumi Docker per distribuire automaticamente le dashboard come codice
  • Monitora i contenitori Docker stessi con cAdvisor (container advisor di Google) nel tuo stack

Conclusione

Congratulazioni! Ora hai uno stack di monitoraggio professionale in esecuzione in contenitori Docker. La bellezza di questa configurazione è che è completamente portabile, facile da mantenere e può essere distribuita su un altro server in pochi minuti. Sebbene sia possibile installare questi strumenti manualmente senza Docker, l'approccio containerizzato offre vantaggi significativi in termini di isolamento, riproducibilità e facilità di aggiornamento. Ora puoi monitorare l'utilizzo della CPU, il consumo di memoria, l'I/O del disco, il traffico di rete e molto altro - tutto da splendide dashboard di Grafana.

Hai bisogno di un server affidabile per eseguire il tuo stack di monitoraggio? Dai un'occhiata al nostro confronto VPS per trovare il server perfetto per le tue esigenze - con prezzi trasparenti e specifiche dettagliate per aiutarti a prendere una decisione informata.