Icinga: Supervision de l'infrastructure serveur et actif réseau

Afin d'avoir un seul point d'acces de supervision, d'autres solution autonomes seront intégrées dans l'interface de Icinga tel que Nagvis et Grafana. Ces éléments font l'objet d'une page dédiée car autonomes et non indispensables au fonctionnement de Icinga.

Prérequis machine serveur

Pour une raison d'harmonie des sytèmes sur les serveurs Linux, nous utiliserons Debian.

Le fait que cela soit une VM les besoins matériels sont facilement modifiables (sauf redimensionnement du disque virtuel), nous commencerons donc avec:

  • 2 vCPU
  • 4 Go de RAM
  • 150 Go de disque virtuel

Le serveur sera connecté sur le réseau serveur afin de pouvoir communiquer avec tous les serveurs et matériels supervisés.

Installation de Icinga 2

source: https://icinga.com/docs/icinga-2/latest/doc/01-about/

Pour Debian: https://icinga.com/docs/icinga-2/latest/doc/02-installation/01-Debian/

On ajoute le dépot en copiant les commandes données dans un terminal shell en tant que root

apt update
apt -y install apt-transport-https wget gnupg

commande obscure qui attend quelque chose et après avoir fait Entrée il veut un fichier !

wget -O - https://packages.icinga.com/icinga.key | gpg --dearmor -o /usr/share/keyrings/icinga-archive-keyring.gpg

peut être remplacé par:

wget https://packages.icinga.com/icinga.key
cat inciga.key|gpg --dearmor -o /usr/share/keyrings/icinga-archive-keyring.gpg
rm -f incinga.key
DIST=$(awk -F"[)(]+" '/VERSION=/ {print $2}' /etc/os-release); \
echo "deb [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/debian icinga-${DIST} main"> \
/etc/apt/sources.list.d/${DIST}-icinga.list
echo "deb-src [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/debian icinga-${DIST} main">> \
/etc/apt/sources.list.d/${DIST}-icinga.list

apt update

apt install icinga2

Sans plugins on a une coquille vide de icinga2. Les plugins permettent de superviser,monitorer les services des cibles. Avant on installait les plugins Nagios. Là c'est intégré !!! Aolrs on les installe.

source: https://icinga.com/docs/icinga-2/latest/doc/02-installation/01-Debian/#set-up-check-plugins

apt install monitoring-plugins

IcingaDB (pré-requis 2) et d'autres fonctionnaltés nécessitent que icinga API soit configuré pour dialoguer avec Icinga2 donc vaut mieut le faire tout de suite.

icinga2 api setup

les informations générées sont stockées dans /etc/icinga2/conf.d/api-users.conf

Et enfin on redémarre le service icinga2

systemctl restart icinga2

Voilà pré-requis 1 (Icinga2) installé !

Installation de IcingaDB et Database

Sans base de donnée de stockage… pas d'Icinga2, d'interaction ou d'interface web !!!

Avant out icingaDB nécessite une base de donnée hein! Donc il faut avoir une base de donnée. Je suis plus à l'aise avec MySQL ou MariaDB un fork de MySQL (avec les meme commandes). On vérifie ou installe MariaDB.

source: https://aymeric-cucherousset.fr/en/install-mariadb-on-debian-11/

apt install mariadb-server

On automatise son démarrage

systemctl enable mariadb
systemctl start mariadb

On vérifie que MariaDB est opérationnelle

systemctl status mariadb

Et on sécurise MariaDB. Pour le compte root répondre “n” et le reste en répondant Y à toutes les questions.

mysql_secure_installation

Si on est logué avec un compte standard, on ne peut pas se connectrer à mariadb comme ça :

mysql -u root -p

Il faut d'abord se logué avec root puis se connecter à mariadb

su -
mysql -u root -p

Bon on peut passé à l'installation de icingaDB.

source: https://icinga.com/docs/icinga-db/latest/doc/01-About/

Pour Debian: https://icinga.com/docs/icinga-db/latest/doc/02-Installation/03-Debian/

Si on est arrivé là c'est qu'on a déjà ajouté le dépot. Donc on installe

apt install icingadb

(A ce jour la version de MariaDB est la 10.5.23)

On peut configurer la base de donnée pour icingaDB directement

mysql -u root -p

Une fois dans connecté à mariadb on créer la base de donnée. Ici un compte icingadb va etre céé, il faut lui associer un mot de passe! Par défaut c'est “CHANGEME”

CREATE DATABASE icingadb;
CREATE USER 'icingadb'@'localhost' IDENTIFIED BY 'CHANGEME';
GRANT ALL ON icingadb.* TO 'icingadb'@'localhost';

On quitte MariaDB

quit

