Internet Industriel des Objets IIOT : fabiog1901 / IoT-predictive-maintenance: atelier EDGE2AI avec CDF et CDSW

introduction

Dans cet atelier, vous allez créer un workflow OT to IT complet pour un Maintenance prédictive IoT cas d’utilisation. Vous trouverez ci-dessous le schéma d’architecture, montrant tous les composants que vous allez configurer au cours des 8 prochains exercices de laboratoire. Alors que le diagramme divise les composants en fonction de leur emplacement (niveau usine, régional ou centre de données) dans cet atelier, tous ces composants résideront dans un seul hôte.

Résumé des laboratoires:

  1. Configurez l’environnement sandbox.
  2. Sur le CDSW cluster, entraînez votre modèle avec le Expérience fonctionnalité.
  3. Sur le CDSW cluster, déployer le modèle en production avec le Modèle fonctionnalité.
  4. Sur l’hôte passerelle, exécutez un simulateur pour envoyer des données de capteurs IoT au courtier MQTT.
  5. Sur l’hôte de passerelle, exécutez MiNiFi pour lire à partir du courtier MQTT, filtrer et transmettre au NiFi grappe.
  6. Sur le cluster NiFi, préparez et envoyez au Kafka grappe.
  7. Sur le cluster CDH, traitez chaque enregistrement à l’aide de Spark Streaming, appelant le Point final du modèle et enregistrer les résultats dans Koudou.
  8. Sur le cluster CDH, extrayez des rapports sur les pannes de machine à venir à l’aide de Impala et Teinte.

Conditions préalables

  • Ordinateur portable avec un système d’exploitation pris en charge (Windows 7 non pris en charge).
  • Possibilité de SSH dans des hôtes distants à partir de Windows ou Mac. Pour les machines Windows, installez Putty ou encore mieux installez OpenSSH pour PowerShell.
  • Un navigateur moderne comme Google Chrome (IE non pris en charge).

Laboratoire 0 – Configuration initiale

  1. Créez un cluster CDH + CDSW ou un cluster CDP + CDSW et NOTEZ S’IL VOUS PLAÎT qu’en raison d’un bug mineur de MiNiFi, vous devez commenter la ligne service minifi start dans setup.shavant de courir setup.sh. Vous serez invité à démarrer explicitement MiNiFi dans Lab 5.
    Vérifier la Dépannage à la fin de ce document pour savoir comment réinitialiser MiNiFi au cas où vous auriez oublié de faire cette étape.
  2. Assurez-vous que vous pouvez SSH dans le cluster et que le trafic provenant du cluster n’est autorisé qu’à partir de votre propre IP / VPN pour des raisons de sécurité. Les ports utilisés par cet atelier sont 7180, 80, 8080, 18080, 10080, 8888, 50999.
  3. Connectez-vous à Cloudera Manager avec nom d’utilisateur / mot de passe admin / adminet familiarisez-vous avec les services installés. Les ports pour accéder aux autres services sont:
  • Responsable Cloudera: 7180
  • Gestionnaire de flux Edge: 10080 / efm / ui
  • NiFi: 8080 / nifi /
  • Registre NiFi: 18080 / registre nifi
  • Teinte: 8888
  • CDSW: cdsw..nip.io

Connectez-vous à Teinte. Comme vous êtes le premier utilisateur à vous connecter à Hue, vous bénéficiez de privilèges d’administrateur. À ce stade, vous n’aurez rien à faire sur Hue, mais en vous connectant, CDH a créé votre utilisateur et votre dossier HDFS, dont vous aurez besoin pour le prochain laboratoire.

Assurez-vous de vous souvenir du nom d’utilisateur et du mot de passe, car vous les utiliserez tout au long de cet atelier.

Ci-dessous une capture d’écran de Chrome ouvert avec 6 onglets, un pour chaque service.

Laboratoire 1 – CDSW: Former le modèle

Dans ce laboratoire et le suivant, vous porterez le chapeau d’un Data Scientist. Vous allez écrire le code du modèle, le former plusieurs fois et enfin déployer le modèle en production. Le tout en 30 minutes!

ÉTAPE 0 : Configurer CDSW

Ouvrez CDSW Web UI et cliquez sur Inscrivez-vous pour un nouveau compte. Comme vous êtes le premier utilisateur à vous connecter à CDSW, vous bénéficiez de privilèges d’administrateur. Assurez-vous que vous utilisez le même nom d’utilisateur que vous avez utilisé lorsque vous vous êtes connecté à HUE, dans le laboratoire 0. Les noms d’utilisateur ici doivent correspondre.

