Monitoring avec Icinga 2

Il y a un peu plus d’un an, j’avais écrit un article sur Nagios. J’appréciais particulièrement Nagios car un addon de Firefox me permettait d’avoir une alerte en cas de pépin. Mais depuis, Firefox est passé à la version 57 et cet addon, abandonné depuis quelques années, n’est plus compatible.
Heureusement, un addon permet de faire la même chose avec Icinga, un fork de Nagios. On est donc parti pour une installation d’Icinga.

Avant de commencer, je suis passé récemment sur Debian 9 (Stretch) et donc également sur PHP 7.0 (sur Debian 8 c’était PHP 5). Si vous êtes encore sous Debian 8, il vous faudra donc adapter certaines étapes.
Comme d’hab, toutes les commandes sont à lancer en root.
Ceci étant dit, on peut commencer.

1) Installation

La version d’Icinga présente dans les dépôts de Debian 9 datant un peu, on va récupérer la version directement du dépôt d’Icinga. On va commencer par importer la clé d’Icinga, servant à vérifier les paquets. Lancez la commande wget -O - https://packages.icinga.com/icinga.key | apt-key add - .
Maintenant ouvrez le fichier /etc/apt/sources.list et ajoutez à la fin les lignes suivantes :

[pastacode lang=”bash” manual=”%23%20d%C3%A9p%C3%B4t%20Icinga%0Adeb%20http%3A%2F%2Fpackages.icinga.com%2Fdebian%20icinga-stretch%20main%0Adeb-src%20http%3A%2F%2Fpackages.icinga.com%2Fdebian%20icinga-stretch%20main” message=”” highlight=”” provider=”manual”/]

Le dépôt d’Icinga est maintenant rajouté dans notre liste de dépôts. Le problème, c’est que si vous essayez d’installer Icinga, Debian va vous installer la version contenue dans le dépôt Debian au lieu de la version contenue dans le dépôt d’Icinga. Pourquoi ? Car il y a un système de priorité. Tapez la commande aptitude versions icinga2. Vous allez avoir ceci qui va s’afficher :

[pastacode lang=”bash” manual=”p%20%20%202.6.0-2%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20stable%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20990%0Ap%20%20%202.6.3-1.stretch%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20icinga-stretch%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20500%0Ap%20%20%202.7.0-1.stretch%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20icinga-stretch%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20500%0Ap%20%20%202.7.1-1.stretch%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20icinga-stretch%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20500%0Ap%20%20%202.7.1-2.stretch%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20icinga-stretch%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20500%0Ap%20%20%202.7.2-1.stretch%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20icinga-stretch%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20500″ message=”” highlight=”” provider=”manual”/]

Cette commande vous affiche les différentes versions du paquet disponibles dans les dépôts. Voici à quoi correspondent les colonnes :

  • La lettre de la première colonne correspond à l’état du paquet : p veut dire “pas installé”, i “installé” et A “installé automatiquement” (vous avez demandé l’installation d’un paquet x qui a besoin du paquet y pour fonctionner, le paquet y va donc être installé automatiquement).
  • La deuxième colonne correspond à la version du paquet
  • La troisième colonne correspond au dépôt. Stable correspond au dépôt de la version Debian, donc Debian 9 dans mon cas. Icinga-stretch correspond au dépôt de Icinga qu’on a ajouté précédemment. On voit que ce dépôt contient 5 versions du paquet icinga2
  • La dernière colonne correspond à la priorité. Les dépôts de la distribution ont une priorité de 990. Les dépôts ajoutés ont une priorité de 500.

Je vous fait grâce des détails du fonctionnement des priorités, mais un paquet avec une priorité de 500 ne sera jamais installé si un paquet identique avec  une priorité de 990 est présent dans un autre dépôt. Même si le paquet avec une priorité de 550 est plus récent (comme c’est le cas ici).
Il existe évidemment des options sur aptitude ou apt-get permettant de forcer l’utilisation d’un dépôt de moindre priorité pour récupérer le paquet le plus récent. Mais c’est quand même mieux quand c’est automatique. On va donc expliquer à Debian qu’on veut toujours utiliser le dépôt icinga-stretch pour l’installation d’Icinga.

Lancez la commande nano /etc/apt/preferences (c’est normal que le fichier soit vide) et ajoutez les lignes suivantes :

[pastacode lang=”bash” manual=”Package%3A%20*icinga*%0APin%3A%20release%20a%3Dicinga-stretch%0APin-Priority%3A%20990″ message=”” highlight=”” provider=”manual”/]

La première ligne indique que cette règle concerne tous les paquets dont le nom contient icinga.
La seconde ligne indique le dépôt affecté par cette règle (ici le dépôt icinga-stretch)
Et la dernière ligne indique la priorité à donner aux paquet respectant cette règle.
Pour résumé, tous les paquets dont le nom contient icinga (le dépôt icinga-stretch ne contient que des paquet dont le nom contient icinga) et qui sont présent dans le dépôt icinga-stretch voient leur priorité passée de 500 (valeur par défaut) à 990. Comme ils se retrouvent avec la même priorité que celle des paquets issues du dépôt Debian, s’ils sont plus récents ils seront installés à la place.

Un petit coup de aptitude update et si vous relancez la commande aptitude versions icinga2 vous verrez que les priorités sont passés de 500 à 990. On peut donc passer à l’installation.

Lancez la commande aptitude install icinga2 icingaweb2 icinga2-ido-mysql monitoring-plugins icingaweb2-module-monitoring icingacli. Icingaweb2 est l’interface web de Icinga et monitoring-plugins est une collection de plugins compatible Nagios/Icinga. Vous allez voir des fenêtres apparaître.

Répondez “Oui”.

Choisissez un mot de passe puis retapez le dans le fenêtre d’après.

Choisir “Oui”.

2) Configuration

L’installation étant terminée, on va passer à la configuration.

Une fois l’installation terminé, lancez la commande icingacli module enable setup  puis icingacli setup token create pour générer un token afin de vous identifier plus tard sur l’interface (retenez le token).

Sur Debian, on doit créer la base de donnée à la main. Lancez la commande mysql -u root -p puis rentrez le mot de passe de l’administrateur mysql. Une fois connecté à mysql, lancez la commande CREATE DATABASE icingaweb2; pour créer la base de donnée icingaweb2. Lancez ensuite la commande GRANT ALL ON icingaweb2.* TO icingaweb2@localhost IDENTIFIED BY 'motdepasse'; pour créer un administrateur local de cette base (changez motdepasse par votre mot de passe). Tapez “quit” pour quitter mysql.

Il reste une dernière chose à faire, c’est configurer l’API Icinga 2 pour le monitoring.
Sur votre serveur, lancez la commande icinga2 api setup. Ouvrez ensuite le fichier /etc/icinga2/conf.d/api-users.conf et modifiez le afin d’avoir ceci :

[pastacode lang=”bash” manual=”%2F**%0A%20*%20The%20APIUser%20objects%20are%20used%20for%20authentication%20against%20the%20API.%0A%20*%2F%0Aobject%20ApiUser%20%22fate%22%20%7B%0A%20%20password%20%3D%20%22motdepasse%22%0A%20%20%2F%2F%20client_cn%20%3D%20%22%22%0A%0A%20%20permissions%20%3D%20%5B%20%22status%2Fquery%22%2C%20%22actions%2F*%22%2C%20%22objects%2Fmodify%2F*%22%2C%20%22objects%2Fquery%2F*%22%20%20%5D%0A%7D” message=”” highlight=”” provider=”manual”/]

Remplacez l’utilisateur et le mot de passe par celui qui vous avez choisi. Redémarrez Icinga avec la commande systemctl restart icinga2.service.

Allez sur la page votrenomdedomaine/icingaweb2/setup.

 

Rentrez le token créé précédemment puis cliquez sur Next.

 

Choisissez les modules que vous voulez (activer au moins “Monitoring”) puis appuyez sur “Next”. Pour ma part j’ai activé Doc, Monitoring et Translation.

 

Sur cette page, Icinga va vérifier que vous ayez les pré-requis nécessaire au bon fonctionnement du logiciel. Pour ma part j’avais l’erreur The PHP config `date.timezone' is not defined. et le warning The PHP module PDO-PostgreSQL is missing. Comme j’utilise une base de donnée mysql, je n’ai pas besoin du module PostgreSQL, mais j’ai besoin de corriger l’erreur de la timezone.

Ouvrez le fichier /etc/php/7.0/apache2/php.ini et remplacez la ligne ;date.timezone = par date.timezone = Europe/Paris (modifiez par le bon fuseau si vous n’habitez pas en France). Enregistrez la modif puis redémarrez Apache avec la commande systemctl restart apache2.service.
Sur la page d’Icinga, cliquez sur Refresh. L’erreur devrait avoir disparue et vous devriez pouvoir cliquer sur Next.

 

Choisissez “database” pour le type d’authentification puis cliquez sur Next.

 

Remplissez les champs comme sur l’image et dans Password le mot de passe que vous avez choisi lorsque nous avons créé la base de donnée manuellement. Puis cliquez sur Validate Configuration. Si tout fonctionne, vous aurez le message “The configuration has been successfully validated.” comme sur l’image et vous pourrez cliquer sur Next.

 

Laissez le nom par défaut et cliquez sur “Next”.

 


Remplissez les champs en mettant le nom et le mot de passe que vous souhaitez, puis cliquez sur “Next”.

Sur la fenêtre d’après, laissez tout par défaut et cliquez sur “Next”

Cliquez également sur “Next” sur la fenêtre d’après ainsi que celle qui suit.

Sur la fenêtre “Monitoring Backend” laissez les valeurs par défaut et cliquez sur “Next”

 

Remplissez les champs comme sur l’image et mettant le mot de passe que vous avez choisi lors de l’installation de icinga2-ido-mysql. Cliquez sur “Validate Configuration” et vous devriez avoir le message “The configuration has been successfully validated.”. Cliquez sur Next.

 


Remplissez les champs comme sur l’image en mettant le nom et le mot de passe que vous voulez, puis cliquez sur “Next”.

Laissez les valeurs par défaut sur la prochaine fenêtre et cliquez sur “Next”.

Sur la fenêtre suivante, cliquez sur “Finish”. Vous pouvez maintenant vous connectez à Icinga.

Icinga fonctionne avec des modules, tous désactivés par défaut (du moins sur mon installation). Pour les installer, il faut utiliser la commande icinga2 feature enable nomdumodule. Pour voir tous les modules disponibles, tapez la commande icinga2 feature list. Vous verrez les modules actifs et ceux inactifs. Il faut au moins que Checker, api, ido-mysql et notification soient actifs. Voici les modules que j’ai activés : api checker ido-mysql mainlog notification. Mainlog servent à afficher les erreurs dans les fichiers de log.
Pensez à redémarrer le Icinga avec la commande systemctl restart icinga2.service

Cet article étant suffisamment long, on verra le fonctionnement en détails de Icinga (comment rajouter des services, modifier les services existant, etc) dans un prochain article.

2 réponses pour “Monitoring avec Icinga 2”

  1. Ping : Modifier un service sur Icinga2

  2. Ping : Icinga2 en configuration maître/client

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.