Grafana+Zabbix : Visualisation de la ligne de production

Dans cet article, je souhaite partager mon expérience d'utilisation des systèmes open source Zabbix et Grafana pour visualiser le travail des lignes de production. Les informations peuvent être utiles à ceux qui recherchent un moyen rapide d'afficher ou d'analyser visuellement les données collectées dans les projets d'automatisation industrielle ou IoT. L'article n'est pas un guide détaillé, mais plutôt un concept de système de surveillance basé sur un logiciel open source pour une entreprise manufacturière.

Инструментарий

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 saisir les données des lignes de production, des capteurs et des contrôleurs. Cela nous a permis de collecter toutes les données métriques en un seul endroit, de créer des graphiques simples de consommation de ressources et de performances des équipements, mais nous manquions vraiment d'analyses et de beaux graphiques.

grafana est un puissant outil d'analyse et de visualisation de données. Un grand nombre de plugins permettent de prendre des données provenant de diverses sources (zabbix, clickhouse, influxDB), de les traiter à la volée (calculer la moyenne, la somme, la différence, etc.) et de dessiner toutes sortes de graphiques (des lignes simples, des compteurs de vitesse, des tableaux aux diagrammes complexes).

Draw.io - un service qui permet de dessiner dans un éditeur en ligne d'un simple schéma bloc à un plan d'étage. Il existe de nombreux modèles prêts à l'emploi et des objets dessinés. Les données peuvent être exportées vers tous les principaux formats graphiques ou xml.

Mettre tout cela ensemble

De nombreux articles ont été écrits sur la façon d'installer et de configurer Grafana et Zabbix, je vais parler des points principaux de la configuration.

Un "nœud de réseau" (hôte) est créé sur le serveur Zabbix, qui possédera des "éléments de données" (item) avec les métriques de nos capteurs. Il est conseillé de réfléchir à l'avance aux noms des nœuds et des éléments de données et de les structurer le plus possible, car nous y accéderons à partir de graphana via des expressions régulières. Cette approche est pratique car vous pouvez obtenir des données à partir d'un groupe d'éléments avec une seule requête.

Pour configurer grafana, vous devrez installer des plugins supplémentaires :

  • Zabbix par Alexander Zobnin (alexanderzobnin-zabbix-app) - intégration avec zabbix
  • natel-discrete-panel - plugin pour la visualisation discrète sur un graphique horizontal
  • pierosavi-imageit-panel - plugin pour afficher des données au-dessus de votre image
  • agenty-flowcharting-panel - plugin pour la visualisation de diagramme dynamique de draw.io

L'intégration avec Zabbix elle-même est configurée dans grafana, élément de menu ConfigurationSources de donnéesZabbix. Là, vous devez spécifier l'adresse api du serveur zabbix, j'ai ceci http://zabbix.local/zabbix/api_jsonrpc.php, et une connexion avec un mot de passe pour l'accès. Si tout est fait correctement, lors de l'enregistrement des paramètres, il y aura un message avec le numéro de version de l'api : version de l'API zabbix : 5.0.1

Création d'un tableau de bord

C'est là que commence la magie même de grafana et de ses plugins.

plugin natel-discrete-panel
Nous avons des données sur les statuts des moteurs sur les lignes (fonctionnant = 1, ne fonctionnant pas = 0). En utilisant le graphique discret, nous pouvons dessiner une échelle qui montrera : l'état du moteur, combien de minutes/heures ou % il a fonctionné, et combien de fois il a été démarré.

Grafana+Zabbix : Visualisation de la ligne de production
Visualisation de l'état du moteur

À mon avis, c'est l'un des meilleurs graphiques pour visualiser les performances du matériel. Vous pouvez immédiatement voir combien de temps il est inactif, dans quels modes il fonctionne le plus souvent. Il peut y avoir beaucoup de données, il est possible de les agréger par plages, de les convertir par valeurs (si la valeur est "1", alors afficher comme "ON")

greffon pierosavi-imageit-panel

Imageit est pratique à utiliser lorsque vous disposez déjà d'un schéma ou d'un plan dessiné de la pièce sur laquelle vous souhaitez appliquer les données des capteurs. Dans les paramètres de visualisation, vous devez spécifier l'adresse URL de l'image et ajouter les éléments de capteur dont vous avez besoin. L'élément apparaît sur l'image et peut être placé au bon endroit avec la souris.

Grafana+Zabbix : Visualisation de la ligne de production
Schéma du four avec mesures de température et de pression

plugin agenty-flowcharting-panel

Je voudrais vous en dire plus sur la création d'une visualisation FlowCharting, car c'est un outil incroyablement fonctionnel. Il permet de faire un mnémonique dynamique dont les éléments répondront aux valeurs des métriques (changer de couleur, de position, de nom, etc.).

Obtenir des données

La création de tout élément de visualisation dans grafana commence par une demande de données à la source, dans notre cas c'est zabbix. À l'aide de requêtes, nous devons obtenir toutes les métriques que nous voulons utiliser dans le diagramme. Les détails des métriques sont les noms des éléments de données dans Zabbix, vous pouvez spécifier à la fois une métrique distincte et un ensemble avec filtrage via une expression régulière. Dans mon exemple, le champ Item contient l'expression : "/(^line 1)|(availability)|(zucchini)/" - cela signifie : sélectionnez toutes les métriques dont le nom commence strictement par "line 1" ou contient le mot "availability" ou contient le mot "zucchini"

