En este artículo, quiero compartir mi experiencia usando sistemas de código abierto Zabbix y Grafana para visualizar el funcionamiento de las líneas de producción. La información puede ser útil para aquellos que buscan una forma rápida de representar visualmente o analizar los datos recopilados en proyectos de automatización industrial o IoT. Este artículo no es una guía detallada, sino más bien un concepto de un sistema de monitoreo basado en software abierto para empresas manufactureras.
Herramientas
Zabbix – lo hemos estado utilizando desde hace tiempo para monitorear la infraestructura de TI de la fábrica. El sistema resulta ser tan conveniente y versátil que comenzamos a ingresar datos de las líneas de producción, sensores y controladores. Esto nos permitió reunir todas las métricas en un solo lugar, crear gráficos simples de consumo de recursos y rendimiento de equipos, pero nos faltaba mucho el análisis y gráficos atractivos.
Grafana – es una herramienta poderosa para el análisis y visualización de datos. Una gran cantidad de complementos permite extraer datos de varias fuentes (zabbix, clickhouse, influxDB), procesarlos en tiempo real (calcular promedios, sumas, diferencias, etc.) y dibujar todo tipo de gráficos (desde líneas simples, velocímetros, tablas hasta diagramas complejos).
Draw.io – un servicio que permite dibujar en un editor en línea desde un simple diagrama de bloques hasta un plano de espacios. Hay muchas plantillas y objetos ya dibujados. Los datos se pueden exportar a todos los formatos gráficos principales o XML.
Reuniendo todo
Se han escrito muchos artículos sobre cómo instalar y configurar Grafana y Zabbix; yo hablaré sobre los puntos principales de la configuración.
En Zabbix servidor se crea un "nodo de red" (host), al cual pertenecerán los "elementos de datos" (item) con métricas de nuestros sensores. Los nombres de los nodos y los elementos de datos deben pensarse con antelación y hacerse lo más estructurados posible, ya que los estaremos consultando desde Grafana a través de expresiones regulares. Este enfoque es conveniente porque permite obtener datos de un grupo de elementos con una sola consulta.
Para configurar Grafana, será necesario instalar complementos adicionales:
- Zabbix por Alexander Zobnin (alexanderzobnin-zabbix-app) – integración con Zabbix
- natel-discrete-panel – complemento para visualización discreta en gráficos horizontales
- pierosavi-imageit-panel – complemento para mostrar datos sobre su propia imagen
- agenty-flowcharting-panel – un complemento para la visualización dinámica de diagramas de draw.io
La integración con Zabbix se configura en Grafana, en el menú de ConfiguraciónFuentes de datosZabbix. Allí debes ingresar la dirección del servidor API de Zabbix, en mi caso es , y el nombre de usuario con la contraseña para el acceso. Si todo se hizo correctamente, al guardar la configuración aparecerá un mensaje con el número de versión de la API: versión API de Zabbix: 5.0.1
Creamos un Dashboard
Aquí es donde comienza la verdadera magia de Grafana y sus complementos.
Complemento natel-discrete-panel
Tenemos datos sobre el estado de los motores en las líneas (funciona = 1, no funciona = 0). Con el gráfico discreto, podemos dibujar una escala que mostrará: el estado del motor, cuánto tiempo ha estado funcionando en minutos/horas o % y con qué frecuencia se ha iniciado.

Visualización de estados de los motores
En mi opinión, es uno de los mejores gráficos para visualizar el rendimiento del equipo. Es fácil ver cuánto tiempo está inactivo, en qué modos funciona más a menudo. Puede haber muchos datos, hay posibilidad de agregarlos por rangos, transformarlos según los valores (si el valor es '1', mostrar como 'ON')
Complemento pierosavi-imageit-panel
Imageit es útil cuando ya tienes un diagrama o plano dibujado del espacio, sobre el cual deseas superponer los datos de los sensores. En la configuración de visualización, debes ingresar la URL de la imagen y agregar los elementos de sensor que necesites. El elemento aparecerá en la imagen y se puede colocar en el lugar deseado con el mouse.

Diagrama del horno con métricas de temperatura y presión
Complemento agenty-flowcharting-panel
Quería hablar con más detalle sobre la creación de visualizaciones con FlowCharting, ya que es una herramienta increíblemente funcional. Permite crear un diagrama de mnemotecnia dinámico, cuyos elementos reaccionarán a los valores de las métricas (cambiar color, posición, nombre, etc.).
Obtención de datos
La creación de cualquier elemento de visualización en Grafana comienza con la consulta de datos desde una fuente, en nuestro caso Zabbix. Mediante estas consultas, necesitamos obtener todas las métricas que deseamos utilizar en el esquema. Los requisitos de las métricas son los nombres de los elementos de datos en Zabbix; se puede especificar tanto una métrica individual como un conjunto utilizando filtrado a través de expresiones regulares. En mi ejemplo, el campo Item contiene la expresión: "\/([^línea 1]|(disponibilidad)|(calabacín))\/"; esto significa: seleccionar todas las métricas cuyo nombre comienza estrictamente con "línea 1" o contiene la palabra "disponibilidad" o contiene la palabra "calabacín".

