Dans cet article, je souhaite partager mon expérience de l'utilisation des systèmes open source Zabbix et Grafana pour visualiser le fonctionnement des lignes de production. Les informations peuvent être utiles à ceux qui recherchent un moyen rapide d'afficher visuellement ou d'analyser les données collectées dans des projets d'automatisation industrielle ou d'IoT. Cet article n'est pas un guide détaillé, mais plutôt un concept de système de surveillance basé sur des logiciels libres pour les entreprises de production.
Outils
Zabbix – nous l'utilisons depuis longtemps pour surveiller l'infrastructure informatique de l'usine. Le système s'est avéré si pratique et polyvalent que nous avons commencé à y entrer des données provenant des lignes de production, des capteurs et des contrôleurs. Cela nous a permis de rassembler toutes les données de métriques en un seul endroit, de créer des graphiques simples de consommation de ressources et de performance des équipements, mais nous manquions vraiment d'analytique et de graphiques attrayants.
Grafana – c'est un outil puissant pour l'analyse et la visualisation des données. Beaucoup de plugins permettent d'extraire des données de diverses sources (zabbix, clickhouse, influxDB), de les traiter en temps réel (calculer la moyenne, la somme, la différence, etc.) et de créer toutes sortes de graphiques (des simples lignes, des compteurs, des tableaux aux diagrammes complexes).
Draw.io – un service qui permet de dessiner en ligne, d'un simple diagramme de blocs à un plan de locaux. Il existe de nombreux modèles prêts à l'emploi et des objets dessinés. Les données peuvent être exportées dans tous les principaux formats graphiques ou en xml.
Assemblons tout ensemble
Il existe de nombreux articles sur la manière d'installer et de configurer Grafana et Zabbix, je vais parler des principaux points de configuration.
Sur Zabbix le serveur un "nœud réseau" (host) est créé, auquel appartiendront les "éléments de données" (item) avec les métriques de nos capteurs. Les noms des nœuds et des éléments de données doivent être soigneusement réfléchis à l'avance et structurés au maximum, car nous y accéderons depuis Grafana, via des expressions régulières. Cette approche est avantageuse car elle permet d'obtenir les données d'un groupe d'éléments en une seule requête.
Pour configurer Grafana, il sera nécessaire d'installer des plugins supplémentaires :
- Zabbix par Alexander Zobnin (alexanderzobnin-zabbix-app) – intégration avec Zabbix
- natel-discrete-panel – un plugin pour la visualisation discrète sur un graphique horizontal
- pierosavi-imageit-panel – un plugin pour afficher des données sur une image personnalisée
- agenty-flowcharting-panel – plugin pour la visualisation dynamique de diagrammes depuis draw.io
L'intégration avec Zabbix se configure dans Grafana, dans le menu ConfigurationData sourcesZabbix. Il faut indiquer l'adresse de l'API du serveur Zabbix, pour moi c'est , et le nom d'utilisateur avec le mot de passe pour l'accès. Si tout est fait correctement, lors de l'enregistrement des paramètres, un message apparaîtra avec le numéro de version de l'API : version de l'API Zabbix : 5.0.1
Création d'un Dashboard
C'est ici que commence la véritable magie de Grafana et de ses plugins.
Plugin natel-discrete-panel
Nous avons des données sur le statut des moteurs sur les lignes (fonctionnent = 1, ne fonctionnent pas = 0). Grâce au graphique discret, nous pouvons tracer une échelle indiquant : le statut du moteur, combien de temps il a fonctionné en minutes/heures ou en % et à quelle fréquence il a démarré.

Visualisation des statuts des moteurs
À mon avis, c'est l'un des meilleurs graphiques pour visualiser la performance de l'équipement. On voit immédiatement combien de temps il est à l'arrêt, dans quels modes il fonctionne le plus souvent. Les données peuvent être nombreuses, il y a la possibilité de les agréger par intervalles, de les transformer par valeurs (si la valeur est « 1 », alors afficher comme « ON »)
Plugin pierosavi-imageit-panel
Imageit est pratique à utiliser lorsque vous avez déjà un schéma ou un plan de local dessiné, sur lequel vous souhaitez superposer des données provenant de capteurs. Dans les paramètres de visualisation, il faut indiquer l'adresse URL de l'image et ajouter les éléments sensor nécessaires. L'élément apparaît sur l'image et peut être placé à l'endroit souhaité avec la souris.

Schéma du four avec des métriques de température et de pression
Plugin agenty-flowcharting-panel
Je voudrais parler plus en détail de la création de visualisations FlowCharting, car c'est un outil incroyablement fonctionnel. Il permet de réaliser un schéma dynamique dont les éléments réagissent aux valeurs des métriques (changer de couleur, de position, de nom, etc.).
Récupération des données
La création de tout élément de visualisation dans Grafana commence par une requête de données à partir de la source, dans notre cas, Zabbix. Avec les requêtes, nous devons obtenir toutes les métriques dont nous voulons bénéficier dans le schéma. Les références des métriques sont les noms des éléments de données dans Zabbix, et il est possible de spécifier une seule métrique ou de multiples métriques avec un filtrage par expression régulière. Dans mon exemple, le champ Item contient l'expression : « /(^ligne 1)|(disponibilité)|(courgette)/ » — cela signifie : sélectionner toutes les métriques dont le nom commence strictement par « ligne 1 » ou contient le mot « disponibilité » ou contient le mot « courgette ».

