Monitorare un server Linux in modo efficace è fondamentale, soprattutto se ospita servizi self-hosted, container Docker, VPN, dashboard interne o applicazioni web. In questo contesto, Prometheus e Grafana rappresentano una delle combinazioni più interessanti per costruire un sistema di monitoraggio moderno, flessibile e completamente gestito in autonomia.
Prometheus si occupa della raccolta delle metriche, mentre Grafana permette di visualizzarle tramite dashboard chiare e personalizzabili. In questa guida vedremo come installare entrambi su Linux, configurare Prometheus, avviare i servizi con systemd e collegare tutto per creare una base solida di monitoraggio self-hosted.
Perché usare Grafana e Prometheus su Linux
Se hai uno o più server Linux, probabilmente vuoi tenere sotto controllo parametri come carico CPU, memoria RAM, spazio su disco, stato dei servizi e andamento generale delle risorse nel tempo. Farlo a mano è scomodo, mentre affidarsi sempre a piattaforme esterne non è necessariamente la scelta migliore.
Con una soluzione self-hosted puoi invece:
- monitorare i tuoi sistemi direttamente in casa o sul tuo VPS;
- mantenere pieno controllo sui dati raccolti;
- creare dashboard personalizzate per server, servizi e container;
- estendere facilmente il monitoraggio con exporter aggiuntivi.
Prometheus raccoglie metriche tramite endpoint HTTP, mentre Grafana le presenta in modo molto più leggibile attraverso pannelli, grafici e dashboard. In pratica, il primo raccoglie i dati e il secondo li rende davvero utili.
Requisiti
Per seguire questa guida ti servono:
- un server Debian o Ubuntu aggiornato;
- accesso da terminale con privilegi amministrativi;
- una connessione Internet per scaricare pacchetti e file ufficiali;
- un minimo di familiarità con systemd e con i file di configurazione YAML.
La procedura è pensata per un’installazione manuale e ordinata, adatta a un piccolo server domestico, a una macchina virtuale o a un VPS Linux.
Installare Grafana su Debian o Ubuntu
Per Grafana conviene usare il repository APT ufficiale, così da semplificare gli aggiornamenti futuri. Iniziamo installando alcuni pacchetti necessari:
sudo apt-get install -y apt-transport-https wget gnupg
Creiamo poi la directory per la chiave del repository e scarichiamo la chiave GPG ufficiale:
sudo mkdir -p /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/grafana.asc https://apt.grafana.com/gpg-full.key
sudo chmod 644 /etc/apt/keyrings/grafana.asc
A questo punto aggiungiamo il repository stabile di Grafana:
echo "deb [signed-by=/etc/apt/keyrings/grafana.asc] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
Aggiorniamo l’elenco dei pacchetti e installiamo Grafana:
sudo apt-get update
sudo apt-get install grafana
Una volta completata l’installazione, abilitiamo e avviamo il servizio:
sudo systemctl enable --now grafana-server
sudo systemctl status grafana-server
Se tutto è andato bene, Grafana sarà in ascolto sulla porta 3000. L’interfaccia web sarà raggiungibile da browser all’indirizzo:
http://IP-DEL-SERVER:3000
Installare Prometheus su Linux
Per Prometheus utilizzeremo un’installazione manuale, utile per capire bene la struttura dei file e mantenere il sistema pulito. Per prima cosa creiamo un utente dedicato e le directory necessarie:
sudo useradd --no-create-home --shell /bin/false prometheus
sudo mkdir -p /etc/prometheus
sudo mkdir -p /var/lib/prometheus
Spostiamoci poi in una directory temporanea e scarichiamo la release ufficiale dal sito di Prometheus. Il nome del file cambia in base alla versione più recente disponibile, quindi controlla sempre la release corrente:
cd /tmp
wget https://github.com/prometheus/prometheus/releases/download/v3.10.0/prometheus-3.10.0.linux-amd64.tar.gz
Se il comando precedente non funziona direttamente con il wildcard, scarica manualmente il file corretto dalla pagina ufficiale delle release e sostituisci il nome esatto nel comando successivo. Una volta ottenuto il file, estrailo:
tar xvf prometheus-*.linux-amd64.tar.gz
cd prometheus-*.linux-amd64
Copiamo ora i binari e i file necessari nelle directory definitive:
sudo cp prometheus /usr/local/bin/
sudo cp promtool /usr/local/bin/
sudo cp -r consoles /etc/prometheus
sudo cp -r console_libraries /etc/prometheus
sudo cp prometheus.yml /etc/prometheus/prometheus.yml
Assegniamo quindi i permessi corretti:
sudo chown -R prometheus:prometheus /etc/prometheus
sudo chown -R prometheus:prometheus /var/lib/prometheus
sudo chown prometheus:prometheus /usr/local/bin/prometheus
sudo chown prometheus:prometheus /usr/local/bin/promtool
Configurare Prometheus
Il file principale di configurazione è prometheus.yml. Apriamolo:
sudo nano /etc/prometheus/prometheus.yml
Per iniziare va benissimo una configurazione semplice come questa:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
scrape_interval: 5s
static_configs:
- targets: ['localhost:9090']
Con questa configurazione Prometheus raccoglie le metriche da sé stesso, cosa utile per verificare che il sistema sia già funzionante.
Creare il servizio systemd di Prometheus
Per far lavorare Prometheus in modo stabile conviene eseguirlo come servizio systemd. Creiamo quindi il file dedicato:
sudo nano /etc/systemd/system/prometheus.service
Inseriamo questo contenuto:
[Unit]
Description=Prometheus
After=network.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/var/lib/prometheus
Restart=on-failure
[Install]
WantedBy=multi-user.target
Salviamo il file, ricarichiamo systemd e avviamo il servizio:
sudo systemctl daemon-reload
sudo systemctl enable --now prometheus
sudo systemctl status prometheus
Se non ci sono errori, l’interfaccia di Prometheus sarà disponibile su:
http://IP-DEL-SERVER:9090
Verificare che Prometheus stia raccogliendo metriche
Aprendo l’interfaccia web di Prometheus puoi già eseguire qualche query semplice per verificare che il servizio funzioni correttamente. Un primo test molto utile è:
up
Se il risultato restituisce valore 1 per il target configurato, significa che Prometheus riesce a raggiungerlo e a raccogliere metriche correttamente.
Puoi provare anche altre query iniziali come:
count(prometheus_target_interval_length_seconds)
rate(prometheus_tsdb_head_chunks_created_total[1m])
Non è ancora un monitoraggio completo del server, ma è già la prova che la piattaforma di raccolta metriche è attiva.
Collegare Grafana a Prometheus
Ora che Prometheus è funzionante, possiamo collegarlo a Grafana. Accedi all’interfaccia di Grafana dal browser, effettua il login iniziale e aggiungi una nuova data source di tipo Prometheus.
Come URL puoi usare, per esempio:
http://localhost:9090
Se Grafana e Prometheus girano sulla stessa macchina, questo valore va bene. Se invece sono su host diversi, sostituisci localhost con l’indirizzo IP o il nome DNS corretto.
Dopo aver salvato la data source, puoi creare una nuova dashboard e iniziare con alcune query semplici, come:
up
rate(prometheus_tsdb_head_chunks_created_total[1m])
In questo modo avrai già una prima dashboard tecnica per verificare che la raccolta dati sia attiva.
Aggiungere il monitoraggio reale del server con Node Exporter
Per monitorare davvero CPU, RAM, disco, filesystem e rete del server Linux, Prometheus ha bisogno di interrogare un exporter dedicato. Quello più comune è Node Exporter, pensato proprio per esporre metriche di sistema.
Dopo aver installato Node Exporter, puoi aggiungere un nuovo job nel file prometheus.yml:
scrape_configs:
- job_name: 'prometheus'
scrape_interval: 5s
static_configs:
- targets: ['localhost:9090']
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
Dopo la modifica, puoi riavviare Prometheus oppure ricaricare la configurazione. Un modo rapido è inviare il segnale SIGHUP:
sudo kill -s SIGHUP $(pidof prometheus)
Da quel momento Grafana potrà usare anche le metriche di sistema del server, rendendo il monitoraggio molto più utile nella pratica.
Dashboard utili da creare in Grafana
Una volta configurato tutto, puoi iniziare con dashboard semplici ma efficaci. Ad esempio:
- utilizzo CPU nel tempo;
- consumo RAM e swap;
- spazio disco disponibile;
- traffico di rete in ingresso e uscita;
- uptime del server;
- stato dei target monitorati.
Questa base è già sufficiente per avere una visione molto più chiara dello stato del tuo server Linux, soprattutto se ospita servizi self-hosted sempre attivi.
Manutenzione e aggiornamenti
Grafana, essendo installato da repository APT, può essere aggiornato con il normale flusso del sistema:
sudo apt-get update
sudo apt-get upgrade
Prometheus, invece, se installato manualmente, va aggiornato scaricando una nuova release, sostituendo i binari e riavviando il servizio. Per questo motivo conviene mantenere separati binari, configurazione e dati, così da semplificare la manutenzione futura.
Considerazioni finali
Grafana e Prometheus rappresentano un’ottima base per costruire una piattaforma di monitoraggio self-hosted su Linux. Anche partendo da una configurazione minima, puoi ottenere in poco tempo un sistema già utile, estendibile e completamente sotto il tuo controllo.
Una volta che Prometheus raccoglie correttamente le metriche e Grafana le visualizza, puoi espandere il progetto aggiungendo exporter, alert, dashboard più avanzate e monitoraggio di container, NAS, Raspberry Pi o servizi pubblicati in rete.
Se gestisci server Linux, VPS, macchine domestiche o piccoli ambienti self-hosted, questa è senza dubbio una delle soluzioni più interessanti da provare.