Ejemplo de configuración de consulta de datos sobre motores de la primera línea y disponibilidad de materias primas.
Transformación de datos.
Los datos de origen pueden no estar siempre en la forma en que necesitamos mostrarlos. Por ejemplo, tenemos datos por minuto sobre el peso del producto en el contenedor (kg), y necesitamos mostrar la velocidad de llenado en t/h. Hago esto de la siguiente manera: tomo los datos de peso y los transformo con la función delta de Grafana, que calcula la diferencia entre los valores de la métrica, de modo que el peso actual se convierte en kg/min. Luego multiplico por 0.06 para convertir el resultado a toneladas/hora. Dado que la métrica de peso se utiliza en varias consultas, le asigno un nuevo alias (setAlias) y lo usaré en la regla de visualización.

Ejemplo de uso del parámetro delta y del multiplicador, junto con el cambio de nombre de la métrica en la consulta.
Aquí hay otro ejemplo de transformación de datos: necesitaba contar la cantidad de lotes (comienzo del ciclo = arrancar motor). La métrica se calcula en función del estado del motor "línea 1 — bomba de desagüe del tanque 1 (estado)". La transformación: los datos de la métrica original se modifican con la función delta (diferencia de valores), de este modo la métrica tendrá el valor "+1" para el arranque del motor, "-1" para la detención y "0" cuando el motor no cambia su estado. Luego elimino todos los valores menores a 1 y los sumo. Como resultado, obtengo la cantidad de arranques del motor.
![]()
Ejemplo de transformación de datos del estado actual a la cantidad de arranques.
Ahora sobre la visualización en sí.
En la configuración de visualización hay un botón 'Edit Draw', que abre un editor donde se puede dibujar un esquema. Cada objeto en el esquema tiene sus propios parámetros. Por ejemplo, si se especifican las configuraciones de fuente en el editor, se aplicarán a la visualización de datos en Grafana.

Así es como se ve el editor en Draw.io
Después de guardar el esquema, aparecerá en Grafana y se podrán crear reglas para modificar elementos.
En los parámetros () especificamos:
- Options — se establece el nombre de la regla (Rule name), el nombre o apodo de la métrica cuyos datos se utilizarán (Apply to metrics). El tipo de agregación de datos (Aggregation) influye en el resultado final de la métrica, así Last — significa que se elegirá el último valor, avg — el valor promedio para el período seleccionado en la esquina superior derecha.
- Thresholds — el parámetro de umbrales describe la lógica de aplicación del color, es decir, el color seleccionado se aplicará a los elementos en el esquema dependiendo de los datos de la métrica. En mi ejemplo, con un valor de métricas '0' — el estado 'Ok' será de color verde, con un valor '>1' el estado será Critical y el color será rojo.
- Color/Tooltip Mappings y Label/Text Mappings — selección del elemento del esquema y su comportamiento. En el primer escenario, el objeto será coloreado, en el segundo, tendrá texto con datos de la métrica. Para seleccionar un objeto en el esquema hay que presionar el signo de cadena y hacer clic con el ratón en el esquema.

En este ejemplo, coloreo la bomba y su flecha de color rojo si está en funcionamiento y de color verde si no lo está.
Con la ayuda del complemento flowcharting pude dibujar un esquema de toda la línea, en la que:
- cambia el color de los agregados de acuerdo con su estado
- hay una señalización de falta de producto en los tanques
- se muestra la configuración de las frecuencias de los motores
- la velocidad de llenado/vaciado del primer tanque
- se cuenta el número de ciclos de trabajo de la línea (amasados)

Visualización del funcionamiento de la línea de producción
Resultado
Lo más difícil para mí fue obtener datos de los controladores. Gracias a la versatilidad de Zabbix para la recopilación de datos y la flexibilidad de Grafana a través de complementos, solo se necesitaron un par de días para crear una pantalla de monitoreo integral para la línea de producción. La visualización permitió ver gráficos y estadísticas de estados, además de un fácil acceso a través de la web para todos los interesados; todo esto facilitó la identificación rápida de cuellos de botella y el uso ineficiente de los agregados.
Conclusión
Me gustó mucho la combinación Zabbix+Grafana y recomiendo que le presten atención si necesitan procesar rápidamente datos de controladores o sensores sin programación o la implementación de productos comerciales complejos. Sin duda, esto no reemplazará a los sistemas SCADA profesionales, pero será suficiente como herramienta de monitoreo centralizado de toda la producción.
Fuente: habr.com
