Tenere una dozzina di host monitorati senza centralizzare le metriche è come gestire una contabilità con post-it sparsi: funziona finché non serve davvero. Il mio stack attuale è Glances come collector locale, InfluxDB come time series database e Grafana come dashboard. è la terza iterazione del setup, dopo aver provato Telegraf+InfluxDB e Prometheus+node_exporter. Quello che lascio qui è la versione che gira oggi.

Glances in modalità export

Glances è nato come strumento “top-like” interattivo, ma supporta export verso una decina di backend, tra cui InfluxDB v2. L’idea: su ogni host gira glances come daemon che ogni dieci secondi pubblica le metriche verso un InfluxDB centrale.

Installazione su Debian/Ubuntu:


sudo apt install glances

Per il supporto InfluxDB v2 mi serve la libreria Python:


sudo apt install python3-influxdb-client

Su Mac uso brew:


brew install glances
pip3 install influxdb-client

Configurazione /etc/glances/glances.conf, sezione InfluxDB v2:


[influxdb2]
host=influx.example.local
port=8086
protocol=http
org=homelab
bucket=metrics
token=GENERATO_DA_INFLUXDB_UI
prefix=glances
tags=host:nome-host

Il token e l’org/bucket li creo via UI di InfluxDB. Il tag host mi consente di filtrare in Grafana per macchina.

Lanciare Glances come servizio

Niente script custom, uso il file unit di systemd che il pacchetto fornisce e creo un override per attivare l’export:


sudo systemctl edit glances.service

Aggiungo:


[Service]
ExecStart=
ExecStart=/usr/bin/glances --export influxdb2 -q -t 10

-q disabilita la UI (è un daemon), -t 10 aggiorna ogni dieci secondi. Poi:


sudo systemctl enable --now glances.service

InfluxDB centrale

L’InfluxDB sta su un Raspberry Pi 5 con SSD USB (mai microSD per database). Installazione dai repo ufficiali InfluxData:


wget -qO- https://repos.influxdata.com/influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata.gpg > /dev/null
echo "deb https://repos.influxdata.com/debian stable main" | sudo tee /etc/apt/sources.list.d/influxdata.list
sudo apt update
sudo apt install influxdb2
sudo systemctl enable --now influxdb

Il primo setup, sulla porta 8086, definisce org homelab, bucket metrics con retention 30 giorni e token operatore. Il token operatore lo conservo offline, e creo un token write-only “glances” da distribuire sugli host: in questo modo se un host viene compromesso, l’attaccante può scrivere metriche fasulle ma non leggere o cancellare quelle altrui.

Grafana sulla stessa macchina

Grafana sta nello stesso Pi InfluxDB, repo ufficiale, datasource InfluxDB con token read-only. Dashboard “Glances v2” importata dal marketplace ufficiale Grafana, ID 17424. Mi mostra in un colpo d’occhio CPU, RAM, load, IO, network, top processes per host.

Su Grafana imposto allerting nativo per soglie semplici: cpu_total > 80% per 10m, mem_used_pct > 90% per 5m, disk_used_pct > 85%. Notifiche via Telegram bot personale e email Resend.

Un caso reale

Un sabato mattina, verso le 9:00, ho aperto la dashboard per controllare i grafici prima del caffè e ho visto che l’host edge aveva avuto un picco di load avg 12.4 nelle quattro ore precedenti. CPU era stata al 100% per intervalli regolari. Ho guardato i top processes catturati da Glances: un cron mal configurato lanciava un import dati ogni cinque minuti invece che ogni cinque ore. Una virgola dimenticata nel crontab. Ho corretto e ho riallineato il job. Senza la cronologia centralizzata, il picco notturno me lo sarei perso, perché l’host era tornato in range per quando ho aperto la sessione SSH del mattino. Il bello di un time series database è esattamente questo: ti racconta cosa è successo quando tu non c’eri.

Cosa funziona bene

Glances è semplicissimo da installare e configurare, copre subito CPU, RAM, IO, network, processi, sensori. InfluxDB v2 con retention policy non si gonfia mai oltre i 5-6 GB di storage. Grafana è lo standard de facto e dashboard belle si trovano già fatte.

Limiti

Glances usa un po’ di RAM (50-80 MB per host) e su SBC molto vecchi (Raspberry Pi Zero) può essere troppo. L’export ogni dieci secondi è generoso per un homelab, ma se voglio cardinalità più alta devo passare a Telegraf. Per metriche applicative custom Glances non basta: aggiungo Prometheus scraper su porte specifiche, dove serve.

In pratica

Lo stack Glances+Influx+Grafana è il livello “infrastruttura di base” delle mie metriche. Sopra ci poggiano monitoring applicativi specifici (Observium per SNMP di rete, ping check serverless per uptime). Avere tre piani separati e indipendenti mi protegge dal classico problema “il monitoring è giù, quindi non so se è giù”: se Glances tace ma Observium grida, so subito da dove cominciare.


Immagine generata con Cloudflare Workers AI / FLUX.

Articolo originale su rpi.temporiti.net