Icinga est une application de surveillance de réseaux open source. À l’origine, il a été conçu comme un fork du système Nagios en 2009 (à propos Nagios signifie en zoulou « il cherche » ou « il examine »), mais une attention particulière a été ici portée sur l’architecture distribuée, l’interface Web, et la connexion SQL (pour Mysql, Oracle, Postgresql). Les développeurs de Icinga ont aussi cherché à impliquer davantage le travail de la communauté, en intégrant plus rapidement les commits correctifs des développeurs. Les mises à jour sont ainsi proposées tous les deux mois à partir de janvier 2010 (alors que la première version stable a été publiée en décembre 2009). Par rapport à Nagios, le module de reporting a également été amélioré, tandis qu’un module de migration fait son apparition pour permettre la portabilité depuis Nagios.
Globalement, les fonctions premières liées au monitoring sont les suivantes :
- Surveillance des services de réseau (SMTP, POP3, HTTP, NNTP, PING, etc.)
- Surveillance des ressources hôte (utilisation du CPU et du disque, etc. )
- Surveillance des composants du serveur (commutateurs, routeurs, capteurs de température et d’humidité, etc.)
- Contrôles de service sur-mesure grâce à un plugin idoine.
- Contrôles des services de parallélisme.
- Capacité de définir la hiérarchie du réseau via des hôtes « parents », afin de détecter les hôtes down et les hôtes inaccessibles
- Capacité de définir des gestionnaires d’événements, à exécuter lors de certains événements de service, en vue de la résolution de problèmes.
En ce qui concerne le système de notifications, Icinga permet d’envoyer des notifications aux personnes compétentes par email ou par d’autres méthodes définie par l’utilisateur. Un échelonnement des alertes, à d’autres utilisateurs ou via d’autres canaux de communication, est également possible.
En ce qui concerne le reporting, dont le reporting visuel, Icinga annonce les fonctionnalités suivantes :
- Deux interfaces utilisateur (Icinga UI classique et Icinga Web) permettent de visualiser l’état du serveur, du service, des cartes réseau, des rapports, des journaux etc..
- Un module de reporting basé sur Jasper Reports, disponible pour les deux interfaces utilisateur.
- Un référentiel de rapports avec différents niveaux d’accès et de création automatique de rapports et de distribution
- Une extension facultative d’accord de niveau de service (SLA) permettant de distinguer les événements critiques de temps d’arrêt planifiés et non planifiés et périodes d’accusé de réception [15]
- Un reporting d’utilisation de la capacité.
- Des modules de données de performances graphiques tels que PNP4Nagios, NagiosGrapher et InGraph
Icinga est conçu sur une architecture modulaire (voir figure). Le noyau Icinga Core, écrit en C, gère les tâches de monitoring (le cas échéant avec des plugins) et envoie les résultats vers la base de données IDODB via l’interface IDOMOD et le démon IDO2DB en SSL. Le module Web prend alors le relai. Il est composé de trois couches : un ORM en vue d’une utilisation orientée objet, une interface de contrôle et une API REST.
L’architecture d’Icinga (cliquez pour agrandir)
Enfin Icinga dispose d’une interface utilisateur mobile (développée sous l’inévitable moteur Webkit intégrant des bibliothèques Javascript et Sencha Touch), disponible sur iOS, Android, BlackBerry Tablet OS et webOS.