19 — agentmanager et agentmonitor
gAgent fournit deux outils en ligne de commande pour superviser un système d’agents en cours d’exécution.
Prérequis : agentplatform doit être lancé (voir section Ordre de
lancement recommandé ci-dessous pour le mode local et le mode cluster).
./bin/agentplatform # mode local
./bin/agentplatform --master --ip 192.168.1.10 # mode master (cluster)
agentmanager
agentmanager est le tableau de bord en ligne de commande. Il permet
de lister les agents, surveiller leur état en temps réel, et agir sur
eux à distance.
Lister les agents :
./bin/agentmanager list
[AMS] 4 agent(s)
NOM PID ENDPOINT ZMQ SLAVE ÉTAT
--------------------------------------------------------------------------
planificateur 12345 ipc:///tmp/acl_planificateur local active
transporteur-a 12346 ipc:///tmp/acl_transporteur-a local active
transporteur-b 12347 ipc:///tmp/acl_transporteur-b local active
coordinateur 12348 ipc:///tmp/acl_coordinateur local waiting
En mode cluster, la colonne ENDPOINT ZMQ affiche des adresses TCP et
la colonne SLAVE indique l’IP de la machine hébergeant l’agent :
[AMS] 3 agent(s)
NOM PID ENDPOINT ZMQ SLAVE ÉTAT
--------------------------------------------------------------------------
alice 10101 ipc:///tmp/acl_alice local active
bob 20202 tcp://192.168.1.20:52345 192.168.1.20 active
charlie 30303 tcp://192.168.1.21:57891 192.168.1.21 active
L’état d’un agent peut être :
État |
Signification |
|---|---|
|
L’agent tourne et exécute ses behaviours |
|
L’agent attend un message (bloqué sur |
|
L’agent a été suspendu manuellement |
|
L’agent s’est terminé (en cours de nettoyage) |
Surveillance en temps réel :
./bin/agentmanager watch # rafraîchi toutes les secondes
./bin/agentmanager watch 500 # rafraîchi toutes les 500 ms
L’écran se met à jour en continu. Vous voyez les agents apparaître au démarrage et disparaître à l’arrêt. Les services DF enregistrés sont affichés en dessous.
gAgent — 14:32:05 (Ctrl+C pour quitter)
Agents (3)
NOM PID ENDPOINT ZMQ SLAVE ÉTAT
--------------------------------------------------------------------------
capteur 12345 ipc:///tmp/acl_capteur local active
moniteur 12346 ipc:///tmp/acl_moniteur local waiting
coordinateur 12347 ipc:///tmp/acl_coordinateur local active
Services DF (2)
AGENT TYPE SERVICE LANGAGE
------------------------------------------------------------------------------
capteur sensor temperature-reader fipa-sl
coordinateur planning task-allocator fipa-sl
Contrôler un agent à distance :
# Suspendre un agent (il stoppe ses behaviours mais reste en mémoire)
./bin/agentmanager suspend capteur
# Réveiller un agent suspendu
./bin/agentmanager wake capteur
# Supprimer un agent (envoie un signal de suppression)
./bin/agentmanager kill capteur
Chercher dans le DF depuis le terminal :
# Tous les agents de type "transport"
./bin/agentmanager df search transport
# Filtrer par type et ontologie
./bin/agentmanager df search transport logistics
[DF] 2 service(s) pour type="transport"
AGENT TYPE SERVICE LANGAGE ONTOLOGIE
------------------------------------------------------------------------------
transporteur-a transport road-carrier fipa-sl logistics
transporteur-b transport road-carrier fipa-sl logistics
agentmonitor
agentmonitor affiche les messages de log envoyés par les agents via
sendMsgMonitor(). C’est un flux UDP en temps réel — chaque message
arrive dans le terminal avec son numéro de séquence.
./bin/agentmonitor
[Monitor] écoute sur 127.0.0.1:40013
00000001 : Environnement -> carte initialisée 600x300
00000002 : Environnement -> agent capteur connecté
00000003 : Environnement -> température publiée : 22°C
Pour envoyer un message depuis votre environnement :
// Dans une classe héritant de Environnement
sendMsgMonitor("température publiée : " + std::to_string(temp_) + "°C");
Note
agentmonitor est destiné à l’environnement (classe
Environnement). Pour logger depuis un agent, utilisez plutôt
le Logger de gAgent qui écrit dans les fichiers de log
structurés (JSON Lines).
Ordre de lancement recommandé
Mode local (une seule machine) :
# Terminal 1 — plateforme (AMS + DF via sockets Unix)
./bin/agentplatform
# Terminal 2 — visualisation web (si vous utilisez l'environnement)
./bin/agentview
# Terminal 3 — monitoring live
./bin/agentmanager watch 500
# Terminal 4 — logs environnement
./bin/agentmonitor
# Terminal 5 — votre simulation
./build/ma_simulation
Mode cluster (plusieurs machines) :
Sur la machine master (ex. 192.168.1.10) — à lancer en premier :
# Terminal 1 — plateforme master (AMS TCP:40011, DF TCP:40012)
./bin/agentplatform --master --ip 192.168.1.10
# Terminal 2 — supervision du cluster complet
./bin/agentmanager watch 500
Sur chaque machine esclave (ex. 192.168.1.20) :
# Terminal 1 — plateforme esclave (se connecte au master)
./bin/agentplatform --slave 192.168.1.10:40011
# Terminal 2 — votre simulation (les agents lisent /tmp/gagent.cfg)
./build/ma_simulation
Note
agentmanager peut être lancé depuis n’importe quelle machine du
cluster — il interroge le master AMS et affiche tous les agents,
locaux et distants, avec leur machine d’appartenance (colonne
SLAVE).
Pour les options avancées (--port, --ip, --control-port,
--base-port), voir 20 — Déploiement multi-machine.
Référence des commandes
Commande |
Description |
|---|---|
|
Liste tous les agents dans l’AMS |
|
Surveillance en temps réel (défaut : 1000 ms) |
|
Supprime l’agent |
|
Suspend l’agent |
|
Réveille l’agent suspendu |
|
Cherche les services par type dans le DF |
|
Cherche avec filtre sur l’ontologie |
|
Affiche les logs de l’environnement en temps réel |