Schaub RPA 1

Embed Size (px)

Citation preview

  • HES-SO // MASTER

    L

    Projet dapprofondissement, orientation Technologies de linformation et de la communication (TIC)

    PLUGIN POUR SHINKEN

    rdig par

    LIONEL SCHAUB

    Sous la direction de

    Prof. Grald Litzistorf

    de la MRU TIC de hepia

    8 Juin 2012

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 2 / 57 ~ HEPIA

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 3 / 57 ~ HEPIA

    Printemps 2012

    Projet d'Approfondissement

    Rsum: Plugin pour Shinken

    Le but de ce travail est, dans un premier

    temps, d'effectuer une tude des outils de

    supervision de systmes informatiques et

    plus particulirement de l'outil Shinken.

    Puis dans un second temps, de dvelopper

    un plugin pour Shinken.

    Ce travail s'est droul sur quatorze

    semaines et a t ralis en quatre tapes:

    Choisir une distribution Linux, installer Shinken et dfinir un scnario simple.

    Mettre en pratique ce scnario et effectuer un rapport technique sur l'architecture et le fonctionnement de Shinken.

    Effectuer un tat de l'art des solutions de monitoring.

    Dvelopper un plugin pour Shinken.

    L'analyse des outils de supervision commence par une recherche des besoins en mesure de

    disponibilit.

    L'tude de Shinken comprend une analyse des processus et des connexions rseau utilises

    par les diffrents daemons. Cette tude comprend galement une analyse des possibilits

    de configuration de Shinken.

    Durant les premires semaines, un scnario simple a t conu dans le but de tester

    l'architecture et le bon fonctionnement de Shinken. Une attention particulire a t apporte

    l'analyse des diffrents dlais prsents dans l'ordonnancement et l'excution des tests.

    Le plugin dvelopp doit tre capable de dtecter si un site web a t victime d'un web

    defacing. Ce plugin doit, par consquent, proposer une mthode efficace de comparaison de

    pages web. Il doit galement tre capable de dtecter une modification malveillante qui

    modifie radicalement l'apparence de la page web tout en modifiant trs peu le code source.

    tudiant: Schaub Lionel

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 4 / 57 ~ HEPIA

    Table des matires

    1. Avant-Propos ................................................................................................................................................... 7

    1.1. Rgles typographiques .......................................................................................................................... 7

    1.2. Lexique................................................................................................................................................... 7

    1.3. Remerciements ...................................................................................................................................... 7

    2. Prsentation .................................................................................................................................................... 8

    3. Cahier des charges .......................................................................................................................................... 8

    4. Besoins oprationnels de mesure de disponibilit ......................................................................................... 8

    4.1. Affichages personnaliss ....................................................................................................................... 8

    4.2. Ordonnancement des tests ................................................................................................................... 9

    4.3. Seuils ...................................................................................................................................................... 9

    4.4. Facteur business .................................................................................................................................... 9

    4.5. Notifications .......................................................................................................................................... 9

    4.6. Affichage en temps rel ....................................................................................................................... 10

    4.7. Dmarche proactive ............................................................................................................................ 10

    4.8. SLA Service Level Agreement ............................................................................................................ 10

    4.9. Besoins annexes .................................................................................................................................. 10

    5. tat de l'art .................................................................................................................................................... 11

    5.1. Solutions de supervision ...................................................................................................................... 11

    5.1.1. Nagios .............................................................................................................................................. 11

    5.1.2. Shinken ............................................................................................................................................ 12

    5.1.3. Centreon .......................................................................................................................................... 13

    5.1.4. MRTG ............................................................................................................................................... 13

    5.1.5. Cacti ................................................................................................................................................. 14

    5.1.6. Zabbix .............................................................................................................................................. 14

    5.1.7. Icinga ............................................................................................................................................... 15

    5.1.8. EyesOfNetwork................................................................................................................................ 15

    5.1.9. BoardVisor ....................................................................................................................................... 16

    5.1.10. NetCrunch ................................................................................................................................... 17

    5.1.11. Traverse ...................................................................................................................................... 17

    5.1.12. Tivoli Monitoring ......................................................................................................................... 18

    5.1.13. OpenView ................................................................................................................................... 18

    5.2. Comparatif ........................................................................................................................................... 19

    5.3. Comparaison de Nagios et de Shinken ................................................................................................ 19

    6. Scnarios de test ........................................................................................................................................... 21

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 5 / 57 ~ HEPIA

    6.1. Test ICMP (Ping) d'une machine .......................................................................................................... 21

    6.1.1. Notions temporelles ........................................................................................................................ 22

    7. Choix de larchitecture matrielle et du systme d'exploitation .................................................................. 24

    8. Architecture de Shinken ................................................................................................................................ 25

    8.1. Daemons (Services) ............................................................................................................................. 25

    8.1.1. Arbiter ............................................................................................................................................. 25

    8.1.2. Scheduler ......................................................................................................................................... 25

    8.1.3. Poller ............................................................................................................................................... 25

    8.1.4. Broker .............................................................................................................................................. 26

    8.1.5. Reactionner ..................................................................................................................................... 26

    8.1.6. Receiver ........................................................................................................................................... 26

    8.2. Modules ............................................................................................................................................... 26

    8.3. Plugins et agents .................................................................................................................................. 27

    8.3.1. Langages de programmation ........................................................................................................... 27

    8.3.2. Spcifications .................................................................................................................................. 27

    8.3.3. Agents.............................................................................................................................................. 27

    9. Documentation de Shinken ........................................................................................................................... 27

    10. Analyse du fonctionnement de Shinken .................................................................................................. 28

    10.1. Processus ouverts ................................................................................................................................ 28

    10.2. Ports ouverts ....................................................................................................................................... 29

    10.3. Communications rseau ...................................................................................................................... 30

    11. Fichiers de configuration.......................................................................................................................... 31

    11.1. Spcifiques Shinken .......................................................................................................................... 31

    11.2. Semblables Nagios ............................................................................................................................ 31

    11.3. Vrification des fichiers de configuration ............................................................................................ 33

    12. Mise en pratique du scnario .................................................................................................................. 33

    12.1. Ajout d'un contact ............................................................................................................................... 33

    12.2. Ajout d'un groupe de contact .............................................................................................................. 33

    12.3. Ajout d'une machine (host) ................................................................................................................. 34

    12.4. Recherche et configuration d'une commande .................................................................................... 34

    12.5. Ajout d'un service une machine ....................................................................................................... 34

    12.6. Ajout d'un groupe de machines .......................................................................................................... 35

    12.7. Redmarrage de Shinken ..................................................................................................................... 35

    13. Dveloppement des Plugins ..................................................................................................................... 36

    13.1. Vrification de l'espace disque ............................................................................................................ 36

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 6 / 57 ~ HEPIA

    13.1.1. Mise en application ..................................................................................................................... 36

    13.1.2. Tests effectus ............................................................................................................................ 38

    13.2. Web Defacing ...................................................................................................................................... 39

    13.2.1. Dfinition .................................................................................................................................... 39

    13.2.2. Exemple ...................................................................................................................................... 39

    13.2.3. Choix du plugin ........................................................................................................................... 40

    13.2.4. Choix du langage de programmation .......................................................................................... 40

    13.2.5. Comparaison de deux pages web ............................................................................................... 40

    13.2.6. Structure du plugin ..................................................................................................................... 43

    13.2.7. Configuration du plugin dans Shinken ........................................................................................ 44

    13.2.8. Tests effectus ............................................................................................................................ 45

    13.2.9. Amliorations possibles .............................................................................................................. 45

    14. Difficults rencontres ............................................................................................................................. 46

    14.1. Proprits de configuration non documentes ................................................................................... 46

    14.2. Plugins non inclus par dfaut .............................................................................................................. 46

    14.3. Comprhension de la logique et du fonctionnement des fichiers de configuration ........................... 46

    14.4. Recherche d'informations dans les sources ........................................................................................ 46

    14.5. Problme d'ordonnancement des tests des htes .............................................................................. 46

    14.6. Utilisation de check_by_ssh ................................................................................................................ 46

    14.7. Comparaison de deux listes en Python................................................................................................ 47

    15. Rpartition du temps ............................................................................................................................... 47

    16. Conclusion ................................................................................................................................................ 48

    17. Liens utiles & rfrences .......................................................................................................................... 49

    A. Annexes ......................................................................................................................................................... 50

    A.1. Installation de CentOS 6.2 ................................................................................................................... 50

    A.2. Configuration rseau (sur CentOS) ...................................................................................................... 50

    A.3. Installation de Shinken 1.0 .................................................................................................................. 51

    A.4. Installer des plugins ............................................................................................................................. 51

    A.5. Installation et configuration du systme d'envoi d'emails .................................................................. 52

    A.6. Installer un serveur SSH sur Ubuntu .................................................................................................... 52

    A.7. Gnrer une paire de clefs pour SSH ................................................................................................... 53

    A.8. Plugin check_ordonnanceur ................................................................................................................ 53

    A.9. Installer Beautiful Soup ....................................................................................................................... 55

    B. Tables des illustrations .................................................................................................................................. 56

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 7 / 57 ~ HEPIA

    1. Avant-Propos

    1.1. Rgles typographiques

    Ce document a t rdig avec la police d'criture Calibri 10pt, en suivant les rgles typographiques suivantes:

    Les liens vers des pages web sont en bleu soulign (http://example.com).

    Les liens vers des emplacements dans ce document sont souligns (Rgles typographiques).

    Les lgendes sont en police Calibri 9pt gras et de couleur bordeaux (Lgende).

    Les notes de bas de page sont en police Calibri 10pt.

    Certains mots importants sont en gras (important).

    Le contenu des fichiers texte est en police Courier New 9pt sur fond gris clair (Fichier texte).

    Les commandes sont en police Courier New 10pt (Commande).

    Les chemins pointant vers de fichiers ou des dossiers sont en italique (/tmp/mon-fichier).

    Les couleurs des captures d'cran de la console ont t inverss pour obtenir du noir sur blanc et ainsi

    amliorer la lisibilit et viter un gaspillage inutile d'encre/tonner.

    1.2. Lexique

    Ce lexique dfinit certains termes utiliss dans ce document:

    Supervision: En informatique la supervision est la surveillance du bon fonctionnement dun systme,

    d'un service ou dune activit.

    Outil de supervision: Un outil de supervision est un programme permettant d'accomplir une ou

    plusieurs tches utiles dans le cadre d'une supervision informatique.

    Solution de supervision: Une solution de supervision regroupe un ou plusieurs outils de supervision

    dans le but de former un ensemble rpondant aux attentes en matire de supervision.

    Machine: Dans ce document, le terme machine correspond tout priphrique informatique

    connect au rseau (routeurs, serveurs, ordinateurs de bureau, machines virtuelles, ).

    Test: Dans le contexte de Shinken ou de Nagios, un test correspond l'excution d'un plugin.

    1.3. Remerciements

    Je tiens remercier M. Grald Litzistorf pour m'avoir suivi dans ce travail. Je tiens tout particulirement le

    remercier pour l'aide qu'il m'a apport dans la rdaction de ce document.

    Je remercie aussi M. Sbastien Pasche pour avoir donn l'ide d'effectuer ce PA (Projet d'Approfondissement)

    sur Shinken.

    Je remercie galement M. Jean Gabes (crateur de Shinken) pour avoir pris le temps de rpondre mes

    questions concernant les sources de Shinken.

    Je tiens aussi remercier toutes les personnes qui ont particip la relecture de ce document.

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 8 / 57 ~ HEPIA

    2. Prsentation

    Le but de ce travail est, dans un premier temps, d'installer et d'tudier le systme de monitoring open source

    Shinken 1 puis de le comparer Nagios

    2 et aux autres systmes de monitoring.

    La seconde partie consiste dvelopper un plugin pour Shinken utilisant peu de ressources et pouvant profiter

    de l'volutivit de l'architecture de Shinken.

    L'nonc est galement disponible sur le site web du laboratoire de transmission de donnes l'adresse

    suivante : http://www.tdeig.ch/shinken/Plugin_pour_Shinken.pdf

    3. Cahier des charges

    Le cahier des charges effectif (ci-dessous) diffre du cahier des charges original prsent dans l'nonc. Ces

    changements rsultent d'adaptations effectues au dbut du projet avec mon professeur responsable.

    Le cahier des charges effectif est le suivant:

    Choisir une distribution Linux, installer Shinken (avec une configuration minimale) et dfinir un

    scnario simple.

    Mettre en pratique ce scnario et effectuer un rapport technique sur l'architecture et le

    fonctionnement de Shinken.

    Effectuer un tat de l'art des solutions de monitoring.

    Dvelopper un plugin pour Shinken.

    Certaines parties importantes de Shinken telles que la haute disponibilit et la rpartition de charge ne sont

    pas traites dans cette tude.

    4. Besoins oprationnels de mesure de disponibilit

    Les besoins oprationnels dans le domaine de la mesure de disponibilit varient beaucoup en fonction du corps

    de mtier. En effet, un administrateur des systmes IT verra le taux de disponibilit comme une qualit de

    service, tandis que le directeur financier verra le taux d'indisponibilit comme une perte de gain.

    4.1. Affichages personnaliss

    Il est courant de dire que l'administrateur systme veut voir uniquement les machines qui ont un problme,

    tandis que le directeur veut voir que toutes les machines fonctionnent. On remarque que la manire dont les

    produits prsentent l'information doit tre dpendante du type d'utilisateur.

    1 Site web officiel de Shinken : http://www.shinken-monitoring.org/

    2 Site web officiel de Nagios : http://www.nagios.org/

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 9 / 57 ~ HEPIA

    4.2. Ordonnancement des tests

    Un autre aspect des besoins oprationnels rside dans la configuration de l'ordonnancement des tests.

    Le premier paramtre de configuration des tests qui vient l'esprit est l'intervalle entre deux vrifications.

    Un autre paramtre important est le nombre de tests conscutifs retournant une erreur effectuer avant de

    considrer la machine comme tant dans un tat critique. On peut prendre l'exemple simple d'une machine qui

    ne rpond pas une requte ICMP Request. Faut-il immdiatement la considrer comme prsentant un

    problme ou effectuer un second test de vrification ? La quasi-totalit des solutions de supervision sur le

    march permettent de configurer ces paramtres.

    Un autre paramtre important est la possibilit de dfinir des plages horaires o la machine peut subir un

    incident sans tre considre comme ayant un problme. Ceci permet, par exemple, d'viter de rveiller trois

    heures du matin le technicien de piquet pour aller redmarrer un service qui est utilis uniquement la journe

    en interne.

    Il est galement important de pouvoir dfinir une priode de maintenance. Durant cette priode la machine ne

    sera pas considre comme ayant un problme.

    4.3. Seuils

    Il peut tre intressant de dfinir des seuils. Shinken utilise (comme Nagios) le code de retour des plugins pour

    dterminer le statut d'une machine ou d'un service.

    Il y a quatre codes possibles :

    0: Ok

    1: Warning

    2: Critical

    3: Unknown.

    On peut, par exemple, configurer le plugin check_ping pour effectuer trois requtes ping la suite et si le

    temps de rponse est suprieur 3 secondes ou si un ping est rest sans rponse il retourne Warning. En

    revanche, si plus de 1 ping est rest sans rponse ou si le temps d'attente dpasse 5 secondes check_ping

    retournera Critical. La ligne de commande pour le scnario ci-dessus est la suivante:

    check_ping -H $HOSTADDRESS$ -w 1,50 c 2,70% -p 3.

    Le chapitre 6.1.1. fournit plus de dtails sur les seuils et les notions temporelles. Le chapitre 12. fournit plus

    d'informations sur la configuration de check_ping.

    4.4. Facteur business

    Un nouveau facteur commence s'imposer dans le monde de la supervision. Il s'agit de l'importance (appele

    parfois criticit) d'une machine pour le business. Prenons l'exemple d'une entreprise de vente en ligne o l'un

    de leurs quatre serveurs DNS cesse de fonctionner. Cet incident n'a pas d'effet sur le business de l'entreprise.

    Si, par contre, leur unique serveur web ne fonctionne plus, c'est presque toute l'activit commerciale qui

    s'arrte. De cet indicent peut rsulter une perte financire non ngligeable ainsi qu'une insatisfaction des

    clients.

    4.5. Notifications

    Il existe galement un besoin d'tre notifi. Lorsqu'un service ne fonctionne plus, il n'est pas ncessaire de

    prvenir toute l'quipe IT, seules les personnes concernes doivent tre averties par email ou par SMS. Le

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 10 / 57 ~ HEPIA

    moment de l'envoi de la notification est galement important. On peut imaginer qu'un technicien doit tre

    inform le plus rapidement possible, tandis que le responsable IT aimerai peut tre recevoir la fin de la

    journe un rapport journalier des diffrents incidents qui se sont produits pendant la journe.

    Il est aussi important de grer les notifications en fonction de la dure du problme. Si un technicien reoit une

    alerte importante et qu'une heure plus tard le problme est toujours prsent, il est intressant de pouvoir

    envoyer l'alerte son suprieur ou un technicien de niveau suprieur.

    4.6. Affichage en temps rel

    Un technicien charg de la surveillance d'un rseau IT aura besoin d'un affichage en temps rel de l'tat du

    rseau pour lui permettre de visualiser certaines informations telle que l'volution de la charge des serveurs ou

    des liens formant le rseau IP.

    4.7. Dmarche proactive

    L'historique est un outil souvent ncessaire pour trouver la cause d'un incident ou tout simplement pour faire

    des statistiques et prvoir les investissements futurs pour le maintien de la stabilit du rseau. On peut donc

    faire du Risk Management et de la statistique pour dterminer la probabilit qu'un problme survienne,

    l'impact que ce problme peut avoir sur l'infrastructure IT et sur le business.

    4.8. SLA Service Level Agreement

    L'historique est galement ncessaire pour prouver et mesurer le taux de disponibilit d'un serveur. Dans des

    contrats de SLA un taux de disponibilit infrieur un taux souvent trs lev (par exemple 99.999%) se traduit

    par une compensation financire au bnfice du client. L'historique permet, dans ce cas, d'viter qu'un client

    tente d'abuser le prestataire de service en lui faisant croire que son serveur tait indisponible alors que ce

    n'tait pas le cas. L'historique permet galement de calculer correctement la part financire qui doit tre

    redistribue au client en cas d'indisponibilit.

    4.9. Besoins annexes

    La mesure de disponibilit est une activit importante dans la gestion d'un parc informatique, nanmoins elle

    ne peut pas tre utilise seule. D'autres outils doivent tre utiliss en association un systme de mesure de

    disponibilit. Voici une liste non exhaustive de systmes annexes:

    Systme de gestion de base de donnes (SGBD) pour la sauvegarde des donnes de supervision

    (incident, SLA, ).

    Systme d'inventaire du matriel et/ou du logiciel.

    Systme de suivi de problmes3.

    Systme de gnration de rapports.

    Systme de mesure de charge4 et de performances.

    3 Wikipedia : http://fr.wikipedia.org/wiki/Systme_de_suivi_de_problmes

    4 Des dtails sur la mesure de charge sont disponibles dans mon travail de Bachelor :

    http://www.tdeig.ch/kvm/schaub_M.pdf

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 11 / 57 ~ HEPIA

    5. tat de l'art

    5.1. Solutions de supervision

    La supervision est un sujet qui est devenu une source de proccupation lorsque les entreprises ont commenc

    avoir plusieurs serveurs avec chacun plusieurs services.

    Les solutions de supervision sont apparues suite un besoin d'automatiser les vrifications du bon

    fonctionnement des diffrents services informatiques (serveur web, connexion la base de donnes, etc.).

    La plupart des logiciels de supervision open source que l'on trouve actuellement sont bass sur le trs clbre

    Nagios. Comme le cur de Nagios est principalement maintenu par une seule personne (Ethan Galstad), les

    propositions de modification de code sont rarement traites. C'est une des raisons au nombre important de

    logiciels bass sur Nagios.

    Cet tat de l'art prsente treize produits dont huit open sources et cinq propritaires.

    Pour la majorit des outils gratuits prsents ci-dessous, il existe une version avec un abonnement de support

    et/ou de services.

    5.1.1. Nagios

    Nagios est une application permettant de surveiller l'tat des htes d'un rseau et des diffrents services

    prsents sur ces derniers. Il est cod

    en C sous licence GPL et est

    disponible sur les systmes Linux et

    *nix.

    Nagios est aujourd'hui le systme le

    plus utilis en entreprise. Malgr sa

    grande popularit, beaucoup

    d'utilisateurs n'en sont pas

    pleinement satisfaits. Certains

    dveloppeurs ont tent de proposer

    des modifications du code source

    Ethan Galstad. Ce dernier tant peu

    ractif et acceptant rarement les

    propositions d'amliorations, des

    dveloppeurs ont commenc crer des forks5 de Nagios. C'est de l que sont ns la plupart des nombreux

    fork de Nagios.

    Nagios est divis en trois parties :

    Moteur : Ordonnance les tches de supervision (test du fonctionnement du serveur web, etc.).

    Interface web : Affiche l'tat du rseau et les anomalies.

    Les plugins : Chaque plugin est un logiciel indpendant charg de faire une vrification puis de

    transmettre le rsultat Nagios.

    Site officiel : http://www.nagios.org

    5 Fork sur Wikipdia : http://fr.wikipedia.org/wiki/Fork_(dveloppement_logiciel)

    Figure 1 - Capture d'cran de Nagios

    (source: http://www.nagios.com/products/nagioscore/screenshots)

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 12 / 57 ~ HEPIA

    5.1.2. Shinken

    Shinken est une application rcente, gratuite et dont le dveloppement est trs actif. Elle a vu le jour en 2009.

    Son code est sous licence AGPL. Shinken peut fonctionner sur toutes les plateformes supportant le logiciel

    Python.

    C'est une rimplmentation de

    Nagios en langage Python qui ajoute

    de nouvelles fonctionnalits

    orientes performance. Parmi ces

    fonctionnalits on peut noter la

    haute disponibilit et la possibilit

    d'tre distribu. Pour raliser ces

    amliorations le systme a t

    dcoup en plusieurs parties

    (appeles daemon dans le reste de

    ce document).

    Ces diffrents daemons peuvent

    tre rpartis sur plusieurs machines.

    Le passage de Nagios Shinken se fait

    de manire aise car Shinken utilise le

    mme format de fichiers de configuration que Nagios. Il est uniquement ncessaire d'adapter les fichiers de

    configuration spcifiques Shinken si l'on ne souhaite pas garder les paramtres par dfaut.

    Shinken intgre le facteur business (business impact sur la figure ci-dessus). Le dclenchement des alertes et

    les notifications sont paramtrables de manire prcise. Il dispose d'un systme de dtection de flapping6

    permettant d'viter des temptes d'alertes.

    Plus d'informations sur le projet Shinken sont disponibles cette adresse :

    http://www.shinken-monitoring.org/project/

    Site officiel : http://www.shinken-monitoring.org/

    6 Une machine est en tat de flapping lorsque son tat change constamment.

    Figure 2 - Capture d'cran de Shinken

    (source: http://www.shinken-monitoring.org/screenshots/)

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 13 / 57 ~ HEPIA

    5.1.3. Centreon

    Centreon est un logiciel de supervision driv de Nagios. Il est sous licence GPLv2.

    On peut le voir comme une interface web pour

    Nagios, plus volue que l'interface de base de

    Nagios. L'interface web contient tout ce que

    contient l'interface de base de Nagios tout en

    tant plus conviviale. Elle ajoute galement de

    nombreux graphiques gnrs l'aide de l'outil

    RRDTool.

    Il permet de gnrer des rapports sur les

    incidents. Les donnes sont stockes dans une

    base de donnes MySQL. L'interface web est

    multiutilisateur et gre des listes de contrle

    d'accs pouvant tre paramtres de manire

    trs prcise.

    Centreon permet de crer une architecture distribue

    pour rpartir la charge et/ou effectuer une rpartition sur diffrents sites gographiques.

    Bien qu'il fonctionne par dfaut avec Nagios, il est possible d'utiliser Centreon avec Shinken.

    Site officiel : http://www.centreon.com/

    5.1.4. MRTG

    MRTG (qui signifie Multi Router Traffic Grapher) est un logiciel sous licence

    GPL qui utilise le protocole SNMP pour communiquer avec les quipements

    compatibles. Il cre des graphiques avec les informations obtenues via SNMP.

    Il est compatible avec tous les systmes supportant Perl.

    L'auteur de MRTG a galement conu RRDTool. RRDTool (Round-Robin

    Database Tool) est un logiciel qui implmente les fonctionnalits de

    gnration de graphique de MRTG ainsi qu'une base de donnes cyclique.

    RRDTool est utilis dans d'autres outils de supervision telle que Cacti.

    Site officiel : http://oss.oetiker.ch/mrtg/

    Figure 3 - Capture d'cran de Centreon

    (source: http://www.centreon.com/)

    Figure 4 - Capture d'cran de

    MRTG

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 14 / 57 ~ HEPIA

    5.1.5. Cacti

    Cacti est un logiciel open source (sous licence GPL) de supervision de rseau. Il est bas sur le systme de base

    de donnes RRDTool. Son interface est principalement peuple de graphiques indiquant l'tat du rseau.

    Il gre nativement le SNMP et peut facilement tre intgr d'autres

    sources de donnes telles que Nagios ou Shinken.

    Cacti est souvent considr comme le successeur de MRTG (lui aussi

    bas sur RRDTool).

    Cacti dispose d'un poller qui se charge de tester le bon

    fonctionnement de services des intervalles prdtermins. Ce

    poller existe en deux versions, l'une code en PHP pour les petites

    architectures et une autre code en C pour les architectures plus

    grandes.

    Site officiel : http://www.cacti.net/

    5.1.6. Zabbix

    Zabbix est une solution de supervision gratuite facile mettre en place. Il est sous licence GPLv2. Une licence

    commerciale est galement disponible pour les entreprises dsirant intgrer Zabbix leur produit propritaire.

    Actuellement cette solution ne contient pas

    de mcanisme performant pour viter des

    temptes d'alertes. Zabbix contient un

    systme d'affichage en temps rel de l'tat

    des machines surveilles. Il contient

    galement de nombreux graphiques

    permettant de visualiser l'volution au cours

    du temps de l'infrastructure surveille. Il

    dispose d'un systme de gestion de SLA. Il

    fournit une gestion fine des droits d'accs

    des utilisateurs.

    L'architecture de Zabbix peut tre dcompose

    en trois parties:

    Le serveur de stockage de donnes (MySQL, PostgreSQL ou Oracle)

    L'interface web de gestion

    Le serveur de traitement

    Zabbix dispose d'un systme de rpartition de charge et de haute disponibilit. Les trois parties de Zabbix

    peuvent tre sur des machines diffrentes. Le serveur de traitement peut galement avoir des "proxy Zabbix".

    Un proxy Zabbix est une machine supplmentaire qui peut tre utilise pour traiter une partie des donnes

    lorsque la charge de la machine principale devient trop leve.

    Site officiel : http://www.zabbix.com

    Figure 5 - Capture d'cran de Cacti

    Figure 6 - Capture d'cran de Zabbix

    (source: http://www.zabbix.com/screenshots.php)

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 15 / 57 ~ HEPIA

    5.1.7. Icinga

    Icinga est un fork de Nagios. Il a t cr par des dveloppeurs qui taient actifs sur le projet Nagios et qui

    n'apprciaient pas le manque de ractivit du dveloppeur principal de Nagios ainsi que sa volont de ne pas

    rendre tous les plugins libres.

    Icinga est, comme Nagios,

    disponible uniquement sur les

    plateformes Linux et *nix. Il

    est crit en C et sous licence

    GPL. Il est rtro-compatible

    avec la configuration et les

    plugins Nagios.

    Icinga dispose d'un systme

    de gnration de rapports et

    de dtection des oscillations

    d'tat (flapping).

    Il est disponible en deux

    versions7:

    Icinga Classic

    Icinga New Web

    La version Icinga New Web dispose d'un systme de gestion de SLA.

    Site officiel : http://www.icinga.org/

    5.1.8. EyesOfNetwork

    EyesOfNetwork est un pack comprenant plusieurs logiciels lis la supervision. Il est sous licence GPLv2 et est

    distribu sous forme d'une version minimaliste et personnalise de CentOS.

    Il dispose d'une interface web unifie

    qui permet aux diffrents acteurs

    (administrateurs, techniciens, ) d'un

    systme d'information d'accder une

    version de l'interface personnalise

    leur corps de mtier.

    Il comprend notamment:

    Nagios

    Cacti

    EONWEB : Interface Web

    unifie du produit

    Get-Info: Systme de gnration

    de documents

    7 Comparaison des deux versions de Icinga avec Nagios : https://www.icinga.org/nagios/feature-comparison/

    Figure 8 - Capture d'cran de EyesOfNetwork

    Figure 7 - Capture d'cran de Icinga

    (source: https://www.icinga.org/screenshots/)

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 16 / 57 ~ HEPIA

    Toutes les informations rcoltes sont stockes dans une base de donnes MySQL ou BERKELEY.

    Dans la dernire version d'EyesOfNetwork (v3.0), Shinken (v0.6.5) a t intgr en Beta.

    Site officiel : http://www.eyesofnetwork.com/

    5.1.9. BoardVisor

    BoardVisor est une solution propritaire dite par la socit IDCWARE. BoardVisor se veut simple d'utilisation,

    par consquent il n'y a aucun fichier de configuration diter, tout se fait via une interface web.

    La solution est ralise sur mesure, seuls les

    modules ncessaires au client sont intgrs.

    Elle est livre clefs en main, l'installation est

    effectue par IDCWARE et doit tre

    totalement fonctionnelle lors de sa livraison.

    BoardVisor est divis en trois parties:

    Les Gatherers : Ce sont des sondes-

    agents qui sont charges de

    collecter les donnes.

    Le Harvester : Il traite les

    informations reues des Gatherers,

    stocke les informations dans une

    base de donnes et met jour le

    GUI grce un mcanisme push (il

    envoie l'information l'interface

    web sans qu'elle ne l'ait demande). Les Gatherers peuvent tre distribus sur plusieurs machines.

    Le GUI8 : C'est l'interface web de gestion. Il affiche de manire intuitive les informations en

    provenance du Harvester.

    BoardVisor contient une fonction de gnration de rapports. Il gre galement l'inventaire du matriel et des

    logiciels.

    Site officiel : http://www.idcware.com/la-solution/

    8 GUI - Graphical User Interface

    Figure 9 - Capture d'cran de BoardVisor

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 17 / 57 ~ HEPIA

    5.1.10. NetCrunch

    NetCrunch est un logiciel propritaire dit par la socit AdRem Software. Son prix est de 1'500 $ pour 50

    priphriques surveills.

    Il fonctionne selon l'architecture

    client-serveur. Il y a le serveur

    NetCrunch et le client (console

    d'administration) qui est un

    logiciel avec une interface

    graphique se connectant au

    serveur pour afficher les

    donnes. Un client web est

    galement disponible.

    Il fonctionne sans agent et peut

    utiliser des sources

    d'informations telles que SNMP,

    les journaux d'vnement de

    Windows et les serveurs Syslog sous

    Linux. Il contient un systme de module permettant d'tendre le systme. NetCrunch 6 contient plus de 2'000

    modules prinstalls.

    NetCrunch intgre des fonctionnalits de gestion de la disponibilit, de gestion de la performance des serveurs

    et de gnration de rapports. Il dispose galement d'un systme de dcouverte automatique de la topologie du

    rseau.

    Il peut aussi tre utilis pour faire un inventaire du matriel et des logiciels.

    Site officiel : http://www.adremsoft.fr/netcrunch/

    5.1.11. Traverse

    Traverse est une solution propritaire dite par Zyrion. Une dition

    gratuite de dmonstration est disponible. Le prix de l'dition

    standard varie avec la taille du rseau surveill et commence

    50'000 $.

    Traverse intgre des fonctionnalits de gestion de SLA, de

    performance du rseau et de gestion de parcs de machines

    virtuelles et de Clouds. Il gre les environnements virtualiss

    VMware, XenServer, KVM et Hyper-V.

    Il propose des vues reprsentant la topologie physique du rseau et

    des vues business permettant de voir en temps rel la performance

    du service informatique.

    Site officiel : http://www.zyrion.com/products/

    Figure 11 - Capture d'cran de Traverse

    (source: www.zyrion.com/products/)

    Figure 10 - Capture d'cran de NetCrunch

    (source: http://fr.wikipedia.org/wiki/NetCrunch)

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 18 / 57 ~ HEPIA

    5.1.12. Tivoli Monitoring

    Tivoli Monitoring est une solution propritaire dveloppe par la socit IBM.

    Il fait partie de la suite de logiciel Tivoli. Depuis la version 6.1 il ne repose plus sur le framework Tivoli, il utilise

    le moteur d'une solution concurrente (rachete par IBM) nomme Omegamon (dite l'origine par Candle

    Corp).

    Il est compos des lments suivants :

    Tivoli Data Warehouse (TDW) :

    Sauvegarde les donnes de supervision dans

    une base de donnes SQL.

    Tivoli Entreprise Monitoring Server (TEMS) :

    Il lance les tests sans agent et communique

    avec les agents puis il envoie les donnes

    sauvegarder au TDW.

    Tivoli Entreprise Portal Server (TEPS) :

    Permet d'accder distance au TDW grce

    une interface web.

    Tivoli Common Reporting (TCR) :

    Fournit des rapports en fonction des donnes prsentes dans le TDW.

    Tivoli Monitoring fournit des agents permettant de rcuprer des informations sur l'tat des machines. Ces

    agents sont prvus pour continuer fonctionner lorsque le rseau est interrompu ou dans le cas o le serveur

    de supervision ne fonctionne plus. Si un tel cas se produit les agents distribus sur les machines vont

    sauvegarder les informations et les transmettre au serveur de supervision ds que ce dernier est nouveau

    joignable. Tivoli Monitoring est aussi utilisable sans agent (agentless).

    Site officiel: http://www-142.ibm.com/software/products/fr/fr/tivomoni

    5.1.13. OpenView

    OpenView est un logiciel propritaire dvelopp par la socit HP. En 2007, il a t renomm HP Network

    Management Center.

    La suite HP OpenView contient une multitude de

    logiciels. Parmi ces logiciels, on trouve notamment:

    HP OpenView Network Node Manager (OV

    NNM) : Charg de surveiller le rseau et les

    services rseau l'aide du protocole SNMP.

    HP Operations Manager (OM) : Surveille les

    systmes qui utilisent des agents. Il existe un

    agent pour les systmes Windows (OMW) et

    un agent pour les systmes Unix (OMU).

    HP OpenView Performance (OVP*) : Logiciels

    permettant de surveiller les performances de

    diffrents quipements.

    HP OpenView Storage : Permettant de grer le

    stockage des informations de supervision.

    Figure 12 - Schma de la solution Tivoli Monitoring

    (source: www.ibm.com)

    Figure 13 - Capture d'cran de HP OpenView Internet

    Services

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 19 / 57 ~ HEPIA

    HP OpenView Smart Plug-ins (SPI) : Plugins permettant de superviser une base de donnes, un

    systme VMware, un systme SAP, etc.

    HP Software Business Availability Center (BAC) : Fournit des services de gestion de SLA, de gestion

    d'utilisateurs, etc.

    Site officiel: http://www8.hp.com/us/en/software/enterprise-software.html

    5.2. Comparatif

    Nom Licence Langage Systme d'exploitation Commentaires Prix

    Shinken AGPL Python Linux, Windows, Compatible Nagios Gratuit Nagios GPL C Linux, Unix Gratuit Centreon GPLv2 PHP/Perl/C Linux, Unix Utilise Nagios, RRDTool Gratuit Cacti GPL PHP/Shell/C Linux, Unix Bas sur RRDTool Gratuit Zabbix GPLv2 PHP/C Linux, Mac, Unix Gratuit Icinga GPL PHP/C Linux Fork de Nagios Gratuit EyesOfNetwork GPLv2 Multi OS ddi (CentOS) Package contenant Nagios Gratuit MRTG GPL Perl Linux, Windows, Gratuit NetCrunch Propritaire N/A Windows > 1'500 $ BoardVisor Propritaire N/A OS ddi Payant Traverse Propritaire N/A Linux, Windows > 50'000 $ Tivoli Propritaire N/A Linux, Windows > 750 $ Open View Propritaire N/A Windows, HP-UX Payant

    Tableau 1 - Comparaison des solutions de supervision

    5.3. Comparaison de Nagios et de Shinken

    Shinken tant une rimplmentation de Nagios, il est intressant de comparer leur tat de dveloppement.

    Est-ce que Shinken a rimplment toutes les fonctionnalits de Nagios ? Quelles sont les fonctionnalits

    phares de Shinken ?

    Parmi les fonctionnalits phares de Shinken on peut relever:

    Scalabilit et haute disponibilit.

    Utilisable sur toutes les plateformes supportes par Python.

    Notion d'importance pour le business.

    Possibilit de mettre un Poller dans la DMZ et un Poller dans le LAN pour viter une configuration

    complexe et risque du pare-feu.

    Nagios possde nanmoins certaines fonctionnalits qui ne sont pas disponibles dans Shinken:

    Pearl embarqu.

    Modules binaires.

    Replanification automatique des tests.

    Il est intressant de comparer l'volution du nombre de lignes de code au cours du temps.

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 20 / 57 ~ HEPIA

    Figure 14 - Shinken - Nombre de lignes de code

    Figure 15 - Nagios - Nombre de lignes de code

    On remarque sur les schmas ci-dessus (fournis par www.ohloh.net) que Shinken est nettement plus jeune que

    Nagios. On remarque aussi les mthodes de dveloppement des deux logiciels. En effet Nagios se dveloppe

    peu et s'est dvelopp par -coups. Shinken, quant lui, se dveloppe rapidement (200'000 lignes de codes en

    3 ans). Son code est parfois refactor et des lments inutiles sont supprims. La baisse brutale du nombre de

    lignes de code en septembre 2010 correspond la suppression des fichiers XML contenant l'aide au profit du

    Wiki (http://www.shinken-monitoring.org/wiki).

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 21 / 57 ~ HEPIA

    6. Scnarios de test

    6.1. Test ICMP (Ping) d'une machine

    Ce scnario trs simple consiste tester le fonctionnement du systme en configurant un test ICMP (ping) sur

    un hte du rseau. Ce test doit s'effectuer priodiquement un intervalle d'une minute.

    Pour mettre en pratique ce scnario il faut disposer d'un ordinateur (ou d'une machine virtuelle) allum. En

    dbranchant le cble rseau, on peut tester le passage de l'tat UP l'tat DOWN. A ce moment le serveur

    Shinken doit envoyer un email de notification.

    Quelques instants plus tard on rebranche le cble et la machine doit repasser l'tat UP puis envoyer un

    second email de notification.

    Les changements d'tats peuvent galement tre observs sur l'interface web de Shinken (WeUI).

    Grce ce scnario, on teste le bon fonctionnement de toute l'architecture de Shinken.

    La configuration et le test de ce scnario sont dtaills dans le chapitre Mise en pratique du scnario.

    Figure 16 - WebUI - MachineA - Ping Ok

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 22 / 57 ~ HEPIA

    6.1.1. Notions temporelles

    Lorsque l'on utilise des outils de monitoring il est important de garder l'esprit les notions temporelles du

    systme. En effet, si l'on configure un test ICMP pour qu'il s'effectue toutes les minutes, il faut garder l'esprit

    qu'il peut se produire plus d'une minute avant qu'une machine indisponible soit dtecte comme telle.

    Si on prend le pire des cas, il faudra attendre une minute plus le temps d'attente maximal (5 sec.) pour que

    Shinken dtecte le problme. Dans le meilleur des cas il faut le temps d'attente maximal (5 sec.) pour qu'un

    problme soit dtect par Shinken. Nous avons donc un temps de dtection qui se situe entre 5 secondes et 65

    secondes.

    A cela vient s'ajouter le temps d'envoi d'un email et l'intervalle de vrification des emails configure sur le

    client de messagerie du technicien. Cet intervalle ne s'applique pas si la messagerie fonctionne en mode Push.

    Le diagramme en flche ci-dessous prsente les dlais, le meilleur des cas et le pire des cas pour le scnario

    dcrit ci-dessus. Pour simplifier la figure, elle ne montre pas l'intervalle de vrification des emails. On considre

    donc tre dans le cas d'une messagerie configure en mode Push.

    Figure 17 - Diagramme de squence d'un test ICMP simple

    Dans le diagramme ci-dessus on remarque que le dcompte de temps commence ds que le test est effectu.

    Pour dterminer si Shinken commenait le dcompte de temps aprs avoir lanc le test ou aprs que le test se

    soit termin, un plugin a t dvelopp. Voir l'annexe Plugin check_ordonnanceur.

    Il faut aussi garder l'esprit que si la machine ou le rseau subit des mini coupures d'une ou deux secondes il y

    a peu de chances que ces coupures soient dtectes. Le diagramme ci-dessous dcrit ce problme.

    Machine A Shinken Technicien

    ICMP Request

    ICMP Reply

    ICMP Request

    Envoi d'un email (critical)

    Temps de rponse (< 100ms)

    Dlai dpass (5sec)

    Intervalle de test (1min)

    Intervalle de test (1min)

    ICMP Request

    Temps de rponse (< 100 ms)

    Envoi d'un email (ok)

    Pire des cas

    (~1min 5 sec)

    Meilleur des cas

    (5 sec)

    Machine A Down

    Machine A Down

    Machine A Up

    ICMP Reply

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 23 / 57 ~ HEPIA

    Figure 18 - Diagramme de squence d'un test ICMP simple avec microcoupures

    Machine A Shinken Technicien

    ICMP Request

    ICMP Reply

    ICMP Request

    Temps de rponse (< 100ms)

    Intervalle de test (1min)

    Intervalle de test (1min)

    ICMP Request

    Temps de rponse (< 100 ms)

    Machine A Up

    Machine A Down

    Machine A Up

    Machine A Down

    Machine A Up

    Machine A Down

    Machine A Up

    Machine A Down

    Machine A Up

    Machine A Down

    Machine A Up

    Machine A Down

    ICMP Reply Temps de rponse (< 100ms)

    MicroCoupure (~1sec)

    MicroCoupure (~1sec)

    MicroCoupure (~1sec)

    MicroCoupure (~1sec)

    MicroCoupure (~1sec)

    ICMP Reply

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 24 / 57 ~ HEPIA

    7. Choix de larchitecture matrielle et du systme d'exploitation

    Pour des raisons de simplicit j'ai choisi d'installer Shinken et une machine Linux (Ubuntu) dans des machines

    virtuelles.

    Le logiciel de virtualisation utilis est VMware Player 3.1.3.

    La version de Shinken utilise est la 1.0, sortie une semaine aprs le dbut du projet.

    La machine Linux est un Ubuntu 10.04.3 LTS 64-bits.

    Shinken est install sur une distribution CentOS 6.2 car c'est la distribution la plus utilise en entreprise. Elle est

    galement utilise par les dveloppeurs de Shinken sur les machines de test et les machines en production.

    Une machine virtuelle utilisable sous VMware Player avec Shinken 1.0 prinstall sous CentOS 6.2 est fournie

    en annexe. Les procdures pour installer et configurer CentOS 6.2 et Shinken 1.0 sont disponibles en annexes.

    Figure 19 - Schma bloc de l'architecture

    VMware Player

    CentOS (Shinken)

    192.168.230.15

    Ubuntu

    192.168.230.30 Rseau virtuel NAT 192.168.230.0/24

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 25 / 57 ~ HEPIA

    8. Architecture de Shinken

    Shinken est un outil de supervision dcoup en plusieurs parties. Le cur du systme correspond aux six

    daemons. Il y a galement les modules qui permettent d'ajouter des fonctionnalits au cur de Shinken et des

    plugins qui permettent d'effectuer les tests.

    8.1. Daemons (Services)

    Chaque daemon (except l'Arbiter) peut avoir plusieurs instances rparties sur plusieurs machines pour

    permettre Shinken de supporter une plus grande charge et galement fournir de la haute disponibilit.

    8.1.1. Arbiter

    L'Arbiter est le seul daemon qui doit tre unique. Il est charg de grer tous les autres. Il lit les fichiers de

    configuration puis envoie les parties utiles aux autres daemons. Il est galement charg de s'occuper de la

    haute disponibilit, si un deamon devient indisponible, il doit transfrer la configuration de ce dernier un

    daemon disponible. L'Arbiter est excut avec l'utilisateur root.

    Il peut tre tendu grce des modules. Il existe, par exemple, un module pour recevoir les rsultats de tests

    passifs NSCA.

    8.1.2. Scheduler

    Le Scheduler doit ordonnancer les tests. Il dtermine quel moment les tests doivent s'effectuer mais il ne

    lance pas le check (rle du Poller). Il rcupre ensuite les rsultats des tests (check) et les transmets au

    Reactionner et au Broker si ncessaire.

    Il peut tre tendu grce des modules. Il y a peu d'intrt crer des modules pour le Scheduler, les seuls

    modules prsents sont des modules pour implmenter la rtention de statut. Nanmoins la rtention de statut

    est une fonctionnalit qui n'est pas utile avec l'architecture de Shinken.

    8.1.3. Poller

    Le Poller doit lancer les plugins tels que check_ping en fonction des instructions du Scheduler. Lorsque le plugin

    se termine il renvoie le rsultat au Scheduler.

    Il est possible de configurer un Poller dans la DMZ et un Poller dans le LAN pour viter une configuration

    complique et dangereuse du firewall.

    En effet, si on installe une machine Shinken dans la DMZ et que l'on souhaite superviser des machines dans le

    LAN, il faudra crer dans le pare-feu une rgle pour chaque test que l'on souhaite effectuer dans le LAN.

    Si l'on place un Poller sur une machine dans le LAN, il est possible de lui faire excuter les tests des machines

    qui sont dans le LAN. Avec cette configuration il faut seulement ouvrir les ports ncessaires la communication

    entre la machine Poller du LAN et la machine Shinken de la DMZ.

    Cette configuration s'effectue grce au paramtre poller_tags9.

    Il peut tre tendu grce des modules.

    9 Page du wiki officiel expliquant comment effectuer cette configuration :

    http://www.shinken-monitoring.org/wiki/setup_dmz_monitoring

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 26 / 57 ~ HEPIA

    8.1.4. Broker

    Le rle du Broker est d'exporter les donnes en provenance du Scheduler. Il a besoin de modules pour exporter

    les donnes dans diffrents emplacements.

    Il y a, par exemple, un module pour exporter les donnes dans une base de donnes MySQL.

    L'interface web de Shinken correspond au module WebUI du Broker.

    8.1.5. Reactionner

    Le Reactionner se charge des notifications selon les instructions du Scheduler. Il envoie, par exemple, les emails

    d'alerte.

    Il peut tre tendu grce des modules. Il existe un module nomm AndroidSMS qui permet d'envoyer des

    SMS de notification lorsqu'il s'excute sur un tlphone mobile sous Android.

    8.1.6. Receiver

    Le Receiver est le seul daemon qui est facultatif. Son rle est de rceptionner les tests passifs et de les stocker

    temporairement dans un tampon. C'est l'Arbiter qui se charge de rcuprer les rsultats. Il a besoin de modules

    pour communiquer avec les diffrents protocoles. Par dfaut, il y a un module Nagios NSCA qui gre le systme

    de plugin passif NSCA de Nagios. Un test passif est un test qui n'est pas ordonnanc par Shinken. Dans le cas

    d'un systme NSCA les donnes sont envoyes par l'agent send_nsca.

    8.2. Modules

    Les modules sont des extensions des daemons. Certains daemons tels que le Broker et le Receiver fonctionnent

    uniquement avec des modules.

    Les modules sont prsents dans le dossier /usr/local/shinken/shinken/modules/.

    Ces derniers hrite de la classe BaseModule.

    Figure 20 - Module AndroidSMS - hritage BaseModule

    Chaque module doit galement dfinir des proprits.

    Figure 21 - Modules AndroidSMS - dfinition des proprits

    Dans les proprits ci-dessus on remarque le daemon auquel il est associ et le nom du module. Ce module se

    nomme donc android_sms et est un module pour le Reactionner.

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 27 / 57 ~ HEPIA

    8.3. Plugins et agents

    Les plugins sont des logiciels excutables. Ils sont chargs d'effectuer un test sur une machine et renvoyer un

    rsultat. Elles sont excutes par le Poller. Comme Shinken utilise les mmes spcifications que Nagios pour les

    plugins, les plugins Nagios sont compatibles avec Shinken et inversement.

    Les plugins sont prsentes dans le rpertoire /usr/local/shinken/etc/libexec/.

    8.3.1. Langages de programmation

    Ces commandes peuvent tre programmes dans n'importe quel langage de programmation. Dans le cas d'un

    langage compil il faut que l'excutable soit compatible pour la plateforme sur laquelle il va tre excut. Dans

    le cas d'un langage interprt il faut que l'interprteur soit install sur la machine et que le Shebang10

    soit

    prsent au dbut du script. Dans le cas de Shinken il est pratique d'utiliser le langage (interprt) Python car

    Shinken tant cod en Python il est certain que Python est prsent sur le systme. Actuellement, la plupart des

    plugins de Shinken viennent de Nagios et sont cods en C.

    8.3.2. Spcifications

    La seule contrainte est l'obligation pour ces commandes de dfinir leur code de retour par une valeur

    spcifique au rsultat de la commande. Les commandes, dans la plupart des cas, prennent en argument le nom

    d'hte ou l'adresse IP de la machine tester. Les codes de retour possibles sont les suivants :

    0 : Ok

    1 : Warning

    2 : Critical

    3 : Unknown

    Le statut Unknown (inconnu) est souvent utilis lorsque les arguments de la commande sont errons. Un texte

    peut galement tre crit sur la sortie standard pour fournir une information supplmentaire. Nanmoins seul

    le code de retour sera trait dans la logique de Shinken.

    Les spcifications compltes des plugins sont disponibles ici :

    http://www.shinken-monitoring.org/wiki/official/development-pluginapi

    8.3.3. Agents

    Un agent est un logiciel qui s'excute sur les machines que l'on souhaite tester. Il permet de rcuprer de

    l'information directement sur la machine puis la transmettre un plugin de Shinken lorsqu'elle en fait la

    demande. Les agents doivent tres compils pour les architectures (type de processeur et systme

    d'exploitation) des machines qui doivent tre testes. Ceci peut tre gnant dans le cas o le parc de machines

    est trs htrogne.

    9. Documentation de Shinken

    La documentation de Shinken est disponible l'adresse http://www.shinken-monitoring.org/wiki .

    Elle est, dans l'ensemble, bien faite. Il arrive cependant que certaines informations soient errones.

    Depuis la version 1.0 la documentation s'est grandement amliore.

    On peut librement effectuer des corrections en crant un compte.

    10

    Page Wikipdia concernant le Shebang: http://fr.wikipedia.org/wiki/Shebang

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 28 / 57 ~ HEPIA

    10. Analyse du fonctionnement de Shinken

    10.1. Processus ouverts

    Dans la capture ci-dessous on voit les processus Shinken ainsi que l'utilisateur sous lequel ils s'excutent. On

    voit aussi le fichier de configuration associ au deamon.

    Figure 22 - Processus Shinken et fichier de configuration associ

    Shinken est crit en Python. Comme Python est un langage interprt, tous les processus sont des processus

    Python. En observant la ligne de commande qui a t utilise pour lancer le processus, on peut voir le

    programme python qui a t lanc.

    Avec la configuration par dfaut il y a (processus) :

    2 Schedulers

    3 Pollers

    3 Reactionners

    4 Brokers

    2 Recievers

    3 Arbiters

    La raison pour laquelle il y a plusieurs processus par daemon provient des modules des diffrents daemons. Les

    processus supplmentaires sont en ralit des processus fils. Avec la configuration dfaut (minimale) il y a un

    processus pre par daemon.

    Tous les processus sont excuts sous l'utilisateur shinken except les processus de l'Arbiter qui sont excuts

    en tant que root.

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 29 / 57 ~ HEPIA

    Dans la capture ci-dessous j'ai ajout le paramtre -H qui permet d'afficher la hirarchie des processus.

    Cette hierarchie peut aussi tre obtenue en regardant les colonnes PID et PID du pre.

    Figure 23 Hirarchie des processus Shinken

    10.2. Ports ouverts

    En utilisant l'outil netstat on peut voir quel logiciel coute sur quel port.

    Figure 24 - Liste des ports en coute par Shinken

    La capture ci-dessus n'affiche pas suffisamment de dtails, on ne peut pas savoir quel daemon de Shinken est

    associ quel port. On ne sait pas non plus si les processus Python sont des processus Shinken.

    En se rfrant la liste des processus, on peut dterminer le daemon concern en comparant les PIDs.

    Daemon Port

    Broker 50000 Broker (module WebUI) 7767 Scheduler 7768 Reactionner 7769 Arbiter 7770 Poller 7771 Broker 7772 Receiver 7773

    Tableau 2 - Ports et Deamons

    J'ai effectu une recherche avec grep pour savoir dans quels fichiers et quel endroit se trouve la

    configuration de ces ports.

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 30 / 57 ~ HEPIA

    Figure 25 - Recherche des ports dans les fichiers de configuration

    Nom du fichier Ligne Port

    brokerd.ini 15 7772 pollerd.ini 15 7771 reactionnerd.ini 7 7769 receiverd.ini 7 7773 schedulerd.ini 5 7768 shinken-specific.cfg 27 7767 shinken-specific.cfg 127 50000 shinken-specific.cfg 316 7771 shinken-specific.cfg 345 7769 shinken-specific.cfg 353 7772 shinken-specific.cfg 367 7770 shinken-specific.cfg 382 7768 shinken-specific.cfg 388 7773

    Tableau 3 - Configuration des ports de communication

    10.3. Communications rseau

    Shinken utilise la bibliothque Pyro (PYthon Remote Objects)11

    pour permettre aux deamons de communiquer

    entre eux. Les connexions rseaux ne sont donc pas gres directement par Shinken.

    Pour analyser les connexions rseau entre les deamons, les commandes netstat12

    et ps13

    ont t utilises pour rcuprer des informations sur les processus de Shinken et leurs connexions tablies ou en coute. En corrlant ces donnes il a t possible de crer le graphique ci-dessous.

    Figure 26 - Schma ralis partir de l'analyse des connexions rseaux entre les daemons

    11

    Site officiel de Pyro : http://packages.python.org/Pyro4/ 12

    Man page de netstat : http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man8/netstat.8.html 13

    Man page de ps : http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man1/ps.1.html

    Arbiter Reciver

    Poller

    Scheduler

    Brocker

    Reactionner

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 31 / 57 ~ HEPIA

    11. Fichiers de configuration

    Les fichiers de configurations de Shinken se trouvent dans le rpertoire /usr/local/shinken/etc/ .

    On peut distinguer deux types de fichiers de configuration. Il y a les fichiers de configuration qui sont

    quasiment identiques ceux de Nagios et ceux qui sont spcifiques Shinken.

    11.1. Spcifiques Shinken

    Les fichiers de configuration spcifiques Shinken sont au format INI et portent l'extension du mme nom. La

    seule exception est le fichier shinken-specific.cfg qui est un fichier CFG. Ce dernier est lu par l'Arbiter et

    contient la configuration des daemons et la dfinition des modules. Il y a un fichier de configuration au format

    INI par daemon. Ces fichiers sont utiliss pour configurer les paramtres d'excution et de configuration rseau

    des deamons.

    On y trouve:

    L'utilisateur avec lequel le processus va tre lanc (shinken par dfaut).

    Le rpertoire de travail.

    Le numro de port et l'adresse IP de l'interface qu'il doit couter.

    Des paramtres de certificats pour permettre la communication dans un canal SSL.

    L'activation des logs.

    Ces paramtres correspondent aux paramtres minimaux pour que l'Arbiter puisse se connecter aux autres

    daemons et leur transmettre leur configuration dfinie dans shinken-specific.cfg.

    Figure 27 - Fichiers de configuration des daemons Shinken

    Dans le cas o Shinken est excut sous Windows, le nom de ces fichiers de configuration est suffix par "-

    windows".

    11.2. Semblables Nagios

    Les autres fichiers de configuration sont des fichiers de configuration au format CFG.

    Ces fichiers sont quasiment identiques ceux que l'on trouve dans Nagios dans le but de pouvoir effectuer une

    transition de Nagios vers Shinken (et inversement) sans devoir rcrire la configuration.

    C'est dans ces fichiers qu'est contenue la configuration des htes, des tests, des contacts, etc.

    Ces fichiers sont tous inclus dans le fichier nagios.cfg qui est lu par l'Arbiter. L'Arbiter se charge ensuite de

    rpartir la configuration vers les diffrents daemons.

    Service

    Fichier de

    configuration

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 32 / 57 ~ HEPIA

    Figure 28 - Fichiers de configuration de l'infrastructure

    Le tableau ci-dessous liste les diffrents fichiers de configuration et dcrit leur utilit. Il est nanmoins possible

    d'crire la configuration dans n'importe quel fichier tant qu'il est inclus par le fichier nagios.cfg. Il est galement

    possible de mettre toute la configuration dans le fichier nagios.cfg. La structure de ces fichiers est hrite de

    Nagios et permet de mieux rpartir la configuration et de la rendre plus claire.

    Les dfinitions de service dans les fichiers de configuration correspondent aux dfinitions des tests. Le nom

    service provient de Nagios.

    Nom du fichier Description

    nagios.cfg Ce fichier inclut tous les autres fichiers de configuration et contient quelques paramtres gnraux.

    commands.cfg Il contient la dfinition des commandes. Il fait la liaison entre les excutables du rpertoire libexec et le nom de la commande utilise dans la configuration des tests.

    timeperiods.cfg

    Ce fichier contient la dfinition des priodes temporelles telles que la semaine de travail ou encore les jours de congs. Ces priodes temporelles peuvent tre utilises pour configurer les priodes o des notifications ne doivent pas tre gnres.

    escalations.cfg

    Ce fichier est prsent pour des raisons de compatibilit avec Nagios. Cette configuration doit se faire dans le fichier shinken-specific.cfg. La configuration des escalades14 permet de dfinir des niveaux de contact et de contacter le niveau suprieur aprs n notifications ou aprs un temps t. La fonction temporelle est disponible uniquement sur Shinken.

    dependencies.cfg Ce fichier permet de dfinir des dpendances entre un hte et un service ou un autre hte. Il est prfrable de dfinir la proprit service_dependencies pour les services.

    contacts.cfg Ce fichier contient la dfinition des contacts. contactgroups.cfg Ce fichier contient la dfinition des groupes de contacts.

    templates.cfg Ce fichier contient les templates qui permettent de dfinir les paramtres par dfaut pour les contacts, les htes et les services.

    14

    Escalades temporelles dans Shinken : http://www.shinken-monitoring.org/news/escalation-based-on-time-for-sla/

    Service

    Fichier de

    configuration

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 33 / 57 ~ HEPIA

    servicesgroups.cfg Ce fichier contient la dfinition des groupes de services. hostgroups.cfg Ce fichier contient la dfinition des groupes d'htes. hosts Ce rpertoire est prvu pour contenir des fichiers CFG dfinissant les htes.

    Tableau 4 - Description des fichiers de configuuration

    11.3. Vrification des fichiers de configuration

    Shinken vrifie les fichiers de configuration lorsqu'on le redmarre. Nanmoins il affiche uniquement les

    erreurs de syntaxe.

    La vrification enregistre des donnes plus dtailles dans le fichier /tmp/shinken_checkconfig_result. Ce

    fichier donne des informations telles que les fichiers lus, les paramtres non reconnus qui sont prsents dans

    les fichiers de configuration.

    12. Mise en pratique du scnario

    Pour configurer le scnario, trois fichiers ont t modifis et un fichier a t cr. La configuration par dfaut

    des daemons n'a pas t modifie car elle correspond dj une configuration minimale.

    12.1. Ajout d'un contact

    Les contacts sont normalement ajouts dans le fichier etc/contacts.cfg. Le contact cr se nomme admin.

    Il faut configurer l'adresse email pour recevoir les emails de notifications. Le champ use permet de se baser

    sur un template qui contient les valeurs de configurations par dfaut. Pour plus de dtails voir le chapitre

    Fichiers de configuration.

    Figure 29 - Fichier de configuration des contacts

    12.2. Ajout d'un groupe de contact

    Le groupe de contacts admins a t cr avec comme seul utilisateur l'utilisateur admin cr prcdemment.

    Les groupes sont gnralement ajouts dans le fichier etc/contactgroups.cfg.

    Figure 30 - Fichier de configuration des groupes de contacts

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 34 / 57 ~ HEPIA

    12.3. Ajout d'une machine (host)

    Un rpertoire nomm etc/hosts/ est prvu pour stocker les fichiers de configuration des machines. Le fichier

    machinea.cfg a t cr avec la dfinition de la machine nomme MachineA. On remarque dans ce fichier qu'il

    hrite du template generic-host. On remarque que le groupe de contacts associ cette machine est admins.

    Figure 31 - Fichier de configuration de la MachineA

    12.4. Recherche et configuration d'une commande

    Les dfinitions des commandes se trouvent dans le fichier de configuration etc/commands.cfg. On y trouve la

    commande check_ping qui appelle le plugin check_ping avec un certain nombre d'arguments. Ces arguments

    signifient que le plugin va retourner Critical si la requte n'a pas reu de rponse aprs cinq secondes et

    Warning si la requte a obtenu une rponse aprs trois secondes et avant cinq secondes. Elle indique

    galement qu'une seule requte ICMP sera effectue.

    Figure 32 - Fichier de configuration des plugins

    12.5. Ajout d'un service une machine

    Le service a t configur dans le mme fichier que la machine. Le paramtre host_name fait la liaison entre le

    service et la machine (host). Le paramtre check_command fait la liaison entre le service et la commande

    auquel il est associ. Le paramtre normal_check_interval permet de dfinir l'intervalle entre deux tests (en

    min.) et le paramtre retry_check_interval permet de dfinir l'intervalle entre deux tests (check) lorsque le

    dernier test a retourn Critical. Et pour finir le paramtre initial_state dfinit l'tat initial (avant que le premier

    test n'ait t effectu) Unknown.

    Timeout [s] Paquets perdus [%]

    Nombre de requtes effectues

    warning critical

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 35 / 57 ~ HEPIA

    Figure 33 - Fichier de configuration du test de la MachineA

    12.6. Ajout d'un groupe de machines

    Ces derniers sont gnralement crs dans le fichier etc/hostgroups.cfg. Un groupe nomm postes-clients a t

    cr avec comme seule machine la MachineA cre prcdemment.

    Figure 34 - Fichier de configuration des groupes de machines

    12.7. Redmarrage de Shinken

    Pour que la configuration soit prise en compte il faut redmarrer Shinken :

    /etc/init.d/shinken restart

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 36 / 57 ~ HEPIA

    13. Dveloppement des Plugins

    Dans le cadre de ce projet deux plugins ont t dvelopps. Ce chapitre dcrit les diffrentes tapes du

    dveloppement de ces deux plugins. Les informations sur le systme de plugin de Shinken sont disponibles

    dans le chapitre Plugins et agents de ce document.

    13.1. Vrification de l'espace disque

    Le plugin qui devait tre dvelopp devait permettre de vrifier l'espace disque restant d'une machine Linux

    distante. Avant de commencer le dveloppement j'ai vrifi si un plugin similaire existait et j'ai trouv le plugin

    check_disk parmi les plugins provenant de Nagios.

    Ce plugin permet de vrifier l'espace disponible sur un disque dur local ou une partition locale. Comme le but

    est de vrifier l'espace disponible d'une machine distante il faut trouver un moyen d'excuter ce script

    distance. En me basant sur un travail15

    effectu prcdemment au laboratoire de transmission de donnes par

    M. Lescourt Adrien, j'ai dcouvert le plugin check_by_ssh qui permet d'excuter une commande distante grce

    SSH et qui retourne ensuite le code de retour et le message retourn par la commande distante.

    En combinant ces deux plugins il est possible de vrifier l'espace disque restant d'une machine distante. Vu que

    la fonctionnalit dsire peut tre obtenue en combinant les plugins check_disk et check_by_ssh, c'est cette

    solution qui a t mise en place plutt que de dvelopper un plugin.

    Figure 35 - Schma du fonctionnement de la vrification de l'espace disque par Shinken

    Pour commencer, le plugin check_ssh a t test localement sur la machine cible (machine distante). Une fois

    cette tape termine, un serveur SSH a t install et configur sur la machine cible puis la connexion SSH

    depuis la machine contenant Shinken a t teste. Ensuite, le plugin check_by_ssh a t test manuellement

    depuis la ligne de commande de la machine contenant Shinken. Finalement, Shinken a t configur pour

    excuter ce test sur la machine distante.

    13.1.1. Mise en application

    Tout d'abord, il faut s'assurer que la machine sur laquelle on veut excuter le test dispose d'un serveur SSH

    actif. La procdure pour installer un serveur SSH est disponible dans l'annexe Installer un serveur SSH sur

    Ubuntu.

    Sur la machine Shinken il faut se connecter sous le compte shinken : su shinken

    Sur la machine Shinken il faut gnrer les clefs l'aide de la commande ssh-keygen (accepter les

    paramtres par dfaut).

    15

    Lien vers le travail de M. Lescourt : http://www.tdeig.ch/shinken/Adrien_Lescourt_PluginNagios.pdf

    Shinken

    check_by_ssh

    Machine distante

    check_disk 1. Excution de check_disk

    2. Retourne le rsultat de l'excution

    de check_disk

    Connexion SSH

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 37 / 57 ~ HEPIA

    Une fois la paire de clefs cre il faut placer la clef publique sur le serveur SSH. Sur la machine Shinken lancer la

    commande ssh-copy-id utilisateur@adresse-ip

    Il faut maintenant approuver le serveur SSH. La mthode la plus simple est d'essayer de se connecter au

    serveur SSH grce la commande ssh utilisateur@adresse-ip

    L'empreinte de la clef du serveur SSH va s'afficher et un message demandera de la confirmer. Il faut vrifier que

    l'empreinte correspond celle du serveur SSH et, dans le cas chant, confirmer la clef.

    Il faut copier le plugin check_disk dans la machine distante. Une solution simple consiste utiliser SCP16

    (copie

    de fichier via SSH) :

    scp libexec/check_disk utilisateur@adress-ip:/usr/local/shinken/libexec/

    Se dconnecter du compte shinken : exit

    Configurer une commande dans le fichier etc/commands.cfg :

    Figure 36 - Commande check_ssh_disk

    La commande dfinie ci-dessus vrifie, via SSH, l'espace disque de la partition monte dans le rpertoire

    /media/testVolume. Si l'espace restant est infrieur 5% la commande renverra "Critical" et si l'espace restant

    est infrieur 10% et suprieur 5% la commande renverra "Warning".

    La dernire tape consiste crer un service associ la machine distante. Le service dfini dans la capture ci-

    dessous est configur pour effectuer le test toutes les 10 minutes et toutes les minutes lorsque l'tat vaut

    "Critical". Ceci permet de vrifier rapidement que l'tat est revenu Ok lorsque l'on a libr de l'espace disque.

    Figure 37 - Service check_ssh_disk

    Pour prendre en compte la nouvelle configuration il faut redmarrer Shinken :

    /etc/init.d/shinken restart

    16

    Transfrer des fichiers avec SCP : http://cc.in2p3.fr/docenligne/134/fr

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 38 / 57 ~ HEPIA

    13.1.2. Tests effectus

    Pour tester le bon fonctionnement de la configuration effectue ci-dessus, trois tests ont ts effectus.

    13.1.2.1. Test du statut Ok

    Des fichiers ont t placs sur la machine supervise de sorte ce que l'espace disque restant soit d'environ

    85%. Au prochain test, Shinken affichait bien que l'tat de la machine tait "Ok".

    Figure 38 - check_ssh_disk Ok

    13.1.2.2. Test du statut Warning

    Pour ce test un fichier a t ajout sur la machine supervise pour que le taux d'utilisation du disque soit de

    91%. Quelques minutes plus tard, Shinken affichait la machine comme tant dans l'tat "Warning".

    Figure 39 - check_ssh_disk Warning

    13.1.2.3. Test du statut Critical

    Pour tester l'tat "Critical" le disque dur de la machine supervise a t rempli 96%. Aprs que le test a t

    effectu, Shinken affichait la machine comme tant dans un tat "Critical".

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 39 / 57 ~ HEPIA

    Figure 40 - check_ssh_disk Critical

    Dans la capture ci-dessus on voit que le dernier test a t lanc il y a 8 secondes et qu'il s'est termin il y a 1

    seconde. On peut donc dterminer que le test s'est excut pendant 7 secondes. On remarque galement que

    le prochain test est planifi dans 59 secondes soit une minute aprs la fin du dernier test. Ce test valide donc

    aussi la configuration effectue avec la proprit retry_check_interval.

    13.2. Web Defacing

    13.2.1. Dfinition

    Certains hackers cherchent des failles sur des sites web et, lorsqu'ils en trouvent une, exploitent la faille dans le

    but de modifier la page d'accueil sans avoir obtenu l'autorisation du propritaire du site. Cet acte est nomm

    Web Defacing. La page web modifie contient gnralement un message relativement grand qui indique que le

    site web a t "dfac".

    13.2.2. Exemple

    La capture ci-dessous montre la page d'accueil du site web IBM developerWorks aprs qu'il ait t "dfac".

    Figure 41 - Page web du site http://www.ibm.com/developerworks/ en Juillet 2010

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 40 / 57 ~ HEPIA

    13.2.3. Choix du plugin

    Le plugin que j'ai choisi de dvelopper doit permettre de dtecter si un site web a t "dfac".

    Lors de la recherche d'une ide de plugin, la principale difficult fut d'en trouver un qui n'existait pas encore.

    En effet, il existe une grande quantit de plugins dvelopps l'origine pour Nagios et qui fonctionnent donc

    sur Shinken.

    13.2.4. Choix du langage de programmation

    Le langage de programmation que j'ai choisi est Python.

    Ce langage ncessite que l'interprteur Python soit install sur la machine. Ceci est une fausse contrainte car si

    on utilise Shinken il a lui-mme besoin de l'interprteur Python, donc si le plugin est utilis avec Shinken on est

    certain que l'interprteur sera install. De plus, l'interprteur Python est install sur la quasi-totalit des

    distributions Linux.

    Un programme Python peut tre excut sur toutes les plateformes pour lesquels un interprteur Python est

    disponible (Linux, Windows, MacOSX, Android, etc.).

    J'ai galement choisi Python pour respecter la philosophie de Shinken ainsi que pour sa bibliothque standard

    qui contient beaucoup de fonctions prtes l'emploi.

    13.2.5. Comparaison de deux pages web

    Une comparaison de deux pages web peut tre vue comme une comparaison de deux fichiers texte. La

    comparaison de deux fichiers texte n'est pas une opration triviale.

    13.2.5.1. Problmatique

    En effet, si on utilise un algorithme naf, il va parcourir tous les caractres du fichier tout en comparant si le

    caractre la mme position dans l'autre fichier est identique. Cet algorithme pose problme car, si l'on ajoute

    un espace au milieu du fichier, tous les caractres suivants seront dcals et l'algorithme retournera un taux de

    modification d'environ 50% alors que seul un caractre a t ajout.

    13.2.5.2. Algorithme de recherche de la plus longue sous-squence commune

    Pour viter ce problme, il faut crer un algorithme qui, pour chaque diffrence de caractre dtecte, va

    tenter de retrouver la suite de la chane plus loin dans les fichiers. Si l'on prend l'exemple prcdent

    l'algorithme va dtecter que l'espace ajout dans le deuxime fichier ne correspond pas au caractre du

    premier fichier. Il va donc avancer d'un caractre dans le premier fichier et vrifier si le caractre correspond

    un espace. Puis il va continuer d'avancer dans le fichier jusqu' arriver la fin du fichier. Ensuite il va revenir au

    point o il a dtect la diffrence, puis il va avancer dans le deuxime fichier. A ce moment-l, il va sauter

    l'espace qui a t ajout et il va continuer de comparer les fichiers avec un dcalage d'un caractre dans le

    deuxime fichier. Ces tapes sont effectues chaque fois qu'une diffrence est trouve.

    Cet algorithme s'appelle l'algorithme de recherche de la plus longue sous-squence commune. Son dfaut

    majeur rside dans sa complexit algorithmique qui vaut dans le pire des cas O(n2) (n tant le nombre de

    caractres) et dans le meilleur des cas (fichiers identiques) O(n). Nanmoins, il a l'avantage d'tre trs facile

    implmenter en utilisant la rcursivit.

  • HES-SO//MASTER Projet d'approfondissement 8 Juin 2012

    Schaub Lionel ~ 41 / 57 ~ HEPIA

    Figure 42 - Algorithme de recherche de la plus longue sous-squence commune en Python

    Cet algorithme a t implment mais il n'est pas utilis dans le plugin car le temps de calcul est trop lev et

    augmente exponentiellement en fonction du nombre de caractres.

    13.2.5.3. Comparaison des lignes du fichier

    Le plugin utilise une classe de la bibliothque Python standard appele difflib.SequenceMatcher. Cette classe

    fournit deux mthodes intressantes:

    ratio(): Cette fonction calcule le pourcentage de similarit entre deux fichiers texte. Elle implmente

    l'algorithme de recherche de la plus longue sous-squence