Grafana+Zabbix : Visualisation de la ligne de production
Un exemple de mise en place d'une demande de données sur les moteurs de la première ligne et la disponibilité des matières premières

Conversion de données

Les données sources peuvent ne pas toujours être sous la forme dans laquelle nous devons les afficher. Par exemple, nous avons des données minute par minute sur le poids d'un produit dans un conteneur (kg), et nous voulons afficher le taux de remplissage en t/h. Je procède de cette façon : je prends les données de poids et je les convertis avec la fonction delta graphana, qui calcule la différence entre les valeurs métriques, de sorte que le poids actuel est converti en kg/min. Ensuite, je multiplie par 0.06 pour amener le résultat à tonnes/heure. Étant donné que la métrique de poids est utilisée dans plusieurs requêtes, je vais lui donner un nouvel alias (setAlias) et l'utiliser dans la règle de rendu.

Grafana+Zabbix : Visualisation de la ligne de production
Exemple d'utilisation du paramètre delta et d'un multiplicateur et de renommage d'une métrique dans une requête

Voici un autre exemple de transformation de données : j'avais besoin de calculer le nombre de lots (démarrage du cycle = démarrage du moteur). La métrique est calculée en fonction de l'état du moteur "ligne 1 - réservoir pompe 1 (état)". Transformation : on modifie les données de la métrique d'origine avec la fonction delta (différence de valeur), ainsi la métrique aura la valeur "+1" pour démarrer le moteur, "-1" pour s'arrêter et "0" lorsque le moteur ne change pas d'état. Ensuite, je supprime toutes les valeurs inférieures à 1 et les additionne. Le résultat est le nombre de démarrages du moteur.

Grafana+Zabbix : Visualisation de la ligne de production
Exemple de conversion de données de l'état actuel en nombre de démarrages

Parlons maintenant de la visualisation elle-même

Dans les paramètres d'affichage il y a un bouton "Edit Draw", il lance un éditeur dans lequel on peut dessiner un schéma. Chaque objet du diagramme 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.

Grafana+Zabbix : Visualisation de la ligne de production
Voici à quoi ressemble l'éditeur dans Draw.io

Après avoir enregistré le schéma, il apparaîtra dans le graphana et il sera possible de créer des règles pour modifier les éléments.

Dans les paramètres () nous spécifions :

  • Options - définissez le nom de la règle (Nom de la règle), le nom ou l'alias de la métrique dont les données seront utilisées (Appliquer aux métriques). Le type d'agrégation de données (Agrégation) affecte le résultat final de la métrique, donc Last signifie que la dernière valeur sera sélectionnée, avg signifie la valeur moyenne pour la période sélectionnée dans le coin supérieur droit.
  • Seuils - paramètre de valeur de seuil, décrit la logique d'application de la couleur, c'est-à-dire que la couleur sélectionnée sera appliquée aux éléments du diagramme, en fonction des données métriques. Dans mon exemple, si la valeur de la métrique est "0", le statut sera "Ok", la couleur sera verte, si la valeur est ">1", le statut sera Critique et la couleur sera rouge.
  • Color/Tooltip Mappings » et « Label/Text Mappings » — sélection d'un élément de circuit et de son scénario de comportement. Dans le premier scénario, l'objet sera peint, dans le second, il contiendra du texte avec les données de la métrique. Pour sélectionner un objet sur le schéma, vous devez appuyer sur le signe du circuit et cliquer sur le schéma avec la souris.

Grafana+Zabbix : Visualisation de la ligne de production
Dans cet exemple, je peins la pompe et sa flèche en rouge si elle fonctionne et en vert si ce n'est pas le cas.

Avec l'aide du plugin flowcharting, j'ai réussi à dessiner un schéma de toute la ligne, sur lequel :

  1. la couleur des granulats change selon leur statut
  2. il y a une alarme pour le manque de produit dans les conteneurs
  3. le réglage de la fréquence du moteur s'affiche
  4. taux de remplissage/vidange du premier réservoir
  5. le nombre de cycles de fonctionnement de la ligne (batch) est compté

Grafana+Zabbix : Visualisation de la ligne de production
Visualisation de la ligne de production

Résultat

La partie la plus difficile pour moi a été d'obtenir les données des contrôleurs. Grâce à la polyvalence de Zabbix en termes d'acquisition de données et à la flexibilité de Grafana grâce aux plugins, il n'a fallu que quelques jours pour créer un écran complet de surveillance de la chaîne de production. La visualisation a permis de visualiser des graphiques et des statistiques d'état, ainsi qu'un accès facile via le Web à toute personne intéressée - tout cela a permis d'identifier rapidement les goulots d'étranglement et l'utilisation inefficace des agrégats.

Conclusion

J'ai beaucoup aimé le bundle Zabbix + Grafana et je recommande d'y prêter attention si vous avez besoin de traiter rapidement des données provenant de contrôleurs ou de capteurs sans programmation ni implémentation de produits commerciaux complexes. Bien sûr, 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

Ajouter un commentaire