Connecter OPC UA à Telegraf / InfluxDB
| Produit | Telegraf / InfluxDB |
|---|---|
| Catégorie | Séries temporelles |
| Rôle OPC UA | Client |
Telegraf est un collecteur OPC UA pragmatique: le plugin d'entrée opcua interroge les nœuds à intervalle régulier et le plugin d'entrée opcua_listener s'abonne aux changements de données, les deux écrivant dans InfluxDB ou une autre sortie. Il fonctionne uniquement par configuration, ce qui fait sa force, et l'échange de certificats avec chaque serveur est le travail qui prend réellement du temps.
Avant de commencer
- Une installation de Telegraf sur un hôte disposant d'un chemin réseau vers chaque serveur OPC UA, et une décision: un agent pour plusieurs machines, ou un agent par machine. Un agent par machine tombe indépendamment et vaut généralement les instances supplémentaires.
- Une sortie configurée et testée d'abord, pour que, lorsque le côté OPC UA fonctionne, vous voyiez les données immédiatement au lieu de déboguer deux couches à la fois.
- Une liste de nœuds relue, avec URI de namespace et identifiants, plutôt qu'une intention de parcourir à l'exécution. Telegraf collecte ce que vous configurez; il ne découvre pas.
- Un endroit où conserver le certificat client et la clé de l'agent, et la possibilité de faire entrer ce certificat dans le magasin de confiance de chaque serveur.
Mise en place
- Commencez par une lecture non sécurisée pour valider le cheminConfigurez une section inputs.opcua avec l'endpoint et sans sécurité, un groupe de nœuds et un nœud, puis lancez l'agent en mode test pour qu'il affiche la métrique sur stdout au lieu de l'écrire. Cela confirme l'endpoint, le namespace et l'identifiant en une seule étape.
- Configurez les groupes de nœuds par namespace et par cadenceGroupez les nœuds par namespace et par intervalle nécessaire. Chaque groupe porte le namespace, le type d'identifiant et la liste de nœuds: un groupe par sous-ensemble de machine garde la configuration lisible et permet de changer une cadence sans toucher au reste.
- Passez au plugin listener pour tout ce qui ressemble à un événementUtilisez inputs.opcua_listener avec un intervalle d'abonnement là où vous avez besoin de données pilotées par le changement, en particulier les variables d'état et les compteurs. Scruter un état à intervalle fixe perd les transitions entre deux scrutations, et une transition perdue est un événement d'arrêt perdu.
- Activez la sécurité et menez l'échange de confiance à son termeRéglez la politique et le mode de sécurité sur ce que propose le serveur, indiquez au plugin le certificat et la clé privée de l'agent, et configurez le jeton d'identité. Connectez-vous ensuite une première fois, laissez l'échec se produire, puis déplacez le certificat de l'agent du magasin des rejetés du serveur vers son magasin de confiance. Côté agent, faites confiance au certificat du serveur selon ce qu'exige la politique retenue.
- Fixez le nommage des métriques et les tags avant d'écrire de l'historiqueDéfinissez le nom de la mesure et ajoutez des tags identifiant la machine, la ligne et le site, ainsi que l'URI de namespace et l'identifiant en métadonnées. Renommer une série après six mois d'historique coûte bien plus cher qu'y réfléchir une fois maintenant.
- Décidez quel horodatage porte la métriquePar défaut, un collecteur horodate à la collecte. Vérifiez si votre version de Telegraf peut reporter le source timestamp OPC UA dans le temps de la métrique, et si elle le peut, utilisez-le et confirmez le nom de l'option dans la documentation courante du plugin lui-même. Si elle ne le peut pas, consignez ce fait là où l'équipe analytics le lira.
- Surveillez les métriques propres de l'agentActivez l'entrée interne et alertez sur les erreurs de collecte et les échecs d'écriture. Un agent Telegraf qui n'arrive plus à joindre un PLC sans le dire produit un trou qui ressemble à une machine arrêtée, ce qui est le mode de défaillance le plus dommageable en collecte de données machine.
À quoi ressemble l'espace d'adressage
Telegraf aplatit l'espace d'adressage en métriques. Chaque nœud collecté devient un champ d'une measurement, avec des tags pour les dimensions que vous avez configurées; tout le reste de ce que savait le serveur (définitions de types, unités physiques, hiérarchie de browse) est laissé de côté, sauf si vous l'avez encodé dans les noms et les tags. Il n'y a pas non plus de modèle côté InfluxDB: une série, c'est un nom et un ensemble de tags. Conséquence: l'URI de namespace OPC UA et l'identifiant doivent être portés en tags ou dans une table de correspondance distincte tenue en gestion de version, pour qu'un chiffre affiché dans un tableau de bord puisse toujours être retracé jusqu'au nœud dont il provient. Sans cela, la correspondance n'existe que dans un fichier de configuration sur une seule machine.
Les pièges
- Faire entrer le certificat de l'agent dans le magasin de confiance de chaque serveur est le plus gros obstacle de déploiement à l'échelle d'une flotte, et cela se fait machine par machine. Décidez d'une procédure ou d'une PKI avant le premier déploiement, et attendez-vous à ce que la première tentative sur chaque serveur échoue avec une erreur de confiance, par conception.
- Les index de namespace inscrits en configuration cassent après un chargement de programme automate. Configurez par URI de namespace là où le plugin le permet, et traitez tout index littéral comme un passif connu avec un responsable identifié.
- Scruter une variable d'état n'est pas la même chose que s'y abonner. Si la disponibilité compte, utilisez le plugin listener, car un arrêt plus court que votre intervalle de scrutation est invisible et irrécupérable.
- L'horodatage propre au collecteur n'est pas celui de la machine. Si l'heure de la métrique est l'heure de collecte, toute durée d'arrêt hérite de votre gigue de scrutation, et personne en aval ne peut s'en apercevoir.
- Des compteurs écrits bruts exigent une fonction de différence, ou de différence non négative, au moment de la requête. Moyenner un compteur produit une série convaincante et dépourvue de sens, et les remises à zéro ou débordements demandent un traitement explicite.
- Il n'y a pas de store-and-forward côté OPC UA. Si l'hôte de l'agent est arrêté, cette période est un trou, et un trou est indiscernable d'une machine à l'arrêt si vous ne collectez pas aussi un heartbeat ou une métrique de santé de connexion.
- Un seul agent collectant de nombreuses machines concentre le risque: une erreur de configuration ou un redémarrage interrompt toutes les lignes d'un coup.
- Les intervalles d'échantillonnage et de publication que vous demandez peuvent être révisés par le serveur. Vérifiez ce que le serveur livre réellement plutôt que de faire confiance au nombre configuré.
En extraire les données OEE
Telegraf peut fournir les trois entrées dont le TRS a besoin, avec une frontière claire. État: abonnez-vous à une variable d'état ou de mode avec le plugin listener et enregistrez chaque transition, afin que la disponibilité soit calculée à partir de durées et non d'échantillons. Comptages: lisez les compteurs de l'automate comme des valeurs et calculez les deltas au moment de la requête, en traitant explicitement les remises à zéro; ne demandez pas au collecteur de compter des fronts. Motifs: les alarmes et conditions OPC UA ne sont pas la vocation de ce collecteur, la voie réaliste est donc une variable de code motif, et des motifs événementiels demandent un autre outil. Au-delà, dites explicitement que la rigueur d'horodatage du collecteur fixe le plafond de précision de toutes les durées que vous publiez, et que le temps de production planifié, les calendriers d'équipes et les temps de cycle standard ne sont pas dans la machine: ils doivent arriver comme données de référence distinctes, avec un responsable.
Dernière vérification le 7 septembre 2026 par rapport à OPC UA 1.05.07. OPC UA Connect est une ressource pédagogique et n'est pas affiliée à l'OPC Foundation.