Grafana para la supervisión industrial del IoT: panel de control Modbus, alertas, historial
Grafana se ha convertido en la herramienta de referencia para la visualización de datos industriales. Gratuita, de código abierto y ampliable, transforma tus datos Modbus, OPC-UA o MQTT en paneles de control operativos. Esta guía te muestra cómo diseñar un sistema completo de supervisión industrial con Grafana, o cómo Eziwan te lo ofrece «llave en mano».
- ¿Por qué Grafana para la supervisión industrial?
- Arquitectura: de Modbus a Grafana
- Instalar Grafana + InfluxDB con Docker
- Crea tu primer panel de control industrial
- Configurar las alertas de Grafana
- Plantillas y variables de Grafana para sitios múltiples
- Paneles de control preconfigurados de Grafana para la industria
- Integración de Eziwan con Grafana
- Preguntas frecuentes — Grafana para la supervisión industrial
- Para profundizar en el tema
- Recursos adicionales
¿Por qué Grafana para la supervisión industrial?
Grafana se ha consolidado en el sector por varias razones:
- Conectores universales: InfluxDB, TimescaleDB, PostgreSQL, Prometheus, MQTT, API REST — una fuente de datos para cada pila tecnológica
- Paneles avanzados: series temporales, indicadores, estadísticas, tablas, mapas de calor, diagramas de flujo (con complementos)
- Alertas integradas: notificaciones por SMS, correo electrónico, Slack, PagerDuty y webhook
- Gestión de accesos: equipos, carpetas y permisos por panel de control
- Complementos industriales: P&ID (diagramas de flujo), diagramas de tuberías y esquemas sinópticos
En comparación con un sistema SCADA tradicional:
| Grafana (+ stack IoT) | SCADA Wonderware/Ignition | |
|---|---|---|
| Coste de la licencia | 0 (código abierto) | 5 000–50 000 € |
| Coste de alojamiento | 50–200 €/mes (nube) | Servidor dedicado + mantenimiento |
| Variables ilimitadas | ✅ | ❌ (facturación por etiqueta) |
| Interfaz web nativa | ✅ | ✅ (Ignition) / ❌ (Wonderware) |
| Compatible con dispositivos móviles | ✅ | Parcial |
| Integración en la nube | Nativa | Compleja |
Arquitectura: de Modbus a Grafana
El conjunto completo de herramientas para supervisar controladores Modbus en Grafana:
Alternativa para grandes volúmenes:
Solución Eziwan (todo en uno):
Eziwan integra la pila completa (recogida de datos Modbus/OPC-UA, series temporales en la nube, paneles de Grafana preconfigurados, alertas por SMS/correo electrónico) sin que tengas que instalar ni mantener los componentes por separado.
Instalar 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:
Configuración de Telegraf para MQTT
# telegraf.conf
[[inputs.mqtt_consumer]]
servers = ["tcp://localhost:1883"]
topics = ["usine/#"]
qos = 1
data_format = "json"
# Análisis del tema MQTT: fábrica/planta/estación/variable
[[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"
Crea tu primer panel de control industrial
Panel 1: Gráfico de tendencias (series temporales)
Para visualizar la evolución de la presión de una estación a lo largo del tiempo:
Consulta en 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")
Panel de parámetros:
- Tipo:
Time series - Unidad del eje Y:
bar(Presión) - Ancho de línea: 2
- Opacidad de relleno: 10
- Umbrales: verde < 8 bar, naranja 8-10 bar, rojo > 10 bar
Panel 2: Indicador (valor instantáneo)
Para mostrar el valor actual de una variable:
Consulta de InfluxDB:
from(bucket: "industrie")
|> range(start: -1m)
|> filter(fn: (r) => r["station"] == "station1" and r["_field"] == "pression")
|> last()
Panel de parámetros:
- Tipo:
Gauge - Mín.: 0, Máx.: 16
- Unidad:
bar - Umbrales: 0 = verde, 10 = naranja, 12 = rojo
Panel 3: Estadísticas (KPI)
Para visualizar el TRS o un contador de producción:
Consulta de InfluxDB:
from(bucket: "industrie")
|> range(start: -24h)
|> filter(fn: (r) => r["_field"] == "pieces_produites")
|> sum()
Panel de parámetros:
- Tipo:
Stat - Unidad:
pcs(personalizada) - Modo de color:
Background(rojo si es < el objetivo)
Panel 4: Tabla multisitio
Para ver el estado de todas tus páginas web en tiempo real:
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")
Resultado: tabla con las columnas «Estación», «Presión», «Caudal» y «Estado», con una fila por emplazamiento.
Configurar las alertas de Grafana
Alerta por superación del umbral
En Grafana 10+ (Unified Alerting):
- Abrir el panel →
Edit → Alert - Crear una regla:
Condition: WHEN last() OF query(A, 5m, now) IS ABOVE 10
- Configurar la notificación:
- Punto de contacto: Correo electrónico →
maintenance@usine.fr - Punto de contacto: Webhook → SMS a través de Twilio/OVH SMS
- Punto de contacto: Correo electrónico →
- Silenciamiento automático: 15 minutos tras la confirmación
Agrupación de alertas para sitios múltiples
Para evitar las «tormentas de alertas» cuando varios sitios web dejan de funcionar al mismo tiempo:
# 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'
Anotaciones sobre eventos
Añadir anotaciones automáticas a los gráficos cuando se activen las alarmas:
// Crear una anotación de InfluxDB cuando se produce un fallo
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}"}))
Plantillas y variables de Grafana para sitios múltiples
Las variables de plantilla permiten crear un panel de control genérico que se puede reutilizar en todos tus sitios web.
Crear una variable «site»
Dashboard Settings → Variables → New Variable:
- Nombre:
site - Tipo:
Query - Fuente de datos: InfluxDB
- Consulta:
import "influxdata/influxdb/schema"schema.tagValues(bucket: "industrie", tag: "station")
Utilizar la variable en los paneles
from(bucket: "industrie")
|> range(start: v.timeRangeStart)
|> filter(fn: (r) => r["station"] == "${site}")
|> filter(fn: (r) => r["_field"] == "pression")
Ahora el operador puede seleccionar la ubicación en un menú desplegable situado en la parte superior del panel de control.
Paneles de control preconfigurados de Grafana para la industria
Panel de control de la estación de bombeo
┌─────────────────────────────────────────────────────────────────┐
│ Estación: [menú desplegable] │ Período: [6 h|24 h|7 días|30 días] │
├──────────────┬──────────────┬──────────────┬────────────────────┤
│ Presión │ Caudal │ Nivel │ Estado de la bomba │
│ [gauge] │ [gauge] │ [gauge] │ [stat 🟢/🔴] │
├──────────────┴──────────────┴──────────────┴────────────────────┤
│ Tendencias en las últimas 24 horas: Presión / Caudal / Nivel │
│ [time series graph] │
├─────────────────────────────────────────────────────────────────┤
│ Alarmas activas │ Últimas intervenciones │
│ [table] │ [table annotations] │
└─────────────────────────────────────────────────────────────────┘
Panel de control de producción multisitio
┌────────────────────────────────────────────────────────────────────┐
│ 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 │ │
├──────────┴──────────┴──────────┴──────────┴──────────┴────────────┤
│ Producción acumulada en 24 horas: objetivo frente a real [gráfico de barras] │
└────────────────────────────────────────────────────────────────────┘
Integración de Eziwan con Grafana
Eziwan ofrece dos formas de integración con Grafana:
Modo 1: Grafana alojado en Eziwan (recomendado)
La plataforma Eziwan integra Grafana de forma nativa. Tus datos Modbus/OPC-UA ya se encuentran en nuestra base de datos de series temporales alojada en Francia. Puedes acceder directamente a los paneles de control desde tu navegador, con:
- Paneles de control preconfigurados para los casos de uso más habituales (agua, energía, producción)
- Alertas por SMS/correo electrónico gestionadas
- Historial de 5 años sin necesidad de configuración
- Multisede, multiusuario y gestión de permisos
Modo 2: Exportación a tu Grafana ya existente
Si ya dispone de un Grafana interno:
- API REST de Eziwan: consulte sus datos a través de
GET /api/v1/variables/{id}/history - Webhook MQTT: Eziwan publica tus datos en tu broker MQTT existente
- Complemento de Grafana para Eziwan (disponible bajo petición): complemento de fuente de datos para conexión directa
Preguntas frecuentes — Grafana para la supervisión industrial
¿Puede Grafana sustituir a un sistema SCADA en producción? En cuanto a la visualización y las alertas, sí, en muchos casos. Para el control en tiempo real (escritura en el controlador lógico programable, secuencias de comandos), se sigue recomendando un sistema SCADA o un sistema HMI específico. Grafana destaca en el registro histórico, el análisis de tendencias y la supervisión de múltiples emplazamientos.
¿Qué base de datos se debe utilizar para almacenar datos industriales en Grafana? InfluxDB es la opción estándar para las series temporales industriales (alta frecuencia, compresión nativa, potentes consultas Flux). TimescaleDB (una extensión de PostgreSQL) es adecuada si ya dispones de PostgreSQL. Prometheus es adecuado para métricas de infraestructura, pero menos relevante para datos de procesos.
¿Cómo proteger el acceso a Grafana desde Internet? Colocar Grafana detrás de un proxy inverso (Nginx/Traefik) con TLS, activar la autenticación OIDC/LDAP, desactivar el acceso anónimo y configurar alertas ante intentos fallidos de conexión. Nunca exponer InfluxDB directamente a Internet.
¿Puede Grafana gestionar 1 000 sitios y 100 000 variables? Sí, con la arquitectura adecuada. InfluxDB 2.x admite miles de millones de puntos. Grafana Enterprise gestiona la agrupación en clústeres. Para volúmenes muy grandes, se recomienda utilizar Apache Kafka en una fase previa para el streaming, así como políticas de retención diferenciadas (datos de 1 s conservados durante 30 días, datos de 1 min conservados durante 5 años).
¿Puedo tener un esquema P&ID en Grafana? Sí, con el complemento Flowcharting (basado en draw.io). Dibuja tu esquema P&ID, asigna variables de Grafana a cada equipo y los valores se mostrarán en tiempo real en el esquema sinóptico, cambiando de color según el estado.
Para profundizar en el tema
- Blog: mantenimiento predictivo IIoT — de los datos de los sensores a las alertas sobre el terreno
- Blog: supervisión industrial a distancia — guía completa 2026
- Blog: Modbus TCP frente a RTU — ¿qué protocolo elegir?
- Blog: parque fotovoltaico — supervisión y monitorización IoT
- Documentación: configuración de Modbus RTU en la pasarela Eziwan
¿Te apetece tener paneles de Grafana sin tener que gestionar la infraestructura? Prueba Eziwan gratis durante 30 días: tus datos Modbus en Grafana en menos de una hora.
Recursos adicionales
- Modbus RTU a la nube — conecta tus equipos RS-485 Modbus RTU a la nube
- Registrador de datos industrial en la nube — historización de tus datos Modbus en la nube
- SCADA en la nube — plataforma SCADA en la nube con paneles de control integrados
- Protocolos industriales — comprender Modbus, MQTT, OPC UA y otros protocolos
- Supervisión y teleasistencia industrial — supervisión multisitio de sus equipos Modbus