L'énoncé du TP 3 est disponible. Du moins, en partie : comme le dit l'énoncé, certains éléments seront ajoutés au fur et à mesure que la matière nécessaire sera vu en classe.
Mise-à-jour!
On m'indique (avec raison!) que l'énoncé manque un peu de profondeur côté "portrait d'ensemble"... J'ai donc ajouté un peu de viande autour de l'os et décrit un peu mieux ce à quoi va servir cet outil. Voir l'énoncé!
Note : je vais vous fournir dans les prochains jours la structure de la base de données à utiliser : j'avais l'intention de vous laisser la faire, mais j'ai finalement décidé que ca serait plus simple que tout le monde ait la même base de départ.
Cet outil sert à surveiller un système (en l'occurence, le votre) et à garder un historique des situations "problématiques". Le tout fonctionne à l'aide de deux programmes : etat_sys.pl, qui nous donne une idée de l'état du système, et surveille_sys.pl, qui est activé chaque minute par cron et qui fait le travail de surveillance proprement dit.
Le script surveille_sys.pl utilise une architecture utilisant des "plugins" : le programme est exécuté chaque minutes et exécute les "plugins" appropriés, selon la pertinence (c'est décrit plus loin). Ainsi, chaque minutes, les plugins contenus dans le répertoire ~/.montmoniteur/minutes_1/ vont être exécutés et vont faire un travail de surveillance quelconque. Pour les minutes qui sont un multiple de 5, on exécute les plugins du répertoire ~/.montmoniteur/minutes_5/, idem pour 10 minutes, etc.
Les scripts de monitoring proprement dit seront à développer au cours des prochaines semaines en utilisant les modules Perl que l'on verra en classe. Ces scripts utiliseront des modules Perl "standard" pour faire toute sorte de vérifications (état de santé d'un service, lecture de syslog, etc.).
etat_sys.pl :
Par défaut, se connecte à la BD et vérifie si des erreurs ont été détectées (on rapporte les 5 dernières erreurs au maximum, par défaut), les affiches et marque les erreurs comme ayant déjà été rapportées. Si appelé avec le paramètres "rapport x.'' (x étant un nombre), affiche tous les détails connus des x derniers événements.
Exemple d'utilisation : on ajoute ce script dans les commandes exécutées au démarrage de notre session shell (dans .bashrc par exemple). Lorsqu'on ouvre un terminal, la commande nous informe d'une situation problématique :
Erreur : le service httpd ne répond plus!
[benoit@localhost benoit]$
surveille_sys.pl :
Activé par cron à chaque minutes. S'occupe de vérifier si des script de monitoring doivent être appelés.
Dans la tradition Unix, les configurations du programme sont situé dans un répertoire caché (~/.montmoniteur/). Dans ce répertoire, on retrouve :
D'abord, déterminer quels scripts doivent s'exécuter.
Ensuite, charger un-à-un les scripts en stockant leurs noms (pour pouvoir rapporter les erreurs d'exécution de script de la même façon qu'une erreur "normale", via la bd et etat_sys.pl, en nommant le script "coupable").
On exécute enfin, pour chaque script, la fonction $PACKAGE->tester(), qui fait le test fourni par le script.
Enfin,on appelle $PACKAGE->stockage_erreur() pour stocker les éventuels messages d'erreurs obtenus dans la BD. (MAJ Cette fonction pourrait être appelé implicitement dans la fonction tester() : c'est à vous de décider.)
Voir les exemples pour savoir comment faire ces opérations.
La liste des scripts de surveillance à programmer vous sera donnée au cours des prochaines semaines, selon les outils Perl qui seront vu en classe. Cet énoncé de TP est donc appelé à changer.
Pour l'instant, contentez-vous de faire exécuter des tests simples, qui vont par exemple afficher un "bonjour" ou autre chose qui fait votre bonheur ('Hello', par exemple.. ;oP ).
Posted by holstein at avril 6, 2004 10:20 AMMoi je dis que c'est trop compliqué...
Posted by: Jonathan at mai 4, 2004 12:54 PM