A la découverte de Icinga 2
Sommaire
I. Présentation
Lancé le 15 mai 2009, Icinga fait partie des projets de Supervision Open Source dérivée du coeur du célèbre outil de supervision Nagios. Il est à l’époque le premier fork dans ce domaine, née du mécontentement des développeurs et contributeurs de Nagios qui ne voient plus évoluer le projet.
L’équipe recomposée fait évoluer le fork pendant 5 ans avant de sortir une nouvelle version baptisée Icinga 2 en juin 2014. Construit à partir de zéro, Icinga 2 est une réécriture complète de l’outil de supervision basé sur le langage C++ qu’on ne pourra alors plus qualifier de fork. En effet, plutôt que de continuer de développer à partir du Nagios Core, comme c’est le cas des versions 1.x, l’équipe de développement a décidé de repartir à zéro afin de repartir sur de nouvelles bases et notamment pouvoir construire une architecture modulaire comme par exemple avec Shinken.
II. Fonctionnalités et performances
Icinga 2 gère les tâches classiques de ce que nous pouvons attendre d’un outil de supervision : exécution des contrôles, envoi de notifications d'alerte, enregistrement des événements... De ce côté-là, le système est axé sur la performance avec une conception multithread. L’équipe annonce avoir fait tourner sur une machine 1 million de contrôles actifs pour 60 000 hôtes supervisés, sans problèmes. Pour comparaison avec la version 1, il faut 100 fois plus de contrôles à lcinga 2 pour arriver au même niveau de latence.
A. Modularité
La conception modulaire permet d’éclater les rôles sur différentes machines afin de répartir les charges. Quand on voit les performances annoncées, je ne suis pas certain que ce soit la fonctionnalité la plus utilisée 😉
B. Distribution
Dans les fonctionnalités les plus alléchantes à mon gout, je vous propose la surveillance distribuée. En mode distribué, vous pouvez créer plusieurs instances de serveurs satellites qui effectueront leurs surveillances sur une zone et remonter les donnés à la zone centrale. Vous pouvez également distribuer votre supervision tout en équipant vos satellites de certains rôles, grâce à la modélisation.
C. Clusterisation
Suivant les cas, la clusterisation de votre infrastructure peut être intéressante pour assurer un service haute disponibilité simplement. La encore, icinga 2 met en avant sa flexibilité en donnant la possibilité de mixer clusterisation, modélisation et distribution !
D. Historisation
Au niveau base de données, Icinga prend en charge Oracle et PostgreSQL en plus de MySQL pour l’historisation des données.
E. Configuration
Icinga 2 se démarque ici de ses confrères les plus connus en proposant un nouveau format de configuration. Alors oui, on est toujours sur des fichiers de conf avec des objets etc. Mais le corps des fichiers à nettement changé. On trouve comme un langage de programmation mixé de la " méthode nagios " avec du SQL.
Pour les développeurs, cette nouvelle méthode rend la configuration plus logique. Il suffit de créer des templates, puis de définir des comportements conditionnels. Pour donner un exemple voici à quoi ressemble un service dans la configuration Icinga 2 :
apply service "ssh" { import "generic-service" check_command = "ssh" assign where host.address && host.vars.os == "Linux" ignore where host.vars.test == true }
N’ayant pas testé complètement ce système, je ne ferais pas de commentaires sur cette méthode. Une chose est sûre, avec la " méthode nagios ", il faut être très organisé pour garder compréhensible sa configuration dans le temps. Surtout avec plusieurs administrateurs, et quand il faut mettre le nez dans une configuration. Il faut d’abord comprendre la logique de celui qui l’a créé. A voir ce qu’apporte Icinga 2 sur ce point !
F. Interfaces
Au niveau de l’interface ouèbe (je vous jure j’ai vu ça dans un bouquin d’info) icinga prépare quelque chose de vraiment sexy avec Icinga web 2. Ne pas confondre Icinga 2 le sye stème de supervision et Icinga web 2 une interface proposée pour la visualisation des hôtes et de l'état de service, les rapports, les journaux, etc.
L’interface est claire et moderne, rien n’a été inventé, mais bien réalisé. On construit facilement des tableaux de bord personnalisés et on a les yeux sur les éléments importants. Quand on navigue d’un élément à un autre, la page se divise en deux pour afficher les détails en gardant la main sur la vue d’origine :
Les onglets permettent de naviguer simplement dans les différentes vues des objets. C’est agréable à utiliser et vous pourrez même exporter vos vues simplement dans plusieurs formats (PDF, CSV, JSON). Le rendu est aussi propre que l’interface. On a quelques vues sympathiques comme ci-dessous on l’on visualise sur l’ensemble d’une période de temps les jours ou le plus d’incidents ont été remontés :
Bref, la version 2 de cette interface web donne envie, mais elle reste légère en contenu. On regrette l’absence de vue type business, on l’on visualise directement l’impact des incidents à l’échelle du service global de l’entreprise.
Pas de visualisation graphique des données de performance non plus. Comment évolue l’espace de mon serveur de mon réseau de stockage? Ce n’est pas la question à poser à Icinga 2.
Côté interaction avec le système, l’interface permet quelques actions classiques comme forcer un contrôle, planifier une période de maintenance ou ajouter des commentaires. Il est possible aussi via l’interface de configurer les connexions aux bases de données. En revanche, impossible de modifier la configuration du système.
Il sera toujours possible de greffer des applications tierces selon vos gouts et besoins (Nagvis pour la carthographie, PNP4Nagios pour les graphs ou NCONF pour gérer sa configuration). Mais quand on voit le rendu d’Icinga Web 2, on regrette que ces applications ne soient pas intégrées dans l’interface.
Ceci dit, Icinga Web 2 est en développement et l’équipe travaillant dessus devraient étoffer la fiche technique de la bête rapidement.
Bonjour,
il semble que la structure modulaire d’Icinga permette d’intégrer d’autre outils comme Grafana + Graphite + Singlestat ce qui permettrait d’accéder aux infos disques :
https://grafana.com/dashboards/56
Est ce que cet article est toujours d’actulalité?
Je souhaiterai savoir si la detection des host et l »ajout par une page web sont possible?
Si icinta gere bien le SNMP car je suohaiterai ajouter un agant que sur quelques serveurs specifiques pour surveiller des services (IIS et MSQL, Apache et Mysql).
Merci du retour d’info.