Diagnostiquer et corriger les agents Medulla
S'applique à : Medulla – Serveur et agents
Version : medulla_agents_V25.py
Environnement : On-Premise / Debian
Catégorie : Diagnostic et correction des agents Medulla
Le script medulla_agents_V25.py permet de diagnostiquer les agents Medulla, d'identifier les problèmes de communication, de configuration ou d'inventaire et de proposer des corrections lorsque celles-ci sont possibles.
Il fonctionne sur les machines indiquées ON ou OFF dans Medulla. Selon leur état, il utilise les communications XMPP ou SSH.
Important : Un audit n'effectue aucune modification de configuration. Les actions correctives sont encadrées par des contrôles de sécurité et nécessitent une confirmation explicite.
1. Usage rapide
Cette première partie permet de télécharger le script, d'effectuer un diagnostic, d'analyser les résultats et de lancer une première correction.
1.1. Télécharger le script
Connectez-vous en SSH au serveur Medulla, puis exécutez :
wget https://dl.medulla-tech.io/ma/medulla_agents_V25.py
chmod +x medulla_agents_V25.py
Le script est disponible à l'adresse : Télécharger medulla_agents_V25.py.
1.2. Lancer un premier diagnostic
Pour diagnostiquer les machines apparaissant OFF dans Medulla :
sudo ./medulla_agents_V25.py --dry-run
Pour auditer l'ensemble des machines, ON et OFF :
sudo ./medulla_agents_V25.py --perimetre tout --dry-run
Conseil : Commencez par l'option --dry-run pour effectuer une analyse sans correction.
1.3. Diagnostiquer une machine précise
Pour contrôler une machine à partir de son nom :
sudo ./medulla_agents_V25.py --cible PC1068 --dry-run
Pour utiliser son adresse IP :
sudo ./medulla_agents_V25.py --cible 192.168.1.25 --dry-run
Plusieurs machines peuvent être indiquées :
sudo ./medulla_agents_V25.py --cible PC1068,PC1069,192.168.1.25 --dry-run
1.4. Consulter les résultats
À la fin du diagnostic, le script crée un répertoire de type releve_DATE contenant les résultats.
| Fichier | Description |
|---|---|
| resultats.csv | Diagnostic détaillé de chaque machine. |
| statistiques.csv | Synthèse statistique du relevé. |
| plan_de_remediation.csv | Problèmes détectés et actions recommandées. |
| fiches_off_obsoletes.csv | Fiches OFF potentiellement obsolètes. |
| journaux/<poste>.log | Journal détaillé de chaque poste. |
| trace.log | Traces supplémentaires avec l'option --verbose. |
Les fichiers CSV utilisent le séparateur point-virgule et l'encodage UTF-8 avec BOM.
Pour commencer, consultez le fichier plan_de_remediation.csv, puis resultats.csv.
1.5. Comprendre les premières anomalies
| Constat | Signification | Première vérification |
|---|---|---|
| OK | Aucune anomalie détectée par les contrôles réalisés. | Aucune intervention nécessaire. |
| PARTIEL | Diagnostic ou correction incomplet. | Consulter les journaux. |
| Machine OFF | Agent déconnecté dans Medulla. | Vérifier SSH, réseau et services. |
| Service arrêté | Un service nécessaire ne fonctionne pas. | Examiner la correction proposée. |
| Inventaire absent | Inventaire non disponible. | Vérifier l'agent et la chaîne d'inventaire. |
| Relais injoignable | Problème de communication avec le relais. | Vérifier les flux et le relais affecté. |
| Fichiers manquants | Composants de l'agent absents ou incomplets. | Comparer avec les fichiers de référence. |
1.6. Lancer une première correction
Après avoir analysé les résultats, lancez une intervention ciblée :
sudo ./medulla_agents_V25.py --cible PC1068 --oui
Le script effectue un diagnostic et propose les actions applicables.
Attention : Les interventions sensibles nécessitent une confirmation explicite. Vérifiez les actions proposées avant de les autoriser.
Après correction, relancez un audit :
sudo ./medulla_agents_V25.py --cible PC1068 --dry-run
1.7. Utiliser le menu interactif
Pour une utilisation guidée, exécutez simplement :
sudo ./medulla_agents_V25.py
Le script propose de sélectionner la langue, le périmètre et le mode de traitement.
| Choix | Fonction |
|---|---|
| 1 | Audit des machines OFF. |
| 2 | Audit des machines ON. |
| 3 | Audit de toutes les machines. |
| 4 | Audit de machines désignées. |
| 5 à 8 | Audit avec possibilité de correction. |
| 9 | Audit des machines ON sans UUID d'inventaire. |
| 10 | Audit et actions sur les machines ON sans UUID d'inventaire. |
2. Usage complet
Cette partie décrit les mécanismes techniques, les contrôles et les opérations avancées disponibles dans le script.
2.1. Fonctionnement SSH et XMPP
Le script choisit le moyen d'accès à chaque machine en fonction de son état dans Medulla.
| État | Méthode | Fonctionnement |
|---|---|---|
| OFF | SSH | Connexion à l'adresse IP avec pulseuser et une clé SSH. |
| ON | XMPP | Utilisation du plugin shellcommand de l'agent. |
| ON sans réponse XMPP | SSH de repli | Tentative de diagnostic via SSH. |
| OFF avec fiche ON correspondante | XMPP | Traitement de la fiche ON et signalement de la fiche potentiellement obsolète. |
2.2. Prérequis techniques
Le script doit être exécuté sur un serveur Medulla disposant des accès nécessaires à l'infrastructure.
Vérifiez notamment :
- La disponibilité de Python 3.
- Les droits administrateur nécessaires côté serveur.
- L'accès aux configurations et journaux Medulla.
- La disponibilité des services ejabberd et Medulla.
- Les flux SSH et XMPP nécessaires.
- La cohérence des adresses IP et des fiches machines.
2.3. Protection des machines fonctionnelles
La version V25 protège par défaut les machines ON dont l'agent répond correctement en XMPP.
Ces machines peuvent être auditées, mais les corrections, relances et reconfigurations ne sont pas engagées automatiquement.
Pour permettre leur traitement dans les conditions prévues par le script, l'option suivante existe :
--full
Attention : L'option --full doit être réservée aux interventions justifiées sur des machines déjà fonctionnelles.
2.4. Contrôle des services
Le script examine notamment les services suivants :
- Le service principal de l'agent Medulla.
- medullanetnotify.
- sshdaemon.
Il distingue les services démarrés, arrêtés, absents ou désactivés.
Les services medullanetnotify et sshdaemon arrêtés peuvent être redémarrés dans le cadre des corrections proposées.
Un service absent ou désactivé peut nécessiter une intervention manuelle ou une réinstallation.
2.5. Contrôle de la configuration
Le script analyse notamment les fichiers agentconf.ini et agentconf.ini.local, ainsi que les paramètres nécessaires à la communication XMPP.
Il peut détecter des configurations incohérentes, des erreurs de journalisation ou des problèmes d'enregistrement.
2.6. Contrôle des fichiers de l'agent
Le diagnostic recherche les fichiers manquants, vides ou différents des fichiers de référence présents sur le serveur.
Il examine également certains composants de secours, notamment agentrescue.
Lorsqu'une correction est applicable, le script peut réaliser une mise à niveau différentielle des fichiers.
Sécurité : Le mécanisme est conçu pour éviter toute rétrogradation de l'agent et prévoit des sauvegardes et un retour arrière en cas de problème.
2.7. Analyse des journaux
Le script examine les journaux de l'agent, notamment xmpp-agent-machine.log.
Il recherche entre autres :
- Les erreurs de fonctionnement.
- Les boucles de reconfiguration.
- Les messages ABORT RELAY DOWN ou ABORT INFO RELAY MISSING.
- Les anomalies de configuration.
- Les niveaux de journalisation DEBUG.
2.8. Diagnostic réseau
Le script contrôle la communication entre les postes, le serveur Medulla et les relais.
Il peut notamment examiner les connexions TCP et signaler les ports inaccessibles.
Les ports sont configurables dans l'en-tête du script afin de correspondre à l'architecture déployée.
Limitation : Pour UDP, un envoi de paquet ne garantit pas que le service distant l'a reçu ou traité.
2.9. Diagnostic des machines injoignables
Lorsqu'une machine ne répond ni en SSH ni en XMPP, le script peut poursuivre l'analyse à partir des informations disponibles sur le serveur Medulla.
Il examine notamment les journaux :
- ejabberd.
- Enregistrement des agents.
- Configuration.
- Souscription.
- Reconfiguration.
- Inventaire.
- Relais.
Ces informations permettent d'orienter le diagnostic vers un problème réseau, un agent non connecté, un échec d'enregistrement ou une fiche devenue obsolète.
2.10. Contrôle de l'inventaire
Le script vérifie les traces de génération d'inventaire et les informations disponibles côté serveur.
Pour diagnostiquer les machines ON sans UUID d'inventaire :
sudo ./medulla_agents_V25.py --sans-inventaire --dry-run
Ce mode permet d'identifier les machines connectées dont la remontée d'inventaire nécessite une investigation.
2.11. Corrections disponibles
| Action | Description |
|---|---|
| Démarrage des services | Démarrage de services Medulla arrêtés lorsque cela est possible. |
| Réparation | Correction de certains éléments de configuration et de l'agent. |
| Copie différentielle | Restauration ou mise à niveau de fichiers nécessaires. |
| Dossier de journaux | Création de Medulla\var\log lorsqu'il manque. |
| Relance | Redémarrage contrôlé du service. |
| Reconfiguration | Demande de reconfiguration via le serveur Medulla. |
| Reset | Opération exceptionnelle de dernier recours. |
Toutes les anomalies ne peuvent pas être corrigées automatiquement. Les rapports permettent de distinguer les interventions réalisées des problèmes restants.
2.12. Sécurités des corrections
Avant les interventions, le script applique plusieurs protections :
- Confirmation explicite des actions.
- Nouvelle vérification de l'identité du poste.
- Contrôle de son état de connexion.
- Arrêt contrôlé du service avant les modifications qui l'exigent.
- Sauvegarde des éléments modifiés.
- Possibilité de retour arrière.
- Absence de rétrogradation de l'agent.
- Absence de répétition automatique des corrections.
2.13. Reconfiguration de l'agent
La reconfiguration utilise le mécanisme need_reconf=1 dans la table xmppmaster.machines.
Elle concerne une seule machine à la fois, ON et connectée en XMPP.
Elle peut être proposée lorsque certains problèmes persistent :
- Inventaire GLPI absent.
- Relais injoignable.
- Configuration agentconf.ini à reprendre.
- Enregistrement incomplet.
L'option --reconfigurer permet de proposer cette opération même en l'absence d'un motif automatiquement identifié.
Une confirmation distincte reste nécessaire.
2.14. Reset de l'agent
Le reset est prévu comme une opération de dernier recours sur les versions compatibles de Medulla, à partir de la version serveur 5.6.4.
Il est soumis à des conditions strictes et concerne une seule machine.
Il ne doit pas être utilisé comme première action sur un poste OFF.
Attention : La reconfiguration et le reset sont deux opérations différentes. Le reset doit être réservé aux situations dans lesquelles les autres investigations et corrections n'ont pas permis de rétablir le fonctionnement.
2.15. Méthode recommandée pour un parc important
Étape 1 : réaliser un état initial.
sudo ./medulla_agents_V25.py --perimetre tout --dry-run
Étape 2 : analyser le plan de remédiation.
Regroupez les anomalies par famille : services, réseau, configuration, relais, inventaire ou fichiers de l'agent.
Étape 3 : tester une correction sur une machine.
sudo ./medulla_agents_V25.py --cible PC1068 --oui
Étape 4 : contrôler le résultat.
sudo ./medulla_agents_V25.py --cible PC1068 --dry-run
Étape 5 : étendre progressivement.
Après validation, appliquez la même méthode à un groupe de machines présentant des anomalies comparables.
2.16. Dépannage des problèmes fréquents
| Problème | Vérifications recommandées |
|---|---|
| Machine OFF et SSH inaccessible | Vérifier l'alimentation, l'adresse IP, les flux réseau et sshdaemon. |
| Machine ON sans réponse XMPP | Vérifier la session XMPP, shellcommand et les journaux. |
| Agent en boucle de reconfiguration | Examiner les journaux et l'enregistrement XMPP. |
| Relais indisponible | Contrôler l'affectation du relais, son service et les flux réseau. |
| Inventaire absent | Vérifier la génération de l'inventaire et les journaux du serveur. |
| Fichiers manquants | Comparer avec les fichiers de référence du serveur. |
| Correction partielle | Consulter les journaux individuels et les problèmes restants. |
| Fiche OFF potentiellement obsolète | Vérifier la correspondance avec une fiche ON avant suppression. |
2.17. Ajouter des contrôles personnalisés
Le script contient deux ensembles de tests extensibles :
- TESTS_POSTE : contrôles exécutés sur les postes audités.
- TESTS_SERVEUR : contrôles exécutés sur le serveur Medulla.
Ces tests peuvent enrichir les rapports, les diagnostics et les recommandations de remédiation.
Les modifications doivent être testées avant toute utilisation en production.
2.18. Options et aide
Pour afficher la liste complète des options de la version installée :
python3 medulla_agents_V25.py --help
Pour vérifier la syntaxe Python :
python3 -m py_compile medulla_agents_V25.py
Pour obtenir des traces supplémentaires lors d'un diagnostic :
sudo ./medulla_agents_V25.py --dry-run --verbose
3. Bonnes pratiques
- Commencer systématiquement par un audit sans correction.
- Privilégier une machine cible pour la première intervention.
- Conserver les rapports avant et après correction.
- Examiner les problèmes restants après intervention.
- Réserver --full aux interventions nécessaires sur les machines fonctionnelles.
- Utiliser la reconfiguration et le reset uniquement lorsque cela est justifié.
- Vérifier l'état réel d'une machine avant de conclure qu'un agent est défectueux.
- Éviter les corrections massives sans validation préalable.
4. Résumé
Le script medulla_agents_V25.py permet d'auditer les agents Medulla, d'identifier les anomalies, de générer un plan de remédiation et de proposer des corrections encadrées.
Pour commencer, téléchargez le script :
wget https://dl.medulla-tech.io/ma/medulla_agents_V25.py
chmod +x medulla_agents_V25.py
Puis lancez un audit global :
sudo ./medulla_agents_V25.py --perimetre tout --dry-run
Consultez ensuite plan_de_remediation.csv pour identifier les premières interventions.
Téléchargement : medulla_agents_V25.py