2.5 KiB
TP - Créer un réseau d'agents indépendants communicants
Avertissement
Ceci est un TP de classe. Vous devez vous répartir les tâches et travailler par binome/trinome/etc. N'essayez pas d'implémenter l'ensemble des agents de manière individuelle. Vous devez donc également vous mettre d'accord sur le format des messages pour que vos agents soient inter-opérables.
Contexte
Créer un réseau d'agents indépendants capables de récolter/partager des informations sur vos machines respectives. Ces agents devront communiquer via un serveur NATS en suivant le paradigme publish/subscribe
.
Les agents suivants devraient être implémentés:
- Un agent récoltant l'espace disque utilisé sur votre machine et publiant celui ci sur le réseau.
- Un agent récoltant la température des CPU de votre machine (sur Linux, voir
/sys/class/thermal
). - Un agent d'alerte réagissant aux messages des agents "Espace disque" et "Température CPU". Si les valeurs dépassent un seuil prédéfini (le choix reste à votre discrétion), cet agent doit envoyer un message d'alerte sur le réseau.
- Un agent de transmission des alertes. Lorsque cet agent reçoit un message d'alerte via le serveur NATS, il doit transformer celui ci en courriel et l'envoyer à une adresse prédéfinie.
Ce type de topologie avec des agents indépendants est typique d'un réseau "IoT".
Chaque agent que vous implémenterez est assimilable à un objet avec une fonction précise (capteur d'humidité, thermomètre, capteur de présence, etc...).
Ces objets communiquent par l'envoi/réception de messages sur un médium/protocole de transport commun (ici TCP/IP + NATS). Dans la réalité, ces objets pourraient utiliser du Bluetooth, des ondes radio, une connexion 4G...
Consignes
- Récupérer/installer un serveur NATS et le lancer sur une de vos machines. Ce serveur NATS servira de canal de communication entre vos agents.
- À l'aide du langage de votre choix implémenter un des agents décrits ci dessus. Si vous préférez travailler avec des scripts (Bash ou Powershell, à votre convenance), vous pouvez utiliser l'utilitaire nuts pour gérer la communication avec le serveur NATS. Vous n'êtes pas obligé d'implémenter vos agents avec le même langage.
- Concevoir un protocole commun pour que vos agents puissent communiquer ensemble.
- S'assurer que les agents implémentés sont interopérables et que les alertes par courriel sont correctement envoyées.