Shinken : quand un Python rencontre Nagios
Signature : | Mis en ligne le : 22/05/2012
Catégorie(s) :
  • GNU/Linux Magazine HS
  • | Domaine :
    1 commentaire(s) creative commons
    Article publié dans :
    Achetez
    Linux Magazine HS 49 :
    Version Papier
    Version PDF
    Sommaire de l'article :
    1. 1. Un début de projet à l'histoire atypique
    2. 1.1. Nagios : un projet au ralenti
    3. 1.2. Un proof of concept innovant
    4. 1.2.1. Une identification des améliorations
    5. 1.2.2. Les problèmes de performances
    6. 1.2.3. Les problèmes des environnements distribués
    7. 1.2.4. Le choix d'un nouveau langage
    8. 2. Un Nagios coupé en pièces : « The Unix way »
    9. 2.1. Les rôles de Nagios
    10. 2.2. Les problèmes de cette architecture monolithique
    11. 2.3. « The Unix Way »
    12. 2.4. L'Arbiter : un démon pour les contrôler tous
    13. 2.4.1. Le découpage intelligent de la configuration
    14. 2.4.2. Gestionnaire des liens entre les éléments
    15. 2.4.3. Gestionnaire de la haute disponibilité
    16. 2.4.4. Gestionnaire des commandes externes
    17. 2.4.5. La configuration de l'Arbiter
    18. 2.5. Les Schedulers
    19. 2.5.1. Leur rôle : ordonnancer
    20. 2.5.2. La configuration
    21. 2.6. Les Pollers
    22. 2.6.1. Leur rôle : lancer les sondes
    23. 2.6.2. La configuration
    24. 2.7. Les Reactionners
    25. 2.7.1. Leur rôle : lancer les notifications
    26. 2.7.2. La configuration
    27. 2.8. Les Brokers
    28. 2.8.1. Leur rôle : fournir toutes les données à des modules
    29. 2.8.2. La configuration des brokers et de leurs modules
    30. 2.9. La configuration locale des démons
    31. 2.10. Échanges entre les satellites
    32. 2.11. Des configurations optionnelles
    33. 3. Un nouveau niveau : les Realms
    34. 3.1. Une trop grande visibilité
    35. 3.2. La gestion des lieux : les realms
    36. 3.2.1. Leur rôle
    37. 3.2.2. Leur définition
    38. 3.3. Les sub-realms
    39. 3.3.1. Une hiérarchie de realms
    40. 3.3.2. La configuration
    41. 3.3.3. Exemple de hiérarchie
    42. 4. La mise en place et lancement
    43. 4.1. La méthode rapide
    44. 4.2. La méthode (un peu) plus longue
    45. 4.3. Aller plus loin
    46. 5. Et dans le futur ?
    47. 5.1. Des modifications d'états à la volée
    48. 5.1.1. La situation actuelle
    49. 5.1.2. Une prémisse déjà présente dans Shinken
    50. 5.2. Un moteur de corrélation
    51. 5.3. Des envois « passifs » de configurations
    52. 5.4. Nagios, Icinga, Shinken, Zabbix : une future guerre dans les étoiles ?
    53. 5.4.1. Un projet fantôme
    54. 5.4.2. La guerre des clones
    55. 5.4.3. L'« Enterprise » contre attaque
    56. 5.4.4. Shinken : un nouvel espoir ?
    Page 1/8
    Page suivante »

    Nagios est encore aujourd’hui la star des logiciels de supervision open source, même si de sérieux concurrents le talonnent. Si ses qualités sont indéniables, il souffre tout de même de problèmes dans la gestion des très grands environnements qui sont dus principalement à son implémentation actuelle. Le projet Shinken est une nouvelle implémentation de Nagios qui tente de lever ce problème et d’apporter un nouveau souffle à ce projet. Regardons son histoire et ce qu’il propose.

    1. Un début de projet à l'histoire atypique

    Avant de nous lancer tête baissée dans notre étude de Shinken et de son architecture, prenons quelques instants pour voir pourquoi et comment il a vu le jour.

    1.1. Nagios : un projet au ralenti

    L'histoire de Shinken ne peut se comprendre qu'en revenant sur celle de Nagios au cours de ces dernières années. Ce dernier a commencé sa grande aventure il y a 10 ans sous le nom Netsaint. Sa modularité lui apporte au fil du temps une forte renommée dans le monde open source. Après un renommage en Nagios pour cause de nom déjà déposé, il continue son développement et cristallise autour de lui une très forte communauté qui lui confère un statut de star de la supervision qui commence à dépasser le cadre des seuls logiciels libres.

    Cependant, depuis plus de deux ans, le développement s'est fortement ralenti. L'auteur de Nagios n'étant presque plus présent sur la mailing list du projet, les apports de la communauté sur le cœur du projet se sont faits de moins en moins nombreux. Cette absence s'explique facilement : après de nombreuses années à gérer ce logiciel open source, l'auteur de Nagios, Ethan Galstad, a légitimement créé une société de services pour vivre de ce grand projet. Son absence prolongée a irrité une partie de la communauté qui a lancé un fork il y a plus d'un an : Icinga.

    Ce dernier n'a pas réussi à s'attirer une grande part de la communauté restée fidèle à Nagios car les motivations des forkers semblaient troubles : une part importante de ses membres est employée par une société directement concurrente de celle de l'auteur de Nagios. Les craintes d'un fork plus commercial qu'autre chose ont effrayé beaucoup d'éventuels contributeurs. De plus, les apports du fork se sont révélés limités sur le cœur de l'application, se limitant à une nouvelle interface et un export en base Oracle.

    1.2. Un proof of concept innovant

    1.2.1. Une identification des améliorations

    Dans ce contexte agité, la communauté n'est pas restée inerte. Au sein de celle-ci, et après avoir écrit un ouvrage sur Nagios, votre serviteur a identifié les principaux problèmes de Nagios : si la gestion de configuration de Nagios est très puissante pour gérer les grands environnements, les performances et les possibilités d'architectures distribuées et hautement disponibles sont en retrait. Un serveur Nagios standard peut gérer environ 1000 hôtes en comptant 10 services par hôte. Si ses performances sont bonnes, il est relativement facile d'atteindre pour un grand environnement une telle configuration. Si la mise en place d'architectures distribuées est possible, elle n'est pas aisée, encore moins si l'on souhaite avoir en plus de la haute disponibilité, même en utilisant des outils tiers comme Centreon.

    1.2.2. Les problèmes de performances

    Le problème de performances est dû au mécanisme qu'utilise Nagios pour obtenir ses informations : il se forke afin que son fils lance lui-même une sonde (un simple script shell ou un exécutable) qui réalise la vérification. Le processus fils lit la sortie standard de la sonde et son code retour pour obtenir l'état de l'élément surveillé. Ce fils écrit ces résultats dans un fichier plat, qui sera lu et parsé par le démon principal. Une fois le fichier écrit, le fils meurt.

    Dans ces deux dernières phrases réside le cœur du problème de performances de Nagios :

    • Le parsage de fichiers plats est une opération extrêmement coûteuse.
    • Pourquoi tuer le processus fils après son travail si c'est pour le relancer à la prochaine sonde ? Un fork est une opération coûteuse.

    Le premier point se règle avec un export des données du processus fils vers une socket du processus maître. La communication étant directement en mémoire, et sans traitement de chaîne de caractères, le gain est substantiel.

    Le second est conceptuellement simple également : le démon possède un pool de processus qui écoutent ses ordres. Le nombre de forks est ainsi divisé de moitié.

    1.2.3. Les problèmes des environnements distribués

    Le problème des environnements distribués est bien plus complexe : Nagios dispose nativement d'une méthode pour mettre en place des environnements distribués hautement disponibles, mais elle a un impact très important sur les performances. Des solutions comme Centreon existent, mais ne gèrent que la partie distribuée, pas nécessairement la haute disponibilité.

    Si les problèmes de performances sont dus à l'implémentation, ici c'est un problème d'architecture globale qui pose souci, c'est-à-dire un problème de conception, pas si simple à régler.

    1.2.4. Le choix d'un nouveau langage

    Les premières propositions d'améliorations n'ayant pas reçu de la part des développeurs principaux de Nagios un accueil chaleureux, votre cher serviteur se lance dans l'écriture d'un proof of concept. Le démon étant écrit en C, la mise en place de ses idées n'est pas aisée, même non fignolées. Les idées de base de Nagios sont quant à elles simples à implémenter. C'est pourquoi le proof of concept a été implémenté dans un langage plus souple : Python. Réimplémenter le cœur Nagios en Python et y ajouter de nouvelles idées était plus simple que de partir directement dans le code actuel, qui est constitué de gros fichiers .c avec des fonctions très longues. Le but initial était de tester les idées en Python puis les réimplémenter par la suite en C.

    Python permet également une portabilité très aisée. Nagios fonctionne très bien pour les environnements de taille moyenne, c'est-à-dire entre 100 et 1000 serveurs. Ses performances et ses problèmes d'architectures sont un frein pour les environnements plus importants. Les petites entreprises ont un peu du mal à avoir un vrai service informatique, et notre cher système libre bien aimé n'est pas encore très répandu en leur sein. Une compatibilité avec le système de Redmond serait donc un plus non négligeable pour Nagios, ce qui est chose faite avec un proof of concept en Python.

    Cette première étape s'est faite très rapidement : l'application des méthodes de data driven a permis d'obtenir un " cœur Nagios " en un nombre de lignes très faible, le tout en ayant une souplesse de développement très agréable.

    Viennent ensuite les phases proprement dites d'étude et mise en place des pools de processus et l'architecture distribuée hautement disponible. C'est ce que nous allons voir de suite en commençant par la partie la plus structurante : l'architecture globale.

    2. Un Nagios coupé en pièces : " The Unix way "

    Afin de mieux comprendre l'architecture globale, suivons un peu le raisonnement qui lui a permis de voir le jour.

    2.1. Les rôles de Nagios

    Faisons un rapide rappel sur la vie d'un démon Nagios : il lit la configuration de l'administrateur dans un fichier plat, il ordonnance et lance régulièrement des sondes qui effectuent les vérifications. En cas de souci, il lance une commande pour notifier les utilisateurs de problèmes, le tout en exportant toutes ces données par un mécanisme de modules. Ces derniers remplissant le plus souvent une base de données accédée par la suite par une application web.

    Donnez votre avis - 1 commentaire(s)
  • tristan.gallet dit :

    Très bel article, merci pour ces informations présentées de manière claire et précise.

    Je garde un oeil sur Shinken depuis ses début et je constate avec plaisir que ce projet s’améliore de plus en plus, bravo !

  • Vous souhaitez commenter cet article ?
    Brèves Flux RSS
    Édito : Linux Pratique N°77
    Édito : GNU/Linux Magazine N°160
    Édito : GNU/Linux Magazine Hors-Série N°66
    Édito : MISC Hors-Série N°7
    Édito : Linux Essentiel N°31
    Communication RSS Com. RSS Presse
    Misc, Partenaire de l’événement Hack In Paris.
    Linux Pratique, Partenaire de l’Ubuntu Party à la Cité des Sciences et...
    Linux Essentiel N°31 – Communiqué de presse
    GNU/Linux Magazine N°159 – Communiqué de presse
    Linux Magazine, Partenaire de Symfony Live Paris
    Rechercher un article dans notre base documentaire :
    En kiosque Flux RSS

    Le tout nouveau Misc est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau Linux Pratique est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau GNU/Linux Magazine est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau GNU/Linux Magazine HS est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau Misc HS est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau Linux Essentiel est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau Open Silicium est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...