====== Collector ====== Collector est un plugin de collecte de données pour Nagios utilisant le protocole SNMP. Il remplace avantageusement le plugin check_snmp de la distribution Nagios, avec les améliorations suivantes : * Il utilise l'interpréteur Perl intégré à Nagios pour éviter de créer de nouveaux processus, permettant ainsi à un serveur Nagios de superviser un grand nombre de services sans être affecté au niveau de la charge système ; * Il envoie vers chaque équipement à surveiller une requête SNMP unique, qui retourne l'ensemble des données à superviser et les données de métrologie, ce qui permet de réduire au minimum la bande passante réseau ; * Les données de métrologie peuvent être exportées vers une application externe, en particulier l'application StoreMe. Ce plugin est écrit en langage Perl et exécuté directement par Nagios. Il est totalement configurable afin de collecter toutes valeurs pouvant être récupérées par SNMP sur tout type d'équipement, et de les rediriger par le protocole UDP, ou selon les cas, vers Nagios (via le plugin SpoolMe), ou vers StoreMe. La limitation de l’utilisation de ce plugin est que la base de métrologie est alimentée à la même période que la supervision (par exemple, une minute). ====== StoreMe ====== Le daemon StoreMe est le composant de Vigilo qui génère les bases de données de métrologie au format RRD. Il reçoit ces données par le protocole UDP et met à jour les bases RRD avec ces données. Si une base n'existe pas, elle est créée automatiquement ; ce qui est très utile en particulier pour conserver plusieurs jeux de données au cours du temps. Ce logiciel est écrit en langage Python et basé sur l'extension python RRD. ====== SpoolMe ====== Le plugin Nagios SpoolMe est un module de tampon utile pour la supervision d'architectures de grande envergure, lorsque le nombre d'alertes remontées est très grand. Il place les alertes remontées par le protocole UDP dans un tampon avant de les remonter à Nagios via son « pipe » nommé. Ce plugin est écrit en Perl. ====== ConfMgr ====== Le gestionnaire de configuration est la clé de voûte de Vigilo qui transforme un assemblage d'éléments plus ou moins indépendants les uns des autres en une solution de supervision complète. Il sert à gérer la configuration de l'ensemble des composants de manière centralisée, à partir d'une ou plusieurs sources d'informations. Basée sur subversion, son architecture recouvre quatre parties : * **Configuration** : Elle contient la liste des hôtes, des serveurs, des applications à configurer, des groupes d'applications. * **Chargement de configuration** : Il s'agit d'une interface externe permettant l'injection des données concernant les machines à superviser. * **Génération** : Génération des fichiers à partir de la configuration et de « templates ». * **Déploiement** : Déploiement piloté synchronisant la validation et la mise en production des nouvelles configurations sur les serveurs hébergeant les applications. ConfMgr est un outil à la fois simple et extensible, développé en langage Python. Il est possible de l'étendre tant au niveau de la configuration, en ajoutant de nouvelles sources, que des applications supportées, en ajoutant de nouveaux templates. ====== RRDGraph ====== RRDGraph est une interface web de génération et d'affichage de graphes de métrologie, permettant de suivre l'évolution d'une valeur récupérée sur les systèmes supervisés au cours du temps. Cette application concatène différents fichiers RRD correspondant à un équipement ou un serveur sur une durée définie et produit des graphes correspondant à une ou plusieurs valeurs, suivant des modèles prédéfinis (lignes, aire et ligne, lignes symétriques, lignes empilées). RRDGraph est une application python basée sur l'extension python RRD. L'interface web est basée sur Apache et mod_python. ====== RRDTool ====== Les composants de métrologie de Vigilo reposent sur RRDtool, une suite de programmes et d'extensions pour divers langages permettant de manipuler des fichiers au format RRD (Round Robin Database). Ce format est particulièrement adapté au stockage de données numériques récupérées à des intervalles de temps constants sur une durée définie, les nouvelles mesures remplaçant les valeurs les plus anciennes. L'utilisation de ce format dédié permet de manipuler de manière efficace de grands volumes de données de métrologie sans occuper d'espace disque inutile en requérant une puissance de traitement minimale. ====== Perf2Store ====== Perf2Store est un plugin Nagios permettant de rediriger les données de métrologie collectées vers StoreMe, le service de stockage de métrologie du projet Vigilo. ====== DashBoard ====== Le DashBoard est l’interface utilisateur principale (IHM) consultée par les pilotes, elle permet de représenter sur un unique écran la liste des problèmes à traiter ou en cours de traitement. {{ dashboardecran.png |Ecran du DashBoard (Cliquer pour agrandir)}} Ses principales caractéristiques sont : * Une vue synthétique centrée sur des évènements, * La séparation d'un évènement en plusieurs alarmes « bas niveau » concernant le même équipement, * L'affichage des états transitoires d’un évènement. Pour chaque évènement, les informations suivantes sont disponibles : * Etat déclencheur, * Etat en temps réel, * Durée, * Equipement concerné, * Détail du problème, * Traitement métier appliqué, * Lien vers l’écran Nagios de l’hôte concerné, * Lien vers les graphes RRD de l’hôte. Son architecture est basée sur les éléments suivants : * Une base de données MySQL contenant les informations relatives aux évènements et leurs états, * Un démon développé en Perl qui injecte les notifications en provenance d'autres systèmes, en l'occurrence CorrSup, * Un script d'injection de notifications permettant de greffer une source externe quelconque d'évènements, * Un frontal, web prenant la forme d'un script CGI écrit en perl qui effectue des requêtes sur la base de données et affiche les résultats sous forme de tableau avec indicateurs de couleur et de traitement associés. ====== SupNavigator ====== {{ supnavigatorecran.png |Ecran de SupNavigator }} L'objectif de SupNavigator est de fournir une interface unifiée d'accès à l'ensemble des applications web de supervision et de métrologie (Nagios, RRDGraph), alors même que ces interfaces sont réparties sur plusieurs serveurs. Il s'agit de l'une des deux interfaces directement utilisées en permanence par les administrateurs des systèmes à superviser. Cette interface permet, en quelques clics, d'afficher les données de supervision relatives à un serveur ou des graphiques de métrologie correspondants, sur des périodes de temps aisément paramétrables. {{ supnavigatorarchi.png |Architecture SupNavigator }} SupNavigator comporte plusieurs composants : * Une application en JavaScript utilisant des technologies dites AJAX (Asynchronous Javascript and XML) permettant de rechercher les systèmes et affichant les données de manière interactive. * Un backend, basé sur mod_python, qui répond aux requêtes de cette application concernant les listes d'hôtes et la redirection vers d'autres pages. * Un moteur de recherche accessible sur une page simple ou pouvant être directement inséré dans un navigateur tel que Firefox 2.0. * Des « reverse-proxies », qui redirigent les connexions de manière transparente vers les serveurs hébergeant les données réelles, sans nécessiter de les rendre directement accessibles au client qui consulte ces données. ====== CorrSup ====== CorrSup est un démon de corrélation basé sur SEC (Simple Event Correlator). Il reçoit les alertes de l'ensemble des sources d'erreurs, à savoir les alertes remontées par Nagios, mais également d'autres sources si elles sont disponibles. SEC est écrit en Perl. Il réalise une corrélation à partir d'un nombre arbitraire de sources et vers un nombre arbitraire de destinations, en utilisant des règles de corrélation complètement paramétrables. Trois fonctions de corrélation sont mises en place par le composant CorrSup : * **Réduction** : Des notifications identiques qui arrivent en masse pour signaler un même évènement sont réduits pour minimiser les risques d’inondation. En revanche, l’arrivée d’un grand nombre d’évènements similaires est en soi une information qui peut être également pertinente. * **Corrélation** : Des évènements différents qui corroborent un même diagnostic sont consolidés ensemble pour produire une alerte unique. * **Traduction** : Les évènements fournis sous la forme du format unique de dialogue avec CorrSup sont transcrits dans un format compréhensible pour le DashBoard. Cette fonction ne vient se greffer que pour adresser l'interface DashBoard, il est donc possible d'utiliser CorrSup de manière indépendante du DashBoard. ====== CorrTrap ====== CorrTrap est une autre instance de SEC qui récupère l'ensemble des traps SNMP et les corrèle en fonction de règles définies, en fonction des équipements, et de l'architecture du réseau.