- Published on
Self-hosted monitoring con Grafana + Prometheus in LXC: il mio stack leggero
- Authors

- Name
- Alessandro Iannacone
Tenere d’occhio i servizi e i container è fondamentale, soprattutto se gestiti in self-hosting. In questo articolo ti mostro come ho configurato Grafana + Prometheus all’interno di container LXC su Proxmox, per ottenere uno stack di monitoring semplice, leggero e potente, completamente sotto il mio controllo.
🎯 Obiettivo
- Monitorare servizi, container Docker e nodi Proxmox
- Visualizzare tutto da un’unica dashboard Grafana
- Usare container LXC per efficienza e isolamento
- Nessuna esposizione pubblica: solo su rete VPN privata
🏗️ Stack utilizzato
- Prometheus (raccolta metriche)
- Grafana (visualizzazione dashboard)
- Node Exporter (metriche di sistema per host e container)
- Proxmox VE con container LXC dedicati
- Tutto in esecuzione su rete isolata tramite WireGuard VPN
⚙️ Setup dei container LXC
Creo due container:
CT110→ PrometheusCT111→ Grafana
Esempio per container Prometheus:
pct create 110 local:vztmpl/debian-12-standard_*.tar.zst \
--hostname prometheus \
--cores 1 \
--memory 1024 \
--net0 name=eth0,bridge=vmbr0,ip=dhcp \
--features nesting=1 \
--unprivileged 1 \
--rootfs local-lvm:8
📦 Installazione di Prometheus
Nel container Prometheus:
useradd --no-create-home --shell /bin/false prometheus
mkdir -p /etc/prometheus /var/lib/prometheus
# Scarico binario
wget https://github.com/prometheus/prometheus/releases/latest/download/prometheus-*-amd64.tar.gz
tar -xzf prometheus-*.tar.gz
cp prometheus-*/prometheus /usr/local/bin/
cp prometheus-*/promtool /usr/local/bin/
File di configurazione (/etc/prometheus/prometheus.yml):
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['10.10.0.2:9100', '10.10.0.3:9100']
Avvio con systemd oppure in background come processo semplice.
📦 Installazione di Node Exporter sui nodi
Su ogni nodo o container da monitorare:
wget https://github.com/prometheus/node_exporter/releases/latest/download/node_exporter-*-amd64.tar.gz
tar -xzf node_exporter-*.tar.gz
./node_exporter &
Espone metriche su porta 9100.
📊 Installazione di Grafana
Nel container CT111:
apt install -y apt-transport-https software-properties-common
wget -q -O - https://packages.grafana.com/gpg.key | apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" \
> /etc/apt/sources.list.d/grafana.list
apt update && apt install grafana
systemctl enable --now grafana-server
Accedo via browser su:
http://<IP_CONTAINER>:3000
Credenziali predefinite: admin / admin
🔗 Collegare Prometheus a Grafana
In Grafana:
- Vai su Settings → Data Sources
- Aggiungi Prometheus
- URL:
http://<IP_PROMETHEUS>:9090 - Salva e testa
📈 Dashboard consigliate
Importo dashboard già pronte da Grafana Cloud:
- Node Exporter Full → ID:
1860 - Docker Monitoring → ID:
193
Oppure creo le mie con CPU, RAM, disco, carico, e rete.
🔐 Sicurezza: rete isolata con VPN
- Grafana e Prometheus sono raggiungibili solo tramite VPN (WireGuard)
- Nessun servizio è esposto su internet
- Backup dei container su base settimanale
📦 Bonus: alerting email/Telegram
Grafana supporta alert via:
- Email (SMTP via msmtp)
- Webhook
- Telegram Bot
Imposto alert per:
- Uptime basso
- Uso RAM o disco oltre soglia
- Servizi Docker non in esecuzione
✅ Conclusione
Con questo stack leggero riesco a tenere tutto sotto controllo in tempo reale, senza strumenti esterni o servizi cloud.
Perfetto per ambienti self-hosted, VPN private e infrastrutture DevOps semplici ma robuste.
💬 Vuoi una copia delle mie dashboard?
Scrivimi via email e te le invio volentieri in JSON pronte da importare!