Accédez au CDSW Admin page pour affiner l’environnement:

Remarque: cette variable env n’est pas requise pour un cluster CDH 5.

ÉTAPE 1 : Créer le projet

Revenez à la page principale et cliquez sur Nouveau projet, en utilisant ce projet GitHub comme source: https://github.com/fabiog1901/IoT-predictive-maintenance.

Maintenant que votre projet a été créé, cliquez sur Open Workbench et démarrer une session Python3

Une fois le moteur prêt, exécutez la commande suivante pour installer certaines bibliothèques requises:

! pip3 install --upgrade pip scikit-learn

Le projet est livré avec un ensemble de données historiques. Copiez cet ensemble de données dans HDFS:

! hdfs dfs -put data / historical_iot.txt / user / $ HADOOP_USER_NAME

Vous êtes maintenant prêt à exécuter l’expérience pour entraîner le modèle sur vos données historiques.

Vous pouvez arrêter le moteur à ce stade.

ÉTAPE 2 : Examiner cdsw.iot_exp.py

Ouvrez le dossier cdsw.iot_exp.py. Il s’agit d’un programme python qui construit un modèle pour prédire la défaillance de la machine (la probabilité que cette machine échoue). Un ensemble de données est disponible sur hdfs avec des données client, y compris un champ d’indicateur de défaillance.

Le programme va construire un modèle de prédiction de défaillance en utilisant l’algorithme Random Forest. Les forêts aléatoires sont des ensembles d’arbres de décision. Les forêts aléatoires sont l’un des modèles d’apprentissage automatique les plus efficaces pour la classification et la régression. Ils combinent de nombreux arbres de décision afin de réduire le risque de sur-ajustement. Comme les arbres de décision, les forêts aléatoires gèrent les entités catégorielles, s’étendent au paramètre de classification multiclasse, ne nécessitent pas de mise à l’échelle des entités et sont capables de capturer les non-linéarités et les interactions des entités.

spark.mllib prend en charge les forêts aléatoires pour la classification binaire et multiclasse et pour la régression, en utilisant à la fois des fonctionnalités continues et catégorielles. spark.mllib implémente des forêts aléatoires en utilisant l’implémentation d’arbre de décision existante. Veuillez consulter le guide de l’arbre de décision pour plus d’informations sur les arbres.

L’algorithme Random Forest attend quelques paramètres:

numTrees: nombre d’arbres dans la forêt.
L’augmentation du nombre d’arbres diminuera la variance des prévisions, améliorant ainsi la précision du temps de test du modèle. Le temps d’entraînement augmente à peu près linéairement dans le nombre d’arbres.

maxDepth: Profondeur maximale de chaque arbre dans la forêt.
L’augmentation de la profondeur rend le modèle plus expressif et puissant. Cependant, les arbres profonds prennent plus de temps à s’entraîner et sont également plus enclins à sur-adapter. En général, il est acceptable de former des arbres plus profonds lors de l’utilisation de forêts aléatoires que lors de l’utilisation d’un seul arbre de décision. Un arbre est plus susceptible de sur-équiper qu’une forêt aléatoire (en raison de la réduction de la variance par rapport à la moyenne de plusieurs arbres dans la forêt).

dans le cdsw.iot_exp.py programme, ces paramètres peuvent être passés au programme au moment de l’exécution, à ces variables python:

param_numTrees = int (sys.argv[1])
param_maxDepth = int (sys.argv[2])

Notez également que l’indicateur de qualité du modèle Random Forest est réécrit dans le référentiel Data Science Workbench:

cdsw.track_metric ("auroc", auroc)
cdsw.track_metric ("ap", ap)

Ces indicateurs apparaîtront plus tard dans le Expériences tableau de bord.

ÉTAPE 3 : Exécuter l’expérience pour la première fois

Maintenant, exécutez l’expérience en utilisant les paramètres suivants:

numTrees = 20 numDepth = 20

Dans le menu, sélectionnez Exécuter -> Exécuter des expériences .... Maintenant, en arrière-plan, l’environnement Data Science Workbench fera tourner un nouveau conteneur Docker, où ce programme s’exécutera.