Exemple de configuration d'une requête de données sur les moteurs de la première ligne et la disponibilité des matières premières.
Transformation des données
Les données d'origine peuvent ne pas toujours être sous la forme dans laquelle nous souhaitons les afficher. Par exemple, nous avons des données de poids produit en minuterie (kg), et nous devons afficher la vitesse de remplissage en t/h. Je fais cela de la manière suivante : je prends les données de poids et les transforme avec la fonction delta de Grafana, qui calcule la différence entre les valeurs de métriques, ainsi le poids actuel se transforme en kg/min. Ensuite, je multiplie par 0,06 pour convertir le résultat en tonnes/heure. Comme la métrique de poids est utilisée dans plusieurs requêtes, je lui attribue un nouvel alias (setAlias) et je l'utiliserai dans la règle de visualisation.

Exemple d'utilisation du paramètre delta et du multiplicateur et de renommage de la métrique dans la requête.
Voici un autre exemple de transformation des données : j'avais besoin de compter le nombre de mixages (début du cycle = démarrage du moteur). La métrique est calculée sur la base du statut du moteur « ligne 1 — pompe de drainage du réservoir 1 (statut) ». Transformation : les données de la métrique d'origine sont modifiées par la fonction delta (différence des valeurs), ainsi la métrique aura une valeur « +1 » pour le démarrage du moteur, « -1 » pour l'arrêt et « 0 » lorsque le moteur ne change pas de statut. Ensuite, je supprime toutes les valeurs inférieures à 1 et les additionne. Le résultat est le nombre de démarrages du moteur.
![]()
Exemple de transformation des données du statut actuel en nombre de démarrages.
Maintenant, à propos de la visualisation elle-même.
Dans les paramètres d'affichage, il y a un bouton « Edit Draw », qui ouvre l'éditeur où vous pouvez dessiner le schéma. Chaque objet sur le schéma a ses propres paramètres. Par exemple, si vous spécifiez les paramètres de police dans l'éditeur, ils seront appliqués à la visualisation des données dans Grafana.

Voici à quoi ressemble l'éditeur dans Draw.io
Après la sauvegarde du schéma, il apparaîtra dans Grafana et vous pourrez créer des règles pour modifier les éléments.
Dans les paramètres (), nous indiquons :
- Options — définissez le nom de la règle (Nom de la règle), le nom ou le pseudonyme de la métrique à utiliser (Appliquer aux métriques). Le type d'agrégation des données (Agrégation) influence le résultat final de la métrique. Par exemple, Last signifie que la dernière valeur sera choisie, avg correspond à la valeur moyenne sur la période sélectionnée dans le coin supérieur droit.
- Thresholds — le paramètre de seuils décrit la logique d'application des couleurs, c'est-à-dire que la couleur choisie sera appliquée aux éléments du schéma en fonction des données de la métrique. Dans mon exemple, lorsque la valeur de la métrique est «0», le statut «Ok» sera de couleur verte, tandis qu'à une valeur «>1», le statut sera Critique et la couleur sera rouge.
- Color/Tooltip Mappings et Label/Text Mappings — sélection du type d'élément sur le schéma et du scénario de son comportement. Dans le premier scénario, l'objet sera coloré, dans le second, il affichera un texte avec les données de la métrique. Pour sélectionner un objet sur le schéma, cliquez sur le signe de la chaîne et cliquez avec la souris sur le schéma.

Dans cet exemple, je colorie la pompe et sa flèche en rouge lorsqu'elle fonctionne et en vert lorsqu'elle ne fonctionne pas.
Grâce au plugin flowcharting, j'ai pu dessiner le schéma de toute la ligne, où :
- la couleur des agrégats change en fonction de leur statut
- il y a une alarme pour signaler l'absence de produit dans les réservoirs
- les réglages des fréquences des moteurs sont affichés
- la vitesse de remplissage/vidage du premier réservoir
- le nombre de cycles de fonctionnement de la ligne (mélanges) est comptabilisé

Visualisation du fonctionnement de la ligne de production
Résultat
Le plus difficile pour moi a été d'obtenir des données des contrôleurs. Grâce à la polyvalence de Zabbix en matière de récupération des données, et à la flexibilité de Grafana grâce aux plugins, il m'a fallu quelques jours pour créer un écran de monitoring complet de la ligne de production. La visualisation permet de consulter des graphiques et des statistiques d'état, avec un accès facile via le web pour tous les intéressés – tout cela a permis d'identifier rapidement les goulets d'étranglement et l'utilisation inefficace des agrégats.
Conclusion
J'ai beaucoup aimé l'association Zabbix+Grafana et je vous recommande de vous y intéresser si vous avez besoin de traiter rapidement des données provenant de contrôleurs ou de capteurs sans programmation ni l'intégration de produits commerciaux complexes. Certes, cela ne remplacera pas les systèmes SCADA professionnels, mais cela suffira comme outil de surveillance centralisée de l'ensemble de la production.
Source : habr.com
