Installation pas à pas d’un serveur de supervision Icinga

Date: 6/06/2011 | Catégories: Nagios,Open-source,Planet-libre,Reseau | Tags: ,,,

Icinga est un des nombreux forks libres de Nagios qui font pas mal parler d'eux en ce moment. Il apporte son lot d'amélioration par rapport "à son père" comme une architecture distribuée, une utilisation possible des bases de données MySQL/PgSQL/Oracle ou encore une interface Web tirant partie des dernières technologies dans le domaine (cliquez ici pour tester la démonstration de l'interface Web Icinga). Pour voir une comparaison pas forcément impartiale entre Icinga et Nagios, vous pouvez consulter ce tableau.

Dans ce billet, nous allons installer et configurer un serveur de supervision Icinga sur un serveur Debian (version Lenny ou supérieure mais la procédure doit être facilement adaptable à Ubuntu Server).

Les caractéristiques du serveur Icinga seront les suivantes:

  • Icinga dernière version disponible
  • Données de surperision stockées dans une base de donnée MySQL
  • Interface Web basée sur Apache
  • Plugins Nagios 1.4.15

Cette procédure a été testé sur une machine virtuelle (VM) sous Debian 6.0 Squeeze fraichement installée.

Préparation de l'installation

Nous allons installer Icinga depuis les sources se trouvant dans le dépôt Git officiel. Nous aurons ainsi la dernière version disponible. Pour cela, il est nécessaire d'installer certaines librairies et outils sur votre système.

Note: Les commandes de ce billet ont été saisies dans un terminal administrateur. Il est également possible d'utiliser la commande sudo <cmd> pour executer certaines taches en tant qu'administrateur ou su - -c "<cmd>".

On installe les pré-requis (à adapter si vous utilisez Ubuntu Server en lieu et place de Debian):

ETAPE 1

apt-get install apache2 build-essential libgd2-xpm-dev libjpeg62 libjpeg62-dev libpng12-0 libpng12-dev mysql-server mysql-client libdbi0 libdbi0-dev libdbd-mysql snmp libsnmp-dev git

En cas d'erreur (par exemple paquet introuvable), il faudra faire une recherche dans les dépots et remplacer la librairie manquante par la nouvelle version.

On passe ensuite à la création du compte utilisateur et du groupe avec lesquels Icinga sera exécuté.  Je préfère personnellement utiliser le compte nagios (et le groupe nagios) plutôt que icinga comme on le trouve sur la documentation officielle. En effet, cela permet de simplifier une migration éventuelle d'un serveur Nagios vers Icinga.

ETAPE 2

groupadd nagios

useradd -g nagios -c "Nagios User" -s /bin/noshellneeded nagios

passwd nagios

usermod -a -G nagios www-data

Installation depuis les sources (Git)

On passe ensuite à la récupération de la dernière version de Icinga sur le gestionnaire de version Git officiel.

ETAPE 3

cd /usr/src

git clone git://git.icinga.org/icinga-core.git

cd /usr/src/icinga-core/

git submodule init

git submodule update

Puis on compile "la bête" avec les commandes suivantes:

ETAPE 4

./configure --with-icinga-user=nagios --with-icinga-group=nagios --with-nagios-user=nagios --with-nagios-group=nagios --with-command-user=nagios --with-command-group=nagios --prefix=/usr/local/icinga --enable-idoutils --enable-ssl

make all

make fullinstall

Si vous souhaitez protéger l'accès à l'interface Web d'Icinga avec un login/password, il faut également saisir la commande suivante. Par exemple pour définir un compte icingaadmin:

htpasswd -c /usr/local/icinga/etc/htpasswd.users icingaadmin

Installation des plugins Nagios

Comme Icinga est un fork de Nagios, il est possible d'utiliser directement les plugins de Nagios en version 1.4.15 au moment de la rédaction de ce billet.

Pour les installer on saisi:

ETAPE 5

cd /usr/src

wget http://downloads.sourceforge.net/project/nagiosplug/nagiosplug/1.4.15/nagios-plugins-1.4.15.tar.gz

tar zxvf nagios-plugins-1.4.15.tar.gz

cd nagios-plugins-1.4.15

./configure --prefix=/usr/local/icinga --with-cgiurl=/icinga/cgi-bin --with-htmurl=/icinga --with-nagios-user=nagios --with-nagios-group=nagios

make

make install

make install-root

Configuration de IDO

Arrivé à ce point de l'installation, vous devriez avoir un Icinga fonctionnel avec une base de donnée locale sous la forme de fichier texte (c'est le mode par défaut de Nagios). Pour avoir une installation évolutive et permettant d'exploiter les données issues de Nagios sur d'autres applications, il est nécessaire de configurer Icinga pour utiliser une base de donnée (MySQL dans notre exemple) en lieu et place de ces fichiers textes.