Retournez au Projets dans CDSW et appuyez sur la Expériences bouton.

Si le statut indique «En cours», vous devez attendre la fin de l’exécution. Dans le cas où l’état est «Échec de la construction» ou «Échec», vérifiez les informations du journal. Ceci est accessible en cliquant sur le numéro d’exécution de vos expériences. Vous y trouverez le journal de session, ainsi que les informations de construction.

Si votre statut indique «Succès», vous devriez pouvoir voir l’indicateur de qualité du modèle auroc (Area Under the Curve). Il se peut que cette valeur soit masquée par l’interface utilisateur CDSW. Dans ce cas, cliquez sur les liens « 3 métriques » et sélectionnez le champ auroc. Il peut être nécessaire de désélectionner d’autres champs, car l’interface ne peut afficher que 3 mesures en même temps.

Dans cet exemple, ~ 0,8478. Pas mal, mais il y a peut-être de meilleures valeurs d’hyper-paramètres disponibles.

ÉTAPE 4 : Relancez l’expérience plusieurs fois

Revenez au Workbench et exécutez le test 2 fois de plus et essayez différentes valeurs pour NumTrees et NumDepth. Essayez les valeurs suivantes:

NumTrees NumDepth
15 25
25 20

Une fois toutes les analyses terminées, vérifiez quels paramètres ont la meilleure qualité (meilleure valeur prédictive). Ceci est représenté par la «zone sous la courbe» la plus élevée, métrique auroc.

ÉTAPE 5 : Enregistrez le meilleur modèle dans votre environnement

Sélectionnez le numéro d’exécution avec la meilleure valeur prédictive, dans ce cas, l’expérience 2. Dans l’écran Présentation de l’expérience, vous pouvez voir que le modèle au format spark est capturé dans le fichier iot_model.pkl. Sélectionnez ce fichier et appuyez sur le Ajouter au projet bouton. Cela copiera le modèle dans votre répertoire de projet.


Laboratoire 2 – CDSW: déployer le modèle

ÉTAPE 1 : Examiner le programme cdsw.iot_model.py

Ouvrez le projet que vous avez créé dans le laboratoire précédent et examinez le fichier dans le Workbench. Ce programme PySpark utilise le mécanisme pickle.load pour déployer des modèles. Le modèle auquel il fait référence iot_modelf.pkl fichier, a été enregistré dans le laboratoire précédent de l’expérience avec le meilleur modèle prédictif.

Il existe une définition prédite qui est la fonction qui appelle le modèle, à l’aide de fonctionnalités, et renvoie une variable de résultat.

Avant de déployer le modèle, essayez-le dans le Workbench: lancez un moteur Python3 et exécutez le code dans le fichier cdsw.iot_model.py. Appelez ensuite le prédire() à partir de l’invite:

prédire ("fonctionnalité": "0, 65, 0, 137, 21.95, 83, 19.42, 111, 9.4, 6, 3.43, 4")

La fonction revient avec succès, nous savons donc que nous pouvons maintenant déployer le modèle. Vous pouvez maintenant arrêter le moteur.

ÉTAPE 2 : Déployer le modèle

Dans la page des projets de votre projet, sélectionnez le Des modèles bouton. Sélectionner Nouveau modèle et remplissez, spécifiez la configuration suivante:

Nom: modèle de prédiction IoT
Description: Modèle de prédiction IoT
Fichier: cdsw.iot_model.py
Fonction: prédire
Exemple d'entrée: "fonctionnalité": "0, 65, 0, 137, 21.95, 83, 19.42, 111, 9.4, 6, 3.43, 4"
Noyau: Python 3
Moteur: 2 vCPU / 4 Go de mémoire
Répliques: 1

Si tous les paramètres sont définis, vous pouvez appuyer sur Déployer le modèle bouton. Attendez que le modèle soit déployé. Cela prendra plusieurs minutes.

ÉTAPE 3 : Tester le modèle déployé

Après plusieurs minutes, votre modèle devrait se rendre à la Déployé Etat. Maintenant, cliquez sur le lien Nom du modèle pour accéder à la page Présentation du modèle. À partir de cette page, appuyez sur le Tester pour vérifier si le modèle fonctionne.

La couleur verte avec succès indique que notre appel REST au modèle fonctionne techniquement. Et si vous examinez la réponse: "résultat": 1, il renvoie un 1, ce qui signifie qu’une machine dotée de ces fonctionnalités est susceptible de rester en bonne santé.

