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.

Rispondi