Cahier des Charges
Sébastien DEBIA Damien DUMAZER
Table des matières
Contexte : ...4
Existant : ... 4
Objectifs : ... 4
Fonctionnalités principales : ...4
Fonctionnement détaillé : ... 5
Noyau : ... 5
Plugins : ... 5
Fichier de configuration : ...6
Annexes... 7
Exemple de fichier de configuration : ...8
Contexte :
L'IUP dispose de plusieurs serveurs nécessitant une surveillance permanente afin d'éviter des pertes de données ou autres inconvénients suite à un problème quelconque (surchauffe, problème d'alimentation ...).
En cas de problème, les responsables doivent être prévenus et les serveurs éventuellement arrêtés avant qu'il n'y ai perte de données.
Existant :
Un outil de surveillance a déjà été développé au sein de l'IUP pour surveiller les serveurs.
Cette application permet la surveillance de la température des processeurs, la qualité des tensions des alimentations et l'envoi d'email.
Cependant elle n'est pas modulaire, et difficilement maintenable.
Objectifs :
L'objectif est donc de fournir une application propre, robuste et facilement maintenable, qui remplisse le rôle de surveillance des serveurs.
A l'avenir, cette application pourra être disponible sur une forge publique et sous licence libre. Éventuellement le développement pourrai être continué par des développeurs externes. Dans la même optique il est souhaité de créer des paquets pour les principales distributions Linux.
Fonctionnalités principales :
L'application devra fonctionner comme un service (ou deamon).
Elle doit pouvoir surveiller tout type de paramètres (pas seulement des températures) et pouvoir fournir différents types de réponses ( mail, écriture de log, extinction des machines etc ).
L'application doit permettre l'ajout et la modification de paramètres et d'alertes simplement.
Les modules de surveillance des paramètres et d'alertes seront implémentés sous forme de plugins.
De cette façon, des développeurs tiers pourront créer des nouveaux plugins aisément. D'autre part, l'application doit permettre le chargement et déchargement de ces plugins à chaud.
Fonctionnement détaillé :
L'application sera séparée en 2 parties distinctes : Un noyau et des plugins.
Les plugins seront séparés en 2 catégories :
D'une part, des plugins qui se chargent de la récolte d'informations (modules de mesures).
D'autre part, des plugins qui fournissent des moyens de réponse en cas d'alerte (modules de communications).
Le but étant d'avoir un noyau correctement conçu et permettant à des developpeurs tiers de créer de nouveaux plugins pour surveiller plus de parametres ou créer de nouvelles alertes.
Noyau :
Le noyau proposera la gestion des plugins ( ajout / suppression, paramétrage ) Configuration du noyau :
La configuration du noyaux permettra des associations entre modules de communication et modules de mesure (ex: envoie d'un email si la tempèrature du processeur dépasse un certain seuil).
Elle se fera en xml dans un fichier de configuration global. Il permettra de définir les plugins d'entrée et de sortie qui seront chargés ainsi que les règles.
Configuration des plugins :
Plusieurs plugins du même type pourront être chargés auprés du noyau, cela permettra différentes configurations d'un même plugin.
La configuration de chaque plugin sera indépendante. Elle permettra par exemple la définition des adresses mails concernées par une alerte.
Plugins :
Nous allons, au minimum, développer les plugins suivants :
– Plugin de lecture de la température du processeur.
– Plugin d'arret de la machine.
– Plugin d'alerte par e-mail.
Fichier de configuration :
Le fichier de configuration est écrit en xml.
Il comporte une section de déclaration des plugins qui vont être chargés. ( comprise dans une balise plugin). Elle contient la liste des plugins d'entrée (balise input) et sortie (balise output) chaqu'un définissant l'id de l'instance du plugin (plusieurs pouvant être chargées en même temps), le plugin concerné et ses paramêtres.
Il y a également une section règles (rules) qui permet l'association des plugins. Une règle associe un plugin d'entrée et un plugin de sortie et définie leur relation ( valeur limite, intervalle ... )
Un exemple est disponible en annexe, il déclare quelques plugins (lecture de température, mail et arrêt machine) et quelques règles (envoi de mails en cas de dépassement d'une valeur limite, etc)
Annexes
Exemple de fichier de configuration :
<plugins>
<input name='p1'>
<plugin name='temp_cpu'/>
</input>
<output id='mail1'>
<plugin name='mail'>
<adress>machin@toupin.fr</adress>
<text>la temperature du processeur a depasse %d °C</text>
</plugin>
</output>
<output id='mail2'>
<plugin name='mail'>
<adress>truc@toupin.fr</adress>
<adress>bidule@toupin.fr</adress>
<text>la temperature du processeur a depasse %d °C</text>
</plugin>
</output>
<output id='stop'>
<plugin name='stop'/>
</output>
</plugins>
<rules>
<threshold sign='plus' limit='50'>
<input plugin='p1' />
<action plugin='mail1'/>
</threshold>
<threshold sign='plus' limit='60'>
<input plugin='p1' />
<action plugin='mail2'/>
</threshold>
<threshold sign='plus' limit='100'>
<input plugin='p1' />
<action plugin='stop'/>
</threshold>
<interval type='in' min='20' max='50'>
<action plugin='stop'/>
</interval>
</rules>