Maintenant, permet de modifier les paramètres d’entrée et d’appeler à nouveau la fonction de prédiction. Mettez les valeurs suivantes dans le champ de saisie:


  "fonctionnalité": "0, 95, 0, 88, 26.62, 75, 21.05, 115, 8.65, 5, 3.32, 3"

Avec ces paramètres d’entrée, le modèle renvoie 0, ce qui signifie que la machine est susceptible de casser. Prenez note de la Clef d’accès car vous en aurez besoin pour le laboratoire 6.

Laboratoire 3 – Hôte de passerelle: configuration du simulateur de capteurs de machine et courtier MQTT

Dans ce laboratoire, vous exécuterez un script Python simple qui simule les données des capteurs IoT de certaines machines hypotétiques et enverrez les données à un courtier MQTT, moustique. L’hôte de passerelle est connecté à de nombreux types de capteurs différents, mais ils partagent généralement tous le même protocole de transport, mqtt.

SSH dans la machine virtuelle, puis installez les bibliothèques requises et démarrez le courtier mosquitto

sudo su -
yum install -y moustique
installer pip paho-mqtt
systemctl activer le moustique
systemctl start moustique

Maintenant, clonez ce dépôt, puis exécutez le simulateur pour envoyer des données de capteur au moustique.

git clone https://github.com/fabiog1901/IoT-predictive-maintenance.git
mv IoT-predictive-maintenance / mqtt. * ~
python mqtt.iot_simulator.py mqtt.iot.config

Vous devriez voir une sortie similaire à celle ci-dessous:

iot: "sensor_id": 48, "sensor_ts": 1556758787735011, "sensor_0": 2, "sensor_1": 14, "sensor_2": 5, "sensor_3": 43, "sensor_4": 34, "sensor_5": 97 , "sensor_6": 29, "sensor_7": 121, "sensor_8": 5, "sensor_9": 2, "sensor_10": 5
iot: "sensor_id": 24, "sensor_ts": 1556758797738580, "sensor_0": 1, "sensor_1": 9, "sensor_2": 5, "sensor_3": 46, "sensor_4": 39, "sensor_5": 87 , "sensor_6": 51, "sensor_7": 142, "sensor_8": 47, "sensor_9": 4, "sensor_10": 8
iot: "sensor_id": 70, "sensor_ts": 1556758807751841, "sensor_0": 2, "sensor_1": 1, "sensor_2": 1, "sensor_3": 48, "sensor_4": 8, "sensor_5": 70 , "sensor_6": 15, "sensor_7": 103, "sensor_8": 22, "sensor_9": 1, "sensor_10": 2

Vous pouvez arrêter le simulateur maintenant, avec Ctrl + C.

Laboratoire 4 – Hôte passerelle: configurer et exécuter MiNiFi

MiNiFi est installé sur l’hôte de la passerelle. Dans ce laboratoire, vous allez configurer et exécuter MiNiFi pour lire à partir du courtier Mosquitto et le transmettre au cluster NiFi, mais ce n’est que dans le laboratoire suivant que vous fournirez le flux à exécuter.

Téléchargez le processeur NiFi MQTT pour lire depuis le moustique

cd ~
wget http://central.maven.org/maven2/org/apache/nifi/nifi-mqtt-nar/1.8.0/nifi-mqtt-nar-1.8.0.nar -P / opt / cloudera / cem / minifi / lib
racine chown: root /opt/cloudera/cem/minifi/lib/nifi-mqtt-nar-1.8.0.nar
chmod 660 /opt/cloudera/cem/minifi/lib/nifi-mqtt-nar-1.8.0.nar

Vous pouvez maintenant démarrer l’agent MiNiFi

service minifi start

Vous voudrez peut-être vérifier les journaux pour confirmer que tout va bien:

cat /opt/cloudera/cem/minifi/logs/minifi-app.log

Laboratoire 5 – Configuration de la gestion des flux de périphérie

Cloudera Edge Flow Management vous donne un aperçu visuel de tous les agents MiNiFi dans votre environnement, et vous permet de mettre à jour la configuration de flux pour chacun, avec un contrôle de versioning grâce à la Registre NiFi l’intégration. Dans ce laboratoire, vous allez créer le flux MiNiFi et le publier pour que l’agent MiNiFi le récupère.

