Grafana voor industriële IoT-monitoring: Modbus-dashboard, waarschuwingen, geschiedenis
Grafana is uitgegroeid tot de standaardtool voor de visualisatie van industriële gegevens. Het is gratis, open-source en uitbreidbaar, en zet uw Modbus-, OPC-UA- of MQTT-gegevens om in operationele dashboards. Deze handleiding laat zien hoe u met Grafana een compleet industrieel monitoring-systeem kunt opzetten — of hoe Eziwan u dit kant-en-klaar aanbiedt.
- Waarom Grafana voor industriële monitoring?
- Architectuur: van Modbus tot Grafana
- Grafana + InfluxDB installeren met Docker
- Uw eerste industriële dashboard maken
- Grafana-waarschuwingen instellen
- Grafana-sjablonen en -variabelen voor meerdere sites
- Vooraf geconfigureerde Grafana-dashboards voor de industrie
- Integratie van Eziwan met Grafana
- Veelgestelde vragen — Grafana voor industriële monitoring
- Meer informatie
- Aanvullende bronnen
Waarom Grafana voor industriële monitoring?
Grafana heeft om verschillende redenen een vaste plaats veroverd in de sector:
- Universele koppelingen: InfluxDB, TimescaleDB, PostgreSQL, Prometheus, MQTT, REST API — één gegevensbron voor elke stack
- Uitgebreide dashboards: tijdreeksen, meters, statistieken, tabellen, heatmaps, stroomdiagrammen (met plug-ins)
- Geïntegreerde waarschuwingen: meldingen via sms, e-mail, Slack, PagerDuty, webhook
- Toegangsbeheer: teams, mappen, machtigingen per dashboard
- Industriële plug-ins: P&ID (stroomdiagrammen), leidingdiagrammen, synoptische schema’s
In vergelijking met een traditioneel SCADA-systeem:
| Grafana (+ IoT-stack) | SCADA Wonderware/Ignition | |
|---|---|---|
| Licentiekosten | 0 (open source) | 5.000–50.000 € |
| Hostingkosten | 50–200 €/maand (cloud) | Dedicated server + onderhoud |
| Onbeperkt aantal variabelen | ✅ | ❌ (facturering per tag) |
| Native webinterface | ✅ | ✅ (Ignition) / ❌ (Wonderware) |
| Geschikt voor mobiel | ✅ | Gedeeltelijk |
| Cloudintegratie | Native | Complex |
Architectuur: van Modbus tot Grafana
De volledige stack voor het monitoren van Modbus-PLC’s in Grafana:
Alternatief voor grote hoeveelheden:
Eziwan-oplossing (alles-in-één):
Eziwan bevat de volledige stack (Modbus/OPC-UA-gegevensverzameling, tijdreeksen in de cloud, vooraf geconfigureerde Grafana-dashboards, SMS-/e-mailwaarschuwingen) zonder dat u de afzonderlijke componenten zelf hoeft te installeren en te onderhouden.
Grafana + InfluxDB installeren met 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:
Telegraf configureren voor MQTT
# telegraf.conf
[[inputs.mqtt_consumer]]
servers = ["tcp://localhost:1883"]
topics = ["usine/#"]
qos = 1
data_format = "json"
# Parsen van het MQTT-onderwerp: fabriek/locatie/station/variabele
[[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"
Uw eerste industriële dashboard maken
Paneel 1: Trendgrafiek (tijdreeks)
Om de ontwikkeling van de druk van een station in de loop van de tijd weer te geven:
InfluxDB-query (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")
Instellingenpaneel:
- Type:
Time series - Eenheid Y-as:
bar(druk) - Lijnbreedte: 2
- Vuldekking: 10
- Drempelwaarden: groen < 8 bar, oranje 8-10 bar, rood > 10 bar
Paneel 2: Meter (momentane waarde)
Om de huidige waarde van een variabele weer te geven:
InfluxDB-query:
from(bucket: "industrie")
|> range(start: -1m)
|> filter(fn: (r) => r["station"] == "station1" and r["_field"] == "pression")
|> last()
Instellingenpaneel:
- Type:
Gauge - Min: 0, Max: 16
- Eenheid:
bar - Drempelwaarden: 0=groen, 10=oranje, 12=rood
Panel 3: Statistieken (KPI)
Om de OEE of een productieteller weer te geven:
InfluxDB-query:
from(bucket: "industrie")
|> range(start: -24h)
|> filter(fn: (r) => r["_field"] == "pieces_produites")
|> sum()
Instellingenpaneel:
- Type:
Stat - Eenheid:
pcs(aangepast) - Kleurmodus:
Background(rood indien < doelwaarde)
Panel 4: Tabel met meerdere locaties
Om de status van al uw websites in realtime te bekijken:
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")
Resultaat: tabel met de kolommen Station / Druk / Debiet / Status, één rij per locatie.
Grafana-waarschuwingen instellen
Waarschuwing bij overschrijding van de drempelwaarde
In Grafana 10+ (Unified Alerting):
- Open het paneel →
Edit → Alert - Maak een regel aan:
Condition: WHEN last() OF query(A, 5m, now) IS ABOVE 10
- Configureer de melding:
- Contactpunt: E-mail →
maintenance@usine.fr - Contactpunt: Webhook → SMS via Twilio/OVH SMS
- Contactpunt: E-mail →
- Automatisch stilzetten: 15 minuten na bevestiging
Groepering van waarschuwingen voor meerdere locaties
Om "alert storms" te voorkomen wanneer meerdere sites tegelijkertijd uitvallen:
# 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'
Aantekeningen bij gebeurtenissen
Automatische aantekeningen toevoegen aan grafieken bij alarmen:
// Een InfluxDB-annotatie aanmaken bij een storing
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}"}))
Grafana-sjablonen en -variabelen voor meerdere sites
Met sjabloonvariabelen kunt u een generiek dashboard maken dat u voor al uw websites kunt hergebruiken.
Een variabele "site" aanmaken
Dashboard Settings → Variables → New Variable:
- Naam:
site - Type:
Query - Gegevensbron: InfluxDB
- Query:
import "influxdata/influxdb/schema"schema.tagValues(bucket: "industrie", tag: "station")
De variabele in de panelen gebruiken
from(bucket: "industrie")
|> range(start: v.timeRangeStart)
|> filter(fn: (r) => r["station"] == "${site}")
|> filter(fn: (r) => r["_field"] == "pression")
De gebruiker kan nu de locatie selecteren via een vervolgkeuzemenu bovenaan het dashboard.
Vooraf geconfigureerde Grafana-dashboards voor de industrie
Dashboard voor het toezicht op het pompstation
┌─────────────────────────────────────────────────────────────────┐
│ Meetstation: [dropdown] │ Periode: [6 uur|24 uur|7 dagen|30 dagen] │
├──────────────┬──────────────┬──────────────┬────────────────────┤
│ Druk │ Debiet │ Niveau │ Status pomp │
│ [gauge] │ [gauge] │ [gauge] │ [stat 🟢/🔴] │
├──────────────┴──────────────┴──────────────┴────────────────────┤
│ 24-uurstrends: Druk / Debiet / Niveau │
│ [time series graph] │
├─────────────────────────────────────────────────────────────────┤
│ Actieve alarmen │ Laatste interventies │
│ [table] │ [table annotations] │
└─────────────────────────────────────────────────────────────────┘
Dashboard voor productie op meerdere locaties
┌────────────────────────────────────────────────────────────────────┐
│ 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 │ │
├──────────┴──────────┴──────────┴──────────┴──────────┴────────────┤
│ Gecumuleerde productie over 24 uur: doelstelling versus werkelijkheid [staafdiagram] │
└────────────────────────────────────────────────────────────────────┘
Integratie van Eziwan met Grafana
Eziwan biedt twee manieren om Grafana te integreren:
Modus 1: Grafana gehost in Eziwan (aanbevolen)
Het Eziwan-platform integreert Grafana native. Uw Modbus/OPC-UA-gegevens staan al in onze tijdreeksdatabase, die in Frankrijk wordt gehost. U hebt rechtstreeks toegang tot de dashboards via uw browser, met:
- Vooraf geconfigureerde dashboards voor veelvoorkomende toepassingen (water, energie, productie)
- Beheerde sms- en e-mailwaarschuwingen
- 5 jaar gegevensopslag zonder configuratie
- Ondersteuning voor meerdere locaties en gebruikers, en rechtenbeheer
Modus 2: Exporteren naar uw bestaande Grafana-instantie
Als u al een interne Grafana-instantie hebt:
- Eziwan REST-API: vraag uw gegevens op via
GET /api/v1/variables/{id}/history - MQTT-webhook: Eziwan publiceert uw gegevens op uw bestaande MQTT-broker
- Eziwan Grafana-plugin (op aanvraag beschikbaar): plugin voor directe verbinding
Veelgestelde vragen — Grafana voor industriële monitoring
Kan Grafana een SCADA-systeem in de productie vervangen? Voor visualisatie en waarschuwingen: ja, in veel gevallen. Voor realtime besturing (commando's naar de PLC, besturingssequenties) blijft een SCADA- of een speciaal HMI-systeem aanbevolen. Grafana blinkt uit in het bijhouden van historische gegevens, trendanalyse en monitoring van meerdere locaties.
Welke database is geschikt voor het opslaan van industriële gegevens in Grafana? InfluxDB is de standaardkeuze voor industriële tijdreeksen (hoge frequentie, native compressie, krachtige Flux-query’s). TimescaleDB (een PostgreSQL-extensie) is geschikt als u al PostgreSQL gebruikt. Prometheus is geschikt voor infrastructuurmetrieken, maar minder relevant voor procesgegevens.
Hoe beveilig je de toegang tot Grafana via het internet? Plaats Grafana achter een reverse proxy (Nginx/Traefik) met TLS, schakel OIDC/LDAP-authenticatie in, schakel anonieme toegang uit en stel waarschuwingen in voor mislukte inlogpogingen. Stel InfluxDB nooit rechtstreeks bloot aan het internet.
Kan Grafana 1.000 sites en 100.000 variabelen aan? Ja, met de juiste architectuur. InfluxDB 2.x ondersteunt miljarden gegevenspunten. Grafana Enterprise zorgt voor de clustering. Voor zeer grote volumes kunt u overwegen om Apache Kafka stroomopwaarts in te zetten voor streaming, en gedifferentieerde bewaarbeleidsregels toe te passen (gegevens van 1 seconde worden 30 dagen bewaard, gegevens van 1 minuut worden 5 jaar bewaard).
Kan ik een P&ID-overzicht in Grafana weergeven? Ja, met de Flowcharting-plugin (gebaseerd op draw.io). U tekent uw P&ID-schema, koppelt Grafana-variabelen aan elk apparaat, en de waarden worden in realtime weergegeven op het schema, waarbij de kleur verandert afhankelijk van de status.
Meer informatie
- Blog: voorspellend onderhoud met IIoT — van sensorgegevens tot waarschuwingen op de werkvloer
- Blog: industriële monitoring op afstand — complete gids 2026
- Blog: Modbus TCP versus RTU — welk protocol moet je kiezen?
- Blog: zonnepark — IoT-toezicht en -monitoring
- Documentatie: Modbus RTU-configuratie op Eziwan-gateway
Wilt u Grafana-dashboards zonder dat u de infrastructuur hoeft te beheren? Probeer Eziwan 30 dagen gratis uit — uw Modbus-gegevens in Grafana in minder dan een uur.
Aanvullende bronnen
- Modbus RTU naar de cloud — sluit uw RS-485 Modbus RTU-apparatuur aan op de cloud
- Industriële datalogger in de cloud — archiveren van uw Modbus-gegevens in de cloud
- SCADA in de cloud — SCADA-platform in de cloud met geïntegreerde dashboards
- Industriële protocollen — inzicht in Modbus, MQTT, OPC UA en andere protocollen
- Industriële monitoring en teleondersteuning — monitoring van uw Modbus-apparatuur op meerdere locaties