Pour cela, nous allons utiliser le module IDO qui fait l'interface entre Icinga et MySQL (ou PgSQL...). Ce module est l'équivalent du module NDO dans l’écosystème Nagios.

Le module IDO est installé par défaut suite à l'utilisation de l'option --enable-idoutils lors de la configuration de la compilation de Icinga. Il suffit donc de le configurer en suivant les indications suivantes:

ETAPE 6

cp /usr/local/icinga/etc/idomod.cfg-sample /usr/local/icinga/etc/idomod.cfg

sed -i -e "s/^use_ssl=0/use_ssl=1/g" /usr/local/icinga/etc/idomod.cfg

sed -i -e "s/^output_type=unixsocket/output_type=tcpsocket/g" /usr/local/icinga/etc/idomod.cfg

sed -i -e "s/^output=\/usr\/local\/icinga\/var\/ido.sock/output=127\.0\.0\.1/g" /usr/local/icinga/etc/idomod.cfg

cp /usr/local/icinga/etc/ido2db.cfg-sample /usr/local/icinga/etc/ido2db.cfg

sed -i -e "s/^use_ssl=0/use_ssl=1/g" /usr/local/icinga/etc/ido2db.cfg

sed -i -e "s/^socket_type=unix/socket_type=tcp/g" /usr/local/icinga/etc/ido2db.cfg

sed -i -e "s/^#broker_module=\/usr\/local\/icinga\/bin\/idomod.o\ config_file=\/usr\/local\/icinga\/etc\/idomod.cfg/broker_module=\/usr\/local\/icinga\/bin\/idomod.o\ config_file=\/usr\/local\/icinga\/etc\/idomod.cfg/g" /usr/local/icinga/etc/icinga.cfg

cat >> /usr/local/icinga/etc/modules/idoutils.cfg < EOF
define module{
module_name ido_mod
path /usr/local/icinga/bin/idomod.o
module_type neb
args config_file=/usr/local/icinga/etc/idomod.cfg
}
EOF

On doit enfin créer la base de donnée MySQL qui va stocker les données d'Icinga.

ETAPE 7

mysql -u root -p

mysql> CREATE DATABASE icinga; GRANT USAGE ON *.* TO 'icinga'@'localhost' IDENTIFIED BY 'icinga'; GRANT SELECT , INSERT , UPDATE , DELETE ON icinga.* TO 'icinga'@'localhost';

mysql> FLUSH PRIVILEGES;

mysql> quit

mysql -u root -p icinga < /usr/src/icinga-core/module/idoutils/db/mysql/mysql.sql

Par défault, la base de donnée s'appelle icinga et elle sera accessible seulement en local (localhost) par l'utilisateur MySQL icinga avec le mot de passe icinga. (vous pouvez bien sur changer ces paramètres dans la base de donnée mais il faudra alors veiller à également les modifier dans le fichier ido2db.cfg).

Test de l'installation d'Icinga

On relance les processus pour prendre en compte notre configuration:

ETAPE 8

/etc/init.d/ido2db start

/etc/init.d/icinga start

/etc/init.d/apache2 restart

Puis on automatise le démarrage d'Icinga au prochain boot du serveur:

ETAPE 9

update-rc.d ido2db defaults

update-rc.d icinga defaults

Vous devriez avoir un Icinga fonctionnel ! Pour vérifier ceci, il suffit de pointer un navigateur Web vers l'URL suivante: http://<adresse ip serveur icinga>/icinga (ou http://localhost/icinga)

Migration de votre configuration Nagios (optionnel)

Comme nous l'avons vu au début de ce billet, Icinga est un fork de Nagios. C'est à dire qu'il est tout à fait possible d'utiliser les plugins et les configurations d'un serveur Nagios existant directement dans votre nouveau serveur Icinga.

Je vous conseille dans un premier temps d'archiver la configuration initiale de Icinga pour pouvoir revenir en arrière en cas de problème:

cp -R /usr/local/icinga/etc /usr/local/icinga/etc.default

Ensuite on copie la configuration depuis le répertoire de Nagios. Je pars sur l'hypothèse ou le serveur Nagios est installé sur la même machine que votre serveur Icinga. Si ce n'est pas le cas, il faudra transférer les fichiers depuis votre serveur Nagios.

cp -R /usr/local/nagios/etc/* /usr/local/icinga/etc/

On transforme ensuite la configuration pour l'adapter à Icinga:

mv /usr/local/icinga/etc/nagios.cfg /usr/local/icinga/etc/icinga.cfg

sed -i 's/nagios/icinga/g' /usr/local/icinga/etc/icinga.cfg

sed -i 's/nagios/icinga/g' /usr/local/icinga/etc/cgi.cfg

sed -i 's/nagios/icinga/g' /usr/local/icinga/etc/resource.cfg

cp /usr/local/icinga/etc.default/htpasswd.users /usr/local/icinga/etc/

On devrait ainsi avoir une configuration mélangeant celle faite pour Icinga (notamment en ce qui concerne IDO) et votre ancienne configuration de Nagios.

On vérifie que la configuration ne comporte pas d'erreur:

/usr/local/icinga/bin/icinga -v /usr/local/icinga/etc/icinga.cfg

Si c'est le cas, il suffit de relancer Icinga pour prendre en compte cette configuration:

/etc/init.d/ido2db restart

/etc/init.d/icinga restart

/etc/init.d/apache2 restart

Vous pouvez faire fonctionner les deux services (Nagios & Icinga) en parallèle sans aucun problème. Cela peut être utile pour une phase de migration. Par contre il faut garder à l'esprit que vous aurez deux fois plus de requêtes vers vos serveurs...

Sources:

  • Salut!

    Merci pour les liens du wiki. 😉

    Il ne faut pas hésiter à poster d’autres tutoriels sur le wiki français d’Icinga 🙂

    Bonne continuation

  • Je ne connaissais pas ce fork de Nagios.
    J’ai rencontré beaucoup de problèmes avec NDO lorsqu’il s’agit de superviser un parc avec plusieurs dizaines de millier de services actifs.
    Quel est le niveau de performance du module ICO ?

    • Bonjour,

      Je n’ai pas encore testé IDO avec des milliers de machines, cela ne saurait tardé (grosse migration cet été 🙂 )

      Mais il semblerait que merlin serait une très bonne alternative à NDO au niveau des performances.

      Je suis sur le point de faire un tutoriel sur l’intégration de merlin avec Icinga, qui une fois terminée sera publié sur wiki.icinga.org.

      Je prépare également une documentation technique sur IDO.

  • scyrus

    Bonjour,

    Tout d’abord, merci pour ce tuto qui est encore une fois de qualité comme tous les autres !

    En revanche, je me trouve fasse à un petit problème qui doit être tout con je pense mais étant novice en Linux :s.

    Lorsque je tape la commande « git clone git…. », sa me retourne « -bash: git: command not found ».

    Pourtant j’ai fait au préalable : apt-get install git

    Si quelqu’un peut m’aider 🙂
    Merci d’avance

  • Erreur ici :
    sed -i ‘s/nagios/icinga/g’ /usr/local/icinga/etc/ressource.cfg

    Un seul « s » à resource.cfg

  • Autre oublie :

    mv /usr/local/icinga/etc/nagios.cfg /usr/local/icinga/etc/icinga.cfg

    Sinon on a pleins de bugs de groups et de contacts qui ne sont pas retrouvés, etc. (particulièrement si on utilisait Centreon sur l’ancien serveur)

  • Bonjour,
    merci pour ce tuto bien complet.

    Je viens de terminé l’installation sur une vm debian squeeze 6.0.

    je monitore en ce moment uniquement localhost.

    Je souhaiterais ajouter d’autres serveurs en réseau locale. j’ai cherchais pour ajouter d’autres hosts mais c’est pas evident car je ne sais pas dans quel fichiers dois-je ajouter leur adresse ip

    p.s: les serveurs que je souhaiterais monitorer sont tous sous debian squeeze 6.0

  • Bonjour,

    quand j’excute cette commande :

    root@icinga:~# sed -i -e « s/^output=/usr/local/icinga/var/ido.sock/output=127.0.0.1/g » /usr/local/icinga/etc/idomod.cfg

    J’ai cette erreur
    sed: -e expression n°1, caractère 16: option inconnue pour `s’

    • Ne fait pas un copier coller depuis le blog, je pense que le caractère  » est remplacer par “…

      • raoul

        salut Nicolargo et tout dabord merci pour ce site qui est tres riche en info.
        j essaye de suivre la procedure pour installer ICINGA jusqua etape 6 je nest pas de proble mais lorsque jexecute cete commande « sed -i -e « s/^output=/usr/local/icinga/var/ido.sock/output=127.0.0.1/g » /usr/local/icinga/etc/idomod.cfg » jai ce message qui apparait « sed: -e expression #1, char 16: unknown option to `s’  » alors que les 2 d avant avec l option « s » a pourtant fonctionener.
        merci jattend urgament vos reponse pour evoluer.

        Merci d avance

        • Pareil, ne pas faire de copier coller de la commande depuis le navigateur Web mais la retaper à la main…

          • raoul

            mm en typant la commande moi mm jai le mm probleme.

    • raoul

      Comment puis je contourner ce probleme ?

      meme lexecution de cette commande me pose probleme cat >> /usr/local/icinga/etc/modules/idoutils.cfg < EOF
      define module{
      module_name ido_mod
      path /usr/local/icinga/bin/idomod.o
      module_type neb
      args config_file=/usr/local/icinga/etc/idomod.cfg
      }
      EOF
      cmt est ce qu el sexecute ?

      Merci

  • ambou75

    Merci pour ce tuto qui m’ a bien servi à remplacer notre vieux nagios qui avait justement un peu trop un coup de vieux, ça m’a donné envi de remastoriser une centos avec les outils icinga-nconf-nagvis clé en main^^

  • Petite question: Dans le cadre du remplacement de la brique nagios par icinga en utilisant le front-end centreon, comment faire pour mettre à jour la configuration centreon avec les nouveaux paramètres icinga sans tout réinstaller (centreon)?

    Y a t-il de grosses différences de performances entre icinga et nagios ?
    merci

    • Pour installer Icinga et Centreon sans problème il faut utiliser Centreon 2.3. Pour information Centreon 2.3 est en RC3 et une RC4 est déjà dans le pipe. Il est possible d’installer Icinga et centreon 2.3 RCx en faisant un checkout du svn, mais cela devrais être un plateforme de test.

      En ce qui concerne les performances d’Icinga par rapport à Nagios c’est que la majorité des problèmes sont résolues avant dans Icinga puis poussé dans Nagios. Donc il faudrait conclure que le projet Icinga corrige les bugs et les transmet à Nagios.

      En ce qui concerne le broker, IDO est maintenu et devient de plus en plus évolutif comparé a IDO qui n’évolue plus du tout. De plus les requêtes SQL dans IDO sont plus optimales que celles de NDO.

      Pour information IDO est un fork de NDO.

  • Will

    J’ai le même souci que Raoul, à savoir :
    sed -i -e « s/^output=/usr/local/icinga/var/ido.sock/output=127.0.0.1/g » /usr/local/icinga/etc/idomod.cfg
    me renvoit une erreur.
    Peut-être n’est on pas obligé de taper la ligne de commande mais peut-on s’en sortir en tapant directement le fichier incriminé dans le problème ci dessus?

    • Will

      En fait il semblerait que dans le répertoire /usr/local/icinga/var/, je n’ait pas de ido.sock.
      Qu’est-ce que j’ai raté ?
      Comment puis-je m’en sortir sans recommencer à zéro ?
      Merci d’avance.

  • Gg

    Bonjour ‘Nicolargo’.
    Merci pour ce tuto et pour ton site qui est riche en renseignement et astuce pour un néophyte comme moi en Debian!
    Je rencontre le même problème que Will & Raoul dans la commande « sed -i -e « s/^output=/usr/local/icinga/var/ido.sock/output=127.0.0.1/g » /usr/local/icinga/etc/idomod.cfg »
    Pourtant je l’ai tapé à la mimine!
    Aurais-tu (ou qq ‘un d’autre) une solution à ce problème…..?
    Merci d’avance pour vos réponses.

    PS : ma Debian est une machine virtuelle

    • jfr1784

      J’avais le même problème jusqu’au moment où j’ai regardé de plus près la commande. Les « / » dans le chemin doivent être échappé avec un « \ ».
      La commande transformée :

      sed -i -e « s/^output=\/usr\/local\/icinga\/var\/ido.sock/output=127.0.0.1/g » /usr/local/icinga/etc/idomod.cfg

      fonctionne.

  • JMg

    Bonjour,
    tout d’abord merci pour ce tuto.
    J’ai un message d’erreur en étape 6 :
    sed -i -e « s/^#broker_module=/usr/local/icinga/bin/idomod.o config_file=/usr/local/icinga/etc/idomod.cfg/broker_module=/usr/local/icinga/bin/idomod.o config_file=/usr/local/icinga/etc/idomod.cfg/g » /usr/local/icinga/etc/icinga.cfg
    impossible de lire /usr/local/icinga/etc/icinga.cfg : Aucun fichier ou dossier de ce type
    Effectivement icinga.cfg n’existe pas dans ce dossier.
    Où ai-je pu me tromper ?
    Merci

  • thomas

    Bonjour,
    Voila j’ai un problème quand je tape la commande « git clone git://git.icinga.org/icinga-core.git » il me mets:

    Cloning into icinga-core…
    git.icinga.org[0: 213.95.135.29]: errno=Connection refused
    fatal: unable to connect a socket (Connection refused)

    Pouvez vous me dire à quoi cela est du, merci !

  • Bertrand

    Bonjour et merci, par contre je tient à informer tous le monde que les fichiers de config ons changés et ce tuto n’est plus vraiment d’actualités en ce début mars 2012.

  • john

    Bonjour, tout d’abord merci pour ce tuto!

    j’ai terminé l’installation d’icinga. mais je me rend compte qu’il n’y a rien pour gerer les machines. est il nécessaire d’utiliser un outil comme centreon pour pouvoir rajouter des serveurs ? si oui le le couple icinga/centreon est il compatible ?

  • skvince

    Bonjour,
    Mon installation c’est très bien passé mais je ne comprend pas comment configurer les email de notification, quelqu’un peux t’il m’aider à ce sujet ?

    merci

  • RomainM

    Pour ceux qui pose la question sur le problème « git », il faut juste faire la commande apt-get install git

  • imshinji

    avez vous une idée sur combien d’espace faut-il dans un serveur icinga pour superviser une 100éne de machines?

    comment on peut supprimer les anciens logs qui date de plusieurs année de la base mysql sans endommager le serveur icinga?

  • livia

    bonjour

    tout d’abord merci pour le tuto

    je suis arrivée à la 4 étape mais j’ai cette erreur « checking for libdbi… checking for main in -ldbi… no

    configure: error: ERROR – We really need a libdbi to link against »

    j’ai fait apt-get install libdbi ça n’a pas marché .

    Pouvez vous me dire où est ce que je peux trouver ce paquet?

    Merci d’avance.

  • Pingback: SIO | Pearltrees()

  • Pingback: Yoyshi | Pearltrees()