Ouvrez l’interface utilisateur Web EFM à l’adresse http: // public-hostname: 10080 / efm / ui. Assurez-vous de voir les messages de battement de cœur de votre agent minifi dans le Moniteur d’événements.

Vous pouvez ensuite sélectionner Concepteur de flux onglet et créer le flux. Pour créer un flux de données, sélectionnez la classe souhaitée dans le tableau et cliquez sur OUVRIR. Alternativement, vous pouvez double-cliquer sur la classe souhaitée.

Ajouter un ConsumeMQTT Processeur sur le canevas et configurez-le avec les paramètres ci-dessous:

URI du courtier: tcp: // localhost: 1883
ID client: minifi-iot
Filtre de rubrique: iot / #
Taille maximale de la file d'attente = 60

Ajouter un Groupe de processus distant sur le canevas et configurez-le comme suit:

URL = http: //: 8080 / nifi

À ce stade, vous devez connecter le processeur ConsumerMQTT au RPG, cependant, vous avez d’abord besoin de l’ID du port d’entrée NiFi. Ouvrez l’interface utilisateur Web NiFi à l’adresse http: // public-hostname: 8080 / nifi / et ajoutez un Port d’entrée aux convas. Appelez-le quelque chose comme « de la passerelle » et copiez l’ID du port d’entrée, car vous en aurez bientôt besoin.

Pour fermer le flux NiFI – comme il est requis -, vous pouvez temporairement ajouter un LogAttribute processeur et configuration de 2 connexions:

  • du port d’entrée à LogAttribute;
  • de LogAttribute à lui-même.

Démarrez InputPort, mais conservez le LogAttribute dans un état arrêté.

De retour dans Flow Designer, connectez ConsumeMQTT au RPG. La connexion nécessite un ID et vous pouvez coller ici l’ID que vous venez de copier.

Le flux est maintenant terminé, mais avant de le publier, créez le compartiment dans le registre NiFi afin que toutes les versions de vos flux soient stockées pour examen et audit. Ouvrez le registre NiFi à l’adresse http: // public-hostname: 18080 / nifi-registry et créez un compartiment appelé « IoT ».

Vous pouvez maintenant publier le flux pour que l’agent minifi soit automatiquement récupéré.

En cas de succès, vous verrez les détails du flux dans le registre NiFi.

À ce stade, vous pouvez tester le flux de bord jusqu’à NiFi. Redémarrez le simulateur et confirmez que vous pouvez voir les messages en file d’attente dans NiFi.

$ python mqtt.iot_simulator.py mqtt.iot.config

Laboratoire 6 – Configuration du flux NiFi et push vers Kafka

Dans ce laboratoire, vous allez créer un flux NiFi pour recevoir les données de toutes les passerelles et les pousser vers Kafka.

Ouvrez l’interface utilisateur Web NiFi et ajoutez un PublishKafka_2.0 processeur et le configurer comme suit:

Courtiers Kafka: : 9092
Nom du sujet: iot
Utiliser les transactions: faux

Connectez le port d’entrée au processeur PublishKafka en faisant glisser la destination de la connexion actuelle du LogAttribute vers le PublishKafka. Comme avec LogAttribute, créez une connexion de PublishKafka à lui-même. Ensuite, vous pouvez démarrer le processeur Kafka.

Vous pouvez ajouter plus de processeurs selon vos besoins pour traiter, fractionner, dupliquer ou réacheminer vos FlowFiles vers toutes les autres destinations et processeurs.

Laboratoire 7 – Utiliser Spark pour appeler le point de terminaison du modèle et enregistrer dans Kudu

Spark Streaming est un cadre de traitement pour les données en temps quasi réel. Dans ce laboratoire, vous allez utiliser Spark pour consommer les messages Kafka qui contiennent les données IoT de la machine, et appeler le point de terminaison de l’API du modèle pour prédire si, avec ces valeurs IoT envoyées par la machine, la machine est susceptible de se casser. Enregistrez ensuite les résultats dans Kudu pour une analyse rapide.

Créez d’abord la table Kudu. Connectez-vous à Hue et dans la requête Impala, exécutez cette instruction:

CRÉER DES CAPTEURS DE TABLE
(
 sensor_id INT,
 sensor_ts TIMESTAMP,
 sensor_0 DOUBLE,
 sensor_1 DOUBLE,
 sensor_2 DOUBLE,
 sensor_3 DOUBLE,
 sensor_4 DOUBLE,
 sensor_5 DOUBLE,
 sensor_6 DOUBLE,
 sensor_7 DOUBLE,
 sensor_8 DOUBLE,
 sensor_9 DOUBLE,
 sensor_10 DOUBLE,
 sensor_11 DOUBLE,
 is_healthy INT,
 CLÉ PRIMAIRE (sensor_ID, sensor_ts)
)
PARTITION PAR HASH PARTITIONS 16
STOCKÉ COMME KUDU
TBLPROPERTIES ('kudu.num_tablet_replicas' = '1');

Vous pouvez maintenant configurer et exécuter le travail Spark Streaming. Vous avez besoin ici de la clé d’accès CDSW que vous avez enregistrée dans le laboratoire 2.

Ouvrez un deuxième terminal et SSH dans la machine virtuelle. La première consiste à exécuter le simulateur de données de capteur, vous ne pouvez donc pas l’utiliser.

sudo su -
ACCESS_KEY =
PUBLIC_IP = `curl https: // api.ipify.org /`
mv ~ / IoT-predive-maintenance / spark.iot.py ~
sed -i "s / YourHostname /` hostname -f` / "spark.iot.py
sed -i "s / YourCDSWDomain / cdsw. $ PUBLIC_IP.nip.io /" spark.iot.py
sed -i "s / YourAccessKey / $ ACCESS_KEY /" spark.iot.py
wget http://central.maven.org/maven2/org/apache/kudu/kudu-spark2_2.11/1.9.0/kudu-spark2_2.11-1.9.0.jar
rm -rf ~ / .m2 ~ / .ivy2 /
spark-submit --master local[2] --jars kudu-spark2_2.11-1.9.0.jar --packages org.apache.spark: spark-streaming-kafka-0-8-assembly_2.11: 2.4.0 spark.iot.py

Remarque: vous devrez peut-être utiliser spark2-submit si vous exécutez cette démonstration à partir d’un cluster CDH 5.

Spark Streaming inondera votre écran de messages de journal, cependant, à un intervalle de 5 secondes, vous devriez pouvoir repérer une table: ce sont les messages qui ont été consommés par Kafka et traités par Spark. Vous pouvez configurer Spark pour une fenêtre de temps plus petite, cependant, pour cet exercice, 5 secondes suffisent.

Laboratoire 8 – Analyse rapide de données rapides avec Kudu et Impala

Dans ce laboratoire, vous exécuterez certaines requêtes SQL à l’aide du moteur Impala. Vous pouvez exécuter un rapport pour vous informer des machines susceptibles de tomber en panne dans un avenir proche.

Connectez-vous à Hue et exécutez l’instruction suivante dans la requête Impala

sélectionnez sensor_id, sensor_ts parmi les capteurs où is_healthy = 0;

Exécutez plusieurs fois une instruction SQL pour compter toutes les lignes du tableau afin de confirmer que les dernières insertions sont toujours récupérées par Impala. Cela vous permet de créer des rapports en temps réel pour une action rapide.

appendice

Ressources

Blog original par Abdelkrim Hadjidj

Documentation Cloudera

Dépannage

CEM ne prend pas de nouveaux NAR

  1. Arrêtez Minifi.
  2. Supprimez manuellement le manifeste de l’agent à l’aide de l’API EFM:
    Vérifiez que chaque classe a le même ID de manifeste d’agent:

    http: // nom d'hôte: 10080 / efm / api / agent-classes
    ["name":"iot1","agentManifests":["agent-manifest-id"], "name": "iot4", "agentManifests":["agent-manifest-id"]]
    

    Confirmez que le manifeste n’a pas le NAR que vous avez installé

    http: // nom d'hôte: 10080 / efm / api / agents-manifestes? class = iot4
    [{"identifier":"agent-manifest-id","agentType":"minifi-java","version":"1","buildInfo":"timestamp":1556628651811,"compiler":"JDK 8","bundles":[{"group":"default","artifact":"system","version":"unversioned","componentManifest":{"controllerServices":[], "processeurs":
    

    Appelez l’API

    http: // nom d'hôte: 10080 / efm / swagger / 
    

    Frappez le DELETE - Supprime le manifeste de l'agent spécifié par id et dans le champ id, entrez id-manifeste-agent

  3. Redémarrez Minifi

Laisser un commentaire