et on lance la création des tables dans la base de donnée

mysql -u root -p icingadb </usr/share/icingadb/schema/mysql/schema.sql

Si on a oublié de changer le mot de passe pour le compte icingadb (qui est CHANGEME), on peut le faire en se connectant à mariaDB et exécuter:

SET PASSWORD FOR 'icingadb'@'localhost'=PASSWORD('newpassword');

Ce nouveau newpassword doit etre renseigné dans le fichier de configuration de icingaDB.

vi /etc/icingadb/config.yml

Pour finir on automatise le démarrage de icingaDB

systemctl enable --now icingadb

Redis serveur

Avec la nouvelle version de icinga2, il est nécessaire d'avoir Redis Server qui communique entre icingaDB et incigaDB WEB pour l'affichage web. Il faut donc installer Redis Server !

source: https://icinga.com/docs/icinga-2/latest/doc/02-installation/01-Debian/#set-up-redis-server

apt install icingadb-redis

On automatise le démarrage

systemctl enable --now icingadb-redis

Si un problème de lancement apparait avec une erreur sur l'alias lancez

systemctl enable --now icingadb-redis-server

(Vu qu'on installe Redis sur le meme serveur que icinga2, pas besoin de configuter le remote acces de Redis)

On controle le fonctionnement de redis

systemctl status icingadb-redis

Icinga DB Feature

Il faut activer la publication des données de icingaDB vers icingadb-Redis par Icinga 2 avec l'API grâce à “Icinga DB Feature”: https://icinga.com/docs/icinga-2/latest/doc/14-features/#icinga-db

icinga2 feature enable icingadb

Maintenant que icingadb-redis est opérationnel, il faut relancer icingaDB pour q'il communique.

systemctl restart icingadb
Sauvegarde

S'assurer de sauvegarder ces répertoires:

  • Configuration : /etc/icinga2
  • Certificat: /var/lib/icinga2/ca (Master CA key pair) et /var/lib/icinga2/certs (node certificates)
  • Le runtime: /var/lib/icinga2

Installation de Icinga Web 2

Avant de commencer l'installation de Icinga Web 2 on controle que tout est opérationnel

systemctl status icingadb-redis
systemctl status icingadb
systemctl status icinga2

un redémarrage pour etre propre…

On dispose maintenant du socle de monitoring Icinga 2. En l'état actuel c'est plus du log et donc il faut aller les consulter manuellement, pas très pratique pour de la supervision! Pour avoir une interface visuel on doit installer Icinga Web 2 au dessus de ce socle. Depuis l'interface on pourra configure Icing2 grace Incinga Director (ou si on préfère avec du fichier texte il faudra Icinga DSL).

Commençons…

Si on est arrivé ici, c'est qu'on à déjà ajouté les sources apt (sinon voir en début de page). Qui dit interface web dit un serveur web. On peut au choix utiliser Apache ou Nginx avec PHP ( version supérieure ou égale à 7.2 ). Comme Icinga Web 2 est déjà préconfiguré avec Apache on va l'utiliser !!!

Apache et PHP

apt install apache2

On active 2 modules qui sont souvent utiles (mais pas un prérequies pour icinga web)

a2enmod rewrite
a2enmod ssl

On installe PHP avec les modules nécessaires pour communiquer avec MariaDB (déjà installée avec icinga2) et l'active directory. On pourra installer des module php complémentaire plus tard si besoin.

apt-get install php libapache2-mod-php php-mysql php-ldap php-imagick

On prépare une page de test et active le https par par défaut

rm /var/www/html/index.html
echo "<?php phpinfo(); ?>"> /var/www/html/index.php
a2ensite default-ssl

On démarre apache

systemctl start apache2
systemctl status apache2

Si apache fonctionne on devrait avoir une page résumé de PHP installé si on va sur: https://@IP_du_serveur

Remarque: En cas d'erreur en https: ssl_error_rx_record_too_long

remplacez _ckgedit_QUOTdefaultckgedit> par “*” dans le fichier default-ssl.conf

 vi /etc/apache2/sites-available/default-ssl.conf

Icinga web 2

L'installation de icinga web est on ne peut plus simple!

https://icinga.com/docs/icinga-web/latest/doc/02-Installation/01-Debian/

apt-get install icingaweb2 icingacli

(icingacli permet de configurer la mise en route de icinga web)

Vérifiez que Apache a bien redémarré sinon le faire manuellement.

systemctl restart apache2

Paramétrage de icinga web

A la premiere connexion sur la page web de icinga, il sera demandé un “token”

icingacli setup token create

en cas d'oubli on peut retrouver le token avec la commande

icingacli setup token show

Il faut créer une base de donnée dans MariaDB pour l'interface web.

mysql -u root -p
CREATE DATABASE icingaweb2;

On donne acces à toutes les tables de la base à l'utilisateur incigaweb2 ayant le password CHANGEME… Donc à modifier !!!!

GRANT ALL ON icingaweb2.* TO icingaweb2@localhost IDENTIFIED BY 'icingaweb2@Bee!';

(CHANGEME est remplacé par “icingaweb2@Bee!” pour l'installation)

Et voilà! Le serveur en lui même est installé. Maintenant direction sur la page web de Icinga Web 2 pour configurer l'application. Il faudra renseigner le token créé plus haut pour commencé.

https://@ip_du_serveur/icingaweb2/setup

Icingadb-web module

Afin d'avoir toutes les fonctionnalités d'affichage de icinga web, on installe icingadb-web qui communiquera avec redis et les autres base de données de icingadb.

source: https://icinga.com/docs/icinga-db-web/latest/doc/02-Installation/Debian/

apt install icingadb-web

Sa configration doit se faire depuis l'interface web de icinga web quand il sera opérationnel (https://icinga.com/docs/icinga-db-web/latest/doc/03-Configuration/)

Icinga DSL

source: https://icinga.com/docs/icinga-2/latest/doc/04-configuration/#configuration

Il n'y a rien à installer. C'est la manière de configurer icinga2 de base: par fichier texte.

A terme, pour ne pas faire d'erreur de synthaxe ou copier/coller de fichier de configuration on passera par Icinga Director depuis l'interface web de icinga. Donc arrivée à cette partie, l'application Icinga 2 est totalement opérationnel après sa configuration.

Icinga Director

source: https://icinga.com/docs/icinga-director/latest/doc/01-Introduction

Debian: https://icinga.com/docs/icinga-director/latest/doc/02-Installation/Debian/

Incinga Web 2 DOIT être fonctionnel avant d'installer Icinga Director!

Director est un module de Icinga Web qui permet une configuration graphique des cibles à superviser via l'API. Il est indépendant de la configuration manuelle (par fichier stocké dans /etc/icinga2/) et peut fonctionner en parallèle.

Director NE GERE PAS les configurations manuelles existantes par fichier.

Son installation est très simple (après jout du dépot, ce qui est déjà fait).

apt install icinga-director

Il faut ajouter une base de donnée (MariaDB pour notre cas) pour Director. Pensez à changer le mot de passe! (par défaut: CHANGE, ici changé par directorInciga@Bee! )

mysql -e "CREATE DATABASE director CHARACTER SET 'utf8';
  CREATE USER director@localhost IDENTIFIED BY 'directorInciga@Bee!';
  GRANT ALL ON director.* TO director@localhost;"

https://icinga.com/docs/icinga-director/latest/doc/02-Installation/Debian/#configuring-icinga-director

On vient de créer la base de donnée qui sera utilisée pour par director pour gérer sa configuration. Il faut configure director pour qu'il puisse utiliser cette base de donné. Pour cela on peut soit utiliser le mode fichier (mode automation) ou par l'interface Icinga web 2.

En bas à gauche sur la roue crantée, à coté de votre login, choisir Configuration puis Application et enfin l'onglet Ressources pour créer une nouvelle ressource.On donne un nom à cette ressource puis les informations de connexion à la base de donnée, les mêmes qui ont permis de créer la base de donné en ligne de commande.

Maintenant on configure Director depuis le menu de gauche “Icinga Director”. Il faut renseigner “DB Ressource” le nom de la ressource qui vient d'être créée. La structure va étre créée dans la table.

pour le Kickstart wizard: https://icinga.com/docs/icinga-director/latest/doc/04-Getting-started/

La partie Kickstart wizard va permettre à Director d'importer les informations de configuration qui se font par fichier dans sa base.

“…

If you are using a fresh Icinga 2 installation or a standalone setup with other ways of checking your clients, you will have to create them.

The easiest way to set up Icinga 2 with a zone and endpoint is by running the Icinga 2 Setup Wizard.

…”

En résumé il faut générer les informations nécessaires dans le fichier /etc/icinga2/zones.conf avec

icinga2 node wizard

(laisser les valeurs par défaut proposée)

Puis ajouter un utilisateur dans /etc/icinga2/conf.d/api-users.conf

Changez le password.

object ApiUser "director" {
  password = "***"
  permissions = [ "*" ]
  //client_cn = ""
}

Maintenant relancez icinga2

systemctl restart icinga2

Enfin dans la partie Kickstart wizard renseignez les informations qui viennent dêtre créées. Une fois que le “Run import” est terminé, dans “Activity log” on doit avoir toutes les commandes de supervision importées dans director.

Dernière modification : le 2024/04/28