Grafana per il monitoraggio industriale dell'IoT: dashboard Modbus, avvisi, cronologia
Grafana è diventato lo strumento di riferimento per la visualizzazione dei dati industriali. Gratuito, open source ed estensibile, trasforma i vostri dati Modbus, OPC-UA o MQTT in dashboard operative. Questa guida vi mostra come progettare un sistema completo di monitoraggio industriale con Grafana — oppure come Eziwan ve lo offre già pronto all’uso.
- Perché scegliere Grafana per il monitoraggio industriale?
- Architettura: da Modbus a Grafana
- Installare Grafana + InfluxDB con Docker
- Creare il proprio primo dashboard industriale
- Configurare gli avvisi di Grafana
- Modelli e variabili Grafana per siti multipli
- Dashboard Grafana preconfigurate per il settore industriale
- Integrazione Eziwan → Grafana
- Domande frequenti — Grafana per il monitoraggio industriale
- Per approfondire
- Risorse aggiuntive
Perché scegliere Grafana per il monitoraggio industriale?
Grafana si è affermato nel settore per diversi motivi:
- Connettori universali: InfluxDB, TimescaleDB, PostgreSQL, Prometheus, MQTT, REST API — una fonte di dati per ogni stack
- Pannelli avanzati: serie temporali, indicatori, statistiche, tabelle, mappe di calore, diagrammi di flusso (con plugin)
- Avvisi integrati: notifiche via SMS, e-mail, Slack, PagerDuty, webhook
- Gestione degli accessi: team, cartelle, autorizzazioni per dashboard
- Plugin di settore: P&ID (diagrammi di flusso), schemi di tubazioni, schemi sinottici
Rispetto a un sistema SCADA tradizionale:
| Grafana (+ stack IoT) | SCADA Wonderware/Ignition | |
|---|---|---|
| Costo della licenza | 0 (open source) | 5.000–50.000 € |
| Costo dell'hosting | 50–200 €/mese (cloud) | Server dedicato + manutenzione |
| Variabili illimitate | ✅ | ❌ (fatturazione per tag) |
| Interfaccia web nativa | ✅ | ✅ (Ignition) / ❌ (Wonderware) |
| Ottimizzato per dispositivi mobili | ✅ | Parzialmente |
| Integrazione cloud | Nativa | Complessa |
Architettura: da Modbus a Grafana
Lo stack completo per monitorare i controllori Modbus in Grafana:
Alternativa per grandi volumi:
Soluzione Eziwan (tutto in uno):
Eziwan integra lo stack completo (raccolta dati Modbus/OPC-UA, serie temporali nel cloud, dashboard Grafana preconfigurate, avvisi via SMS/e-mail) senza che sia necessario installare e gestire i singoli componenti.
Installare Grafana + InfluxDB con Docker
# docker-compose.yml
version: '3.8'
services:
influxdb:
image: influxdb:2.7
ports:
- "8086:8086"
environment:
DOCKER_INFLUXDB_INIT_MODE: setup
DOCKER_INFLUXDB_INIT_USERNAME: admin
DOCKER_INFLUXDB_INIT_PASSWORD: mot_de_passe_securise
DOCKER_INFLUXDB_INIT_ORG: eziwan
DOCKER_INFLUXDB_INIT_BUCKET: industrie
DOCKER_INFLUXDB_INIT_RETENTION: 1825d # 5 ans
volumes:
- influxdb_data:/var/lib/influxdb2
grafana:
image: grafana/grafana:10.4.0
ports:
- "3000:3000"
environment:
GF_SECURITY_ADMIN_PASSWORD: grafana_securise
volumes:
- grafana_data:/var/lib/grafana
depends_on:
- influxdb
telegraf:
image: telegraf:1.29
volumes:
- ./telegraf.conf:/etc/telegraf/telegraf.conf:ro
depends_on:
- influxdb
volumes:
influxdb_data:
grafana_data:
Configurazione di Telegraf per MQTT
# telegraf.conf
[[inputs.mqtt_consumer]]
servers = ["tcp://localhost:1883"]
topics = ["usine/#"]
qos = 1
data_format = "json"
# Analisi sintattica del topic MQTT: fabbrica/sito/stazione/variabile
[[inputs.mqtt_consumer.topic_parsing]]
topic = "usine/+/+/+"
tags = "_/_/station/_"
fields = "_/_/_/value"
[[outputs.influxdb_v2]]
urls = ["http://influxdb:8086"]
token = "votre_token_influxdb"
organization = "eziwan"
bucket = "industrie"
Creare il proprio primo dashboard industriale
Pannello 1: Grafico di tendenza (serie temporale)
Per visualizzare l'andamento della pressione di una stazione nel tempo:
Query InfluxDB (Flux):
from(bucket: "industrie")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "mqtt_consumer")
|> filter(fn: (r) => r["station"] == "station1")
|> filter(fn: (r) => r["_field"] == "pression")
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "mean")
Pannello delle impostazioni:
- Tipo:
Time series - Unità asse Y:
bar(Pressione) - Spessore linea: 2
- Opacità riempimento: 10
- Soglie: verde < 8 bar, arancione 8-10 bar, rosso > 10 bar
Pannello 2: Indicatore (Valore istantaneo)
Per visualizzare il valore corrente di una variabile:
Query InfluxDB:
from(bucket: "industrie")
|> range(start: -1m)
|> filter(fn: (r) => r["station"] == "station1" and r["_field"] == "pression")
|> last()
Impostazioni del pannello:
- Tipo:
Gauge - Min: 0, Max: 16
- Unità:
bar - Soglie: 0=verde, 10=arancione, 12=rosso
Panel 3: Statistiche (KPI)
Per visualizzare il TRS o un contatore di produzione:
Query InfluxDB:
from(bucket: "industrie")
|> range(start: -24h)
|> filter(fn: (r) => r["_field"] == "pieces_produites")
|> sum()
Parametri pannello:
- Tipo:
Stat - Unità:
pcs(personalizzata) - Modalità colore:
Background(rosso se < obiettivo)
Panel 4: Tabella multisito
Per visualizzare lo stato di tutti i tuoi siti in tempo reale:
from(bucket: "industrie")
|> range(start: -5m)
|> filter(fn: (r) => r["_field"] == "pression" or r["_field"] == "debit" or r["_field"] == "etat")
|> last()
|> pivot(rowKey: ["_time", "station"], columnKey: ["_field"], valueColumn: "_value")
Risultato: tabella con le colonne Stazione / Pressione / Portata / Stato, una riga per ogni sito.
Configurare gli avvisi di Grafana
Avviso di superamento della soglia
In Grafana 10+ (Unified Alerting):
- Aprire il pannello →
Edit → Alert - Creare una regola:
Condition: WHEN last() OF query(A, 5m, now) IS ABOVE 10
- Configurare la notifica:
- Punto di contatto: Email →
maintenance@usine.fr - Punto di contatto: Webhook → SMS tramite Twilio/OVH SMS
- Punto di contatto: Email →
- Silenziamento automatico: 15 minuti dopo la conferma
Raggruppamento degli avvisi per siti multipli
Per evitare le "alert storms" quando più siti smettono di funzionare contemporaneamente:
# alertmanager.yml
route:
group_by: ['alertname', 'site']
group_wait: 30s
group_interval: 5m
repeat_interval: 3h
receiver: 'maintenance-team'
receivers:
- name: 'maintenance-team'
email_configs:
- to: 'maintenance@usine.fr'
send_resolved: true
webhook_configs:
- url: 'https://api.sms-provider.fr/send'
Annotazioni sugli eventi
Aggiungere annotazioni automatiche ai grafici in caso di allarmi:
// Creare un'annotazione InfluxDB in caso di errore
from(bucket: "industrie")
|> range(start: v.timeRangeStart)
|> filter(fn: (r) => r["_field"] == "defaut" and r["_value"] == 1)
|> map(fn: (r) => ({r with _value: "Défaut détecté sur ${r.station}"}))
Modelli e variabili Grafana per siti multipli
Le variabili dei modelli consentono di creare un dashboard generico riutilizzabile per tutti i tuoi siti.
Creare una variabile "site"
Dashboard Settings → Variables → New Variable:
- Nome:
site - Tipo:
Query - Origine dati: InfluxDB
- Query:
import "influxdata/influxdb/schema"schema.tagValues(bucket: "industrie", tag: "station")
Utilizzo della variabile nei pannelli
from(bucket: "industrie")
|> range(start: v.timeRangeStart)
|> filter(fn: (r) => r["station"] == "${site}")
|> filter(fn: (r) => r["_field"] == "pression")
L'operatore può ora selezionare il sito da un menu a tendina nella parte superiore della dashboard.
Dashboard Grafana preconfigurate per il settore industriale
Pannello di controllo della stazione di pompaggio
┌─────────────────────────────────────────────────────────────────┐
│ Stazione: [menu a tendina] │ Periodo: [6 ore|24 ore|7 giorni|30 giorni] │
├──────────────┬──────────────┬──────────────┬────────────────────┤
│ Pressione │ Portata │ Livello │ Stato pompa │
│ [gauge] │ [gauge] │ [gauge] │ [stat 🟢/🔴] │
├──────────────┴──────────────┴──────────────┴────────────────────┤
│ Andamenti nelle ultime 24 ore: Pressione / Portata / Livello │
│ [time series graph] │
├─────────────────────────────────────────────────────────────────┤
│ Allarmi attivi │ Ultimi interventi │
│ [table] │ [table annotations] │
└─────────────────────────────────────────────────────────────────┘
Dashboard di produzione multisito
┌────────────────────────────────────────────────────────────────────┐
│ Vue globale — 15 sites │
├──────────┬──────────┬──────────┬──────────┬──────────┬────────────┤
│ Site 1 │ Site 2 │ Site 3 │ Site 4 │ Site 5 │ ... │
│ TRS: 87% │ TRS: 91% │ TRS: 73% │ TRS: 94% │ TRS: 82% │ │
│ 🟢 OK │ 🟢 OK │ 🔴 Alrm │ 🟢 OK │ 🟡 Warn │ │
├──────────┴──────────┴──────────┴──────────┴──────────┴────────────┤
│ Produzione cumulativa nelle ultime 24 ore: obiettivo vs. dati effettivi [grafico a barre] │
└────────────────────────────────────────────────────────────────────┘
Integrazione Eziwan → Grafana
Eziwan offre due modalità di integrazione con Grafana:
Modalità 1: Grafana ospitato su Eziwan (consigliato)
La piattaforma Eziwan integra Grafana in modo nativo. I vostri dati Modbus/OPC-UA sono già presenti nel nostro database di serie temporali ospitato in Francia. Potete accedere direttamente alle dashboard dal vostro browser, con:
- Dashboard preconfigurate per i casi d’uso più comuni (acqua, energia, produzione)
- Avvisi via SMS/e-mail gestiti
- Archiviazione dei dati per 5 anni senza necessità di configurazione
- Gestione multisito, multiutente e dei diritti di accesso
Modalità 2: Esportazione verso il proprio Grafana esistente
Se disponete già di un Grafana interno:
- API REST Eziwan: interrogate i vostri dati tramite
GET /api/v1/variables/{id}/history - Webhook MQTT: Eziwan pubblica i vostri dati sul vostro broker MQTT esistente
- Plugin Grafana Eziwan (disponibile su richiesta): plugin di origine dati per la connessione diretta
Domande frequenti — Grafana per il monitoraggio industriale
Grafana può sostituire un sistema SCADA in produzione? Per la visualizzazione e gli avvisi, sì, in molti casi. Per il controllo in tempo reale (scrittura sul PLC, sequenze di comando), si consiglia comunque di utilizzare un sistema SCADA o un sistema HMI dedicato. Grafana eccelle nella registrazione storica dei dati, nell'analisi delle tendenze e nel monitoraggio multisito.
Quale database utilizzare per archiviare i dati industriali in Grafana? InfluxDB è la scelta standard per le serie temporali industriali (alta frequenza, compressione nativa, potenti query Flux). TimescaleDB (estensione di PostgreSQL) è l'ideale se si dispone già di PostgreSQL. Prometheus è adatto alle metriche di infrastruttura, ma meno indicato per i dati di processo.
Come proteggere l'accesso a Grafana da Internet? Posizionare Grafana dietro un reverse proxy (Nginx/Traefik) con TLS, abilitare l'autenticazione OIDC/LDAP, disabilitare l'accesso anonimo, configurare avvisi in caso di tentativi di connessione non riusciti. Non esporre mai InfluxDB direttamente su Internet.
Grafana è in grado di gestire 1.000 siti e 100.000 variabili? Sì, con l'architettura giusta. InfluxDB 2.x supporta miliardi di punti dati. Grafana Enterprise gestisce il clustering. Per volumi molto elevati, prendere in considerazione l’utilizzo di Apache Kafka a monte per lo streaming e l’adozione di politiche di conservazione differenziate (dati con intervallo di 1 secondo conservati per 30 giorni, dati con intervallo di 1 minuto conservati per 5 anni).
È possibile visualizzare uno schema P&ID in Grafana? Sì, con il plugin Flowcharting (basato su draw.io). È sufficiente disegnare lo schema P&ID, associare le variabili di Grafana a ciascuna apparecchiatura e i valori verranno visualizzati in tempo reale sullo schema sinottico con un cambio di colore a seconda dello stato.
Per approfondire
- Blog: manutenzione predittiva IIoT — dai dati dei sensori all'allerta sul campo
- Blog: supervisione industriale da remoto — guida completa 2026
- Blog: Modbus TCP vs RTU — quale protocollo scegliere?
- Blog: parco fotovoltaico — supervisione e monitoraggio IoT
- Documentazione: configurazione Modbus RTU sul gateway Eziwan
Vuoi creare dashboard Grafana senza dover gestire l'infrastruttura? Prova Eziwan gratuitamente per 30 giorni — i tuoi dati Modbus su Grafana in meno di un'ora.
Risorse aggiuntive
- Modbus RTU verso il cloud — collega le tue apparecchiature RS-485 Modbus RTU al cloud
- Data logger industriale cloud — archiviazione storica dei tuoi dati Modbus nel cloud
- SCADA cloud — piattaforma SCADA cloud con dashboard integrate
- Protocolli industriali — comprendere Modbus, MQTT, OPC UA e altri protocolli
- Monitoraggio e teleassistenza industriale — monitoraggio multisito delle vostre apparecchiature Modbus