Installation Icinga · 27 min read · Nov 07, 2025

Comment installer le logiciel de surveillance Icinga 2 sur Ubuntu 22.04 LTS

Icinga2 est un logiciel de surveillance réseau gratuit et open-source qui peut vérifier la disponibilité des ressources du réseau et notifier les utilisateurs des pannes. Vous pouvez surveiller les services réseau (SMTP, POP3, HTTP, NNTP, ping), les ressources hôtes (utilisation du CPU, utilisation du disque) et les composants réseau (commutateurs, routeurs, capteurs de température et d’humidité) en utilisant Icinga2. Il peut être intégré avec des plugins Nagios.

Dans le tutoriel suivant, vous apprendrez à installer Icinga2 sur un serveur Ubuntu 22.04 et comment le connecter à un nœud client. Au lieu du serveur Apache par défaut, nous utiliserons Nginx pour exécuter Icinga2 Web.

Prérequis

  • Deux machines exécutant Ubuntu 22.04. L’une d’elles agira comme serveur maître et l’autre comme client pour la surveillance.
  • Un utilisateur non-root avec des privilèges sudo sur les deux serveurs.
  • Un nom de domaine entièrement qualifié (FQDN) pour le serveur maître, icinga.example.com et le nœud client, client.example.com.
  • Assurez-vous que tout est à jour. $ sudo apt update $ sudo apt upgrade
  • Quelques paquets dont votre système a besoin. $ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y Certains de ces paquets peuvent déjà être installés sur votre système.

Étape 1 - Configurer le pare-feu sur le serveur maître

La première étape consiste à configurer le pare-feu. Ubuntu est livré avec ufw (Uncomplicated Firewall) par défaut.

Vérifiez si le pare-feu est en cours d’exécution.

$ sudo ufw status

Vous devriez obtenir la sortie suivante.

Status: inactive

Autorisez le port SSH afin que le pare-feu ne rompe pas la connexion actuelle lors de son activation.

$ sudo ufw allow OpenSSH

Autorisez le port 5665 qui est requis par le client Icinga2 pour se connecter au serveur.

$ sudo ufw allow 5665

Autorisez également les ports HTTP et HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Activez le pare-feu

$ sudo ufw enable
La commande peut perturber les connexions ssh existantes. Poursuivre l'opération (y|n)? y
Le pare-feu est actif et activé au démarrage du système

Vérifiez à nouveau l’état du pare-feu.

$ sudo ufw status

Vous devriez voir une sortie similaire.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
5665                       ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)
5665 (v6)                  ALLOW       Anywhere (v6)

Étape 2 - Installer MySQL

Ubuntu 22.04 est livré avec la dernière version de MySQL. Vous pouvez l’installer avec une seule commande.

$ sudo apt install mysql-server

Vérifiez la version de MySQL.

$ mysql --version
mysql  Ver 8.0.32-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))

Cette étape est nécessaire pour les versions de MySQL 8.0.28 et supérieures. Entrez dans le shell MySQL.

$ sudo mysql

Exécutez la commande suivante pour définir le mot de passe de votre utilisateur root. Assurez-vous qu’il contient un mélange de chiffres, de majuscules, de minuscules et de caractères spéciaux.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';

Quittez le shell.

mysql> exit

Exécutez le script d’installation sécurisée de MySQL.

$ sudo mysql_secure_installation

Tout d’abord, on vous demandera votre mot de passe root. Entrez-le. Ensuite, on vous demandera d’installer le composant de validation des mots de passe. Il vérifie la force des mots de passe utilisés dans MySQL. Appuyez sur Y pour l’installer. Ensuite, on vous demandera de définir le niveau de la politique de validation des mots de passe. Choisissez 2 car c’est le plus fort.

Sécurisation du déploiement du serveur MySQL.

Entrez le mot de passe pour l'utilisateur root :

LE COMPOSANT DE VALIDATION DES MOTS DE PASSE peut être utilisé pour tester les mots de passe
et améliorer la sécurité. Il vérifie la force du mot de passe
et permet aux utilisateurs de définir uniquement les mots de passe suffisamment sécurisés. Souhaitez-vous configurer le composant de validation des mots de passe ?

Appuyez sur y|Y pour Oui, toute autre touche pour Non : Y

Il existe trois niveaux de politique de validation des mots de passe :

FAIBLE    Longueur >= 8
MOYENNE Longueur >= 8, numérique, casse mixte et caractères spéciaux
FORT Longueur >= 8, numérique, casse mixte, caractères spéciaux et fichier dictionnaire

Veuillez entrer 0 = FAIBLE, 1 = MOYENNE et 2 = FORT : 2
Utilisation du mot de passe existant pour root.

Force estimée du mot de passe : 100

Ensuite, entrez N pour refuser de changer votre mot de passe root. Entrez également Y pour supprimer les utilisateurs anonymes, interdire les connexions root à distance, supprimer la base de données de test et recharger les tables de privilèges.

Changer le mot de passe pour root ? ((Appuyez sur y|Y pour Oui, toute autre touche pour Non) : N

 ... saut.
Par défaut, une installation de MySQL a un utilisateur anonyme,
permettant à quiconque de se connecter à MySQL sans avoir à créer un compte utilisateur pour eux. Ceci est destiné uniquement aux tests, et pour faciliter un peu l'installation.
Vous devriez les supprimer avant de passer à un environnement de production.

Supprimer les utilisateurs anonymes ? (Appuyez sur y|Y pour Oui, toute autre touche pour Non) : Y
Succès.

Normalement, root ne devrait être autorisé à se connecter que depuis
'localhost'. Cela garantit que quelqu'un ne peut pas deviner le mot de passe root depuis le réseau.

Interdire la connexion root à distance ? (Appuyez sur y|Y pour Oui, toute autre touche pour Non) : Y
Succès.

Par défaut, MySQL est livré avec une base de données nommée 'test' à laquelle
quiconque peut accéder. Ceci est également destiné uniquement aux tests,
et doit être supprimé avant de passer à un environnement de production.

Supprimer la base de données de test et l'accès à celle-ci ? (Appuyez sur y|Y pour Oui, toute autre touche pour Non) : Y
 - Suppression de la base de données de test...
Succès.

 - Suppression des privilèges sur la base de données de test...
Succès.

Recharger les tables de privilèges garantira que tous les changements
faits jusqu'à présent prendront effet immédiatement.

Recharger les tables de privilèges maintenant ? (Appuyez sur y|Y pour Oui, toute autre touche pour Non) : Y
Succès.

Tout est fait !

Étape 3 - Configurer MySQL

Connectez-vous au shell MySQL. Entrez votre mot de passe root lorsqu’on vous le demande.

$ sudo mysql -u root -p

Créez la base de données Icinga.

mysql> CREATE DATABASE icinga2;

Créez le compte utilisateur SQL pour Icinga2. Ne changez pas la base de données et le nom d’utilisateur car ils sont déjà définis par défaut. Si vous souhaitez les changer, vous devrez effectuer des étapes supplémentaires lors de l’installation du pilote MySQL à l’étape 5. Entrez le mot de passe, et vous obtiendrez une erreur et on vous demandera ensuite de reconfigurer où vous pourrez spécifier votre nom de base de données et vos utilisateurs personnalisés.

mysql> CREATE USER 'icinga2'@'localhost' IDENTIFIED BY 'Your_password2';

Accordez tous les privilèges sur la base de données à l’utilisateur.

mysql> GRANT ALL PRIVILEGES ON icinga2.* TO 'icinga2'@'localhost';

Rafraîchissez les privilèges des utilisateurs.

mysql> FLUSH PRIVILEGES;

Quittez le shell.

mysql> exit

Étape 4 - Installer Icinga2 et les plugins de surveillance sur le serveur maître

Nous utiliserons le dépôt officiel d’Icinga2 pour l’installation. Téléchargez et importez la clé GPG d’Icinga2.

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

Exécutez les commandes suivantes pour créer et ajouter les informations du dépôt Icinga2 à la liste des sources APT.

$ echo "deb [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/ubuntu icinga-`lsb_release -cs` main" | sudo tee /etc/apt/sources.list.d/$(lsb_release -cs)-icinga.list
$ echo "deb-src [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] http://packages.icinga.com/ubuntu icinga-`lsb_release -cs` main" | sudo tee -a /etc/apt/sources.list.d/$(lsb_release -cs)-icinga.list

Mettez à jour la liste des dépôts du système.

$ sudo apt update

Installez Icinga2 et les plugins de surveillance.

$ sudo apt install icinga2 monitoring-plugins -y

Étape 5 - Installer le pilote IDO MySQL sur le serveur maître

Pour qu’Icinga2 fonctionne, il a besoin d’une base de données. Pour cela, nous devons installer le pilote IDO MySQL et configurer la connexion à la base de données. Exécutez la commande suivante pour installer le pilote MySQL.

$ sudo apt install -y icinga2-ido-mysql

On vous demandera de configurer le pilote et de créer une base de données à l’aide de l’utilitaire dbconfig-common. Sélectionnez Oui pour continuer.

Ensuite, on vous demandera le mot de passe MySQL pour la base de données icinga2. Entrez le mot de passe configuré à l’étape 3 pour continuer.

Entrez le mot de passe de la base de données pour Icinga2

On vous demandera de confirmer le mot de passe à nouveau.

Confirmer le mot de passe Icinga2

Ensuite, on vous demandera d’activer la fonctionnalité ido-mysql. Sélectionnez Oui pour continuer.

Fonctionnalité IDO-MySQL d'Icinga

Vous pouvez vérifier les détails de la base de données dans le fichier /etc/icinga2/features-available/ido-mysql.conf.

$ cat /etc/icinga2/features-available/ido-mysql.conf
/**
 * La bibliothèque db_ido_mysql implémente la fonctionnalité IDO
 * pour MySQL.
 */

library "db_ido_mysql"

object IdoMysqlConnection "ido-mysql" {
  user = "icinga2",
  password = "Your_password2",
  host = "localhost",
  database = "icinga2"
}

Activez la fonctionnalité ido-mysql.

$ sudo icinga2 feature enable ido-mysql

Redémarrez le service Icinga2.

$ sudo systemctl restart icinga2

Vérifiez l’état du service.

$ sudo systemctl status icinga2
? icinga2.service - Système de surveillance des hôtes/services/réseaux Icinga
     Loaded: loaded (/lib/systemd/system/icinga2.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/icinga2.service.d
             ??limits.conf
     Active: active (running) since Mon 2023-05-01 08:02:36 UTC; 1s ago
    Process: 9823 ExecStartPre=/usr/lib/icinga2/prepare-dirs /etc/default/icinga2 (code=exited, status=0/SUCCESS)
   Main PID: 9828 (icinga2)
     Status: "Démarrage terminé."
      Tasks: 10
     Memory: 17.6M
        CPU: 657ms
     CGroup: /system.slice/icinga2.service
             ??9828 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
             ??9846 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
             ??9849 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log

Étape 6 - Configurer l’API Icinga2

Pour gérer et configurer la surveillance Icinga2 via HTTP, vous devez configurer l’API Icinga2. Exécutez la commande suivante pour activer l’API Icinga2, générer des certificats TLS pour Icinga2 et mettre à jour les configurations d’Icinga2.

$ sudo icinga2 api setup

Vous obtiendrez une sortie similaire.

information/cli: Génération d'une nouvelle CA.
information/base: Écriture de la clé privée dans '/var/lib/icinga2/ca//ca.key'.
information/base: Écriture du certificat X509 dans '/var/lib/icinga2/ca//ca.crt'.
information/cli: Génération d'un nouveau CSR dans '/var/lib/icinga2/certs//icinga.example.com.csr'.
information/base: Écriture de la clé privée dans '/var/lib/icinga2/certs//icinga.example.com.key'.
information/base: Écriture de la demande de signature de certificat dans '/var/lib/icinga2/certs//icinga.example.com.csr'.
information/cli: Signature du CSR avec la CA et écriture du certificat dans '/var/lib/icinga2/certs//icinga.example.com.crt'.
information/pki: Écriture du certificat dans le fichier '/var/lib/icinga2/certs//icinga.example.com.crt'.
information/cli: Copie du certificat CA dans '/var/lib/icinga2/certs//ca.crt'.
information/cli: Ajout du nouvel ApiUser 'root' dans '/etc/icinga2/conf.d/api-users.conf'.
information/cli: Lecture de '/etc/icinga2/icinga2.conf'.
information/cli: Activation de la fonctionnalité 'api'.
Activation de la fonctionnalité api. Assurez-vous de redémarrer Icinga 2 pour que ces changements prennent effet.
information/cli: Mise à jour de la constante 'NodeName' dans '/etc/icinga2/constants.conf'.
information/cli: Création d'un fichier de sauvegarde '/etc/icinga2/constants.conf.orig'.
information/cli: Mise à jour de la constante 'ZoneName' dans '/etc/icinga2/constants.conf'.
information/cli: Le fichier de sauvegarde '/etc/icinga2/constants.conf.orig' existe déjà. Saut de la sauvegarde.
Fait.

Maintenant, redémarrez votre démon Icinga 2 pour terminer l'installation !

La commande ci-dessus crée un fichier /etc/icinga2/conf.d/api-users.conf avec l’utilisateur par défaut root ayant tous les droits sur l’API Icinga2. Nous avons besoin d’un nouvel utilisateur avec les permissions minimales requises par Icinga Web.

Ouvrez le fichier api-users.conf pour l’éditer.

$ sudo nano /etc/icinga2/conf.d/api-users.conf

Ajoutez le code suivant à la fin du fichier.

/** api pour icingaweb2 */
object ApiUser "icingaweb2" {
  password = "PassWordApiIcingaWeb2"
  permissions = [ "status/query", "actions/*", "objects/modify/*", "objects/query/*" ]
}

Prenez note des identifiants qui seront nécessaires plus tard pour accéder au site web. Le serveur API Icinga2 écoute par défaut sur le port 5665. Redémarrez le service pour que les changements prennent effet.

$ sudo systemctl restart icinga2

L’étape suivante consiste à installer l’interface Web Icinga. Elle est préconfigurée pour Apache mais nous utiliserons le serveur Nginx. Par conséquent, nous devons d’abord installer Nginx et les certificats SSL.

Étape 7 - Installer Nginx

Ubuntu 22.04 est livré avec une version plus ancienne de Nginx. Pour installer la dernière version, vous devez télécharger le dépôt officiel de Nginx.

Importez la clé de signature de Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Ajoutez le dépôt pour la version stable de Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

Mettez à jour les dépôts du système.

$ sudo apt update

Installez Nginx.

$ sudo apt install nginx

Vérifiez l’installation.

$ nginx -v
nginx version: nginx/1.24.0

Démarrez le serveur Nginx.

$ sudo systemctl start nginx

Étape 8 - Installer SSL

Nous devons installer Certbot pour générer le certificat SSL. Vous pouvez soit installer Certbot en utilisant le dépôt d’Ubuntu, soit obtenir la dernière version en utilisant l’outil Snapd. Nous utiliserons la version Snapd.

Ubuntu 22.04 est livré avec Snapd installé par défaut. Exécutez les commandes suivantes pour vous assurer que votre version de Snapd est à jour.

$ sudo snap install core && sudo snap refresh core

Installez Certbot.

$ sudo snap install --classic certbot

Utilisez la commande suivante pour vous assurer que la commande Certbot peut être exécutée en créant un lien symbolique vers le répertoire /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Exécutez la commande suivante pour générer un certificat SSL.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d icinga.example.com

La commande ci-dessus téléchargera un certificat dans le répertoire /etc/letsencrypt/live/icinga.example.com sur votre serveur.

Générez un certificat de groupe Diffie-Hellman.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Vérifiez le service de planification de renouvellement de Certbot.

$ sudo systemctl list-timers

Vous trouverez snap.certbot.renew.service comme l’un des services programmés pour s’exécuter.

NEXT                        LEFT          LAST                        PASSED         UNIT                     ACTIVATES
------------------------------------------------------------------------------------------------------------------------------------
Mon 2023-05-01 13:37:57 UTC 3h 45min left Mon 2023-05-01 07:20:42 UTC 2h 31min ago   ua-timer.timer           ua-timer.service
Mon 2023-05-01 14:39:29 UTC 4h 47min left Sat 2023-02-04 16:04:18 UTC 2 months ago   motd-news.timer          motd-news.service
Mon 2023-05-01 15:53:00 UTC 6h left       n/a                         n/a            snap.certbot.renew.timer snap.certbot.renew.service

Faites un essai de la procédure pour vérifier si le renouvellement SSL fonctionne correctement.

$ sudo certbot renew --dry-run

Si vous ne voyez aucune erreur, vous êtes prêt. Votre certificat se renouvellera automatiquement.

Étape 9 - Configurer Nginx et PHP

Puisque Icinga est configuré pour Apache, le paquet PHP-FPM n’est pas installé par défaut. Vous aurez également besoin du module PHP Imagick si vous souhaitez exporter les graphiques au format PDF. Exécutez la commande suivante pour installer PHP-FPM et la bibliothèque PHP Imagick.

$ sudo apt install php-fpm php-imagick

Configurer PHP-FPM

Ouvrez le fichier /etc/php/8.1/fpm/pool.d/www.conf.

$ sudo nano /etc/php/8.1/fpm/pool.d/www.conf

Nous devons définir l’utilisateur/groupe Unix des processus PHP sur nginx. Trouvez les lignes user=www-data et group=www-data dans le fichier et changez-les en nginx.

...
; Utilisateur/groupe Unix des processus
; Remarque : L'utilisateur est obligatoire. Si le groupe n'est pas défini, le groupe de l'utilisateur par défaut
;       sera utilisé.
user = nginx
group = nginx
...

Trouvez les lignes listen.owner = www-data et listen.group = www-data dans le fichier et changez-les en nginx.

; Définir les permissions pour le socket unix, si un est utilisé. Dans Linux, les permissions de lecture/écriture
; doivent être définies pour permettre les connexions d'un serveur web. De nombreux
; systèmes dérivés de BSD permettent des connexions indépendamment des permissions. Le propriétaire
; et le groupe peuvent être spécifiés soit par nom, soit par leurs ID numériques.
; Valeurs par défaut : l'utilisateur et le groupe sont définis comme l'utilisateur en cours d'exécution
;                 le mode est défini sur 0660
listen.owner = nginx
listen.group = nginx

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Redémarrez le service PHP-FPM.

$ sudo systemctl restart php8.1-fpm

Configurer Nginx

Créez et ouvrez le fichier /etc/nginx/conf.d/icinga.conf pour l’éditer.

$ sudo nano /etc/nginx/conf.d/icinga.conf

Collez le code suivant dedans.

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  icinga.example.com;

    access_log  /var/log/nginx/icinga.access.log;
    error_log   /var/log/nginx/icinga.error.log;

    # SSL
    ssl_certificate      /etc/letsencrypt/live/icinga.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/icinga.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/icinga.example.com/chain.pem;
    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    resolver 8.8.8.8;

    location ~ ^/index\.php(.*)$ {
        # fastcgi_pass 127.0.0.1:9000;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock; # Dépend de la version PHP
        fastcgi_index index.php;
        # try_files $uri =404;
        # fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME /usr/share/icingaweb2/public/index.php;
        fastcgi_param ICINGAWEB_CONFIGDIR /etc/icingaweb2;
        fastcgi_param REMOTE_USER $remote_user;
    }

    location ~ ^/(.*)? {
        alias /usr/share/icingaweb2/public;
        index index.php;
        rewrite ^/$ /dashboard;
        try_files $1 $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        return 404;
    }
}

# imposer HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  icinga.example.com;
    return 301   https://$host$request_uri;
}

Remarquez que le répertoire racine à utiliser dans la configuration Nginx est /usr/share/icingaweb2/public.

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité une fois terminé.

Ouvrez le fichier /etc/nginx/nginx.conf pour l’éditer.

$ sudo nano /etc/nginx/nginx.conf

Ajoutez la ligne suivante avant la ligne include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Vérifiez la syntaxe du fichier de configuration Nginx.

$ sudo nginx -t
nginx: le fichier de configuration /etc/nginx/nginx.conf a une syntaxe correcte
nginx: le test du fichier de configuration /etc/nginx/nginx.conf est réussi

Redémarrez le service Nginx.

$ sudo systemctl restart nginx

Étape 10 - Préparer la configuration Web

Avant d’accéder à Icinga Web, nous devons le configurer. Lors de l’utilisation d’Icinga Web, vous devez vous authentifier à l’aide d’un jeton. Générez le jeton en utilisant la commande suivante.

$ sudo icingacli setup token create
Le jeton de configuration nouvellement généré est : 3c4d4e155635f512

Notez le jeton car vous en aurez besoin plus tard. Vous pouvez toujours le récupérer plus tard en utilisant la commande suivante.

$ sudo icingacli setup token show
Le jeton de configuration actuel est : 3c4d4e155635f512

L’étape suivante consiste à créer une base de données et un utilisateur de base de données. Connectez-vous au shell MySQL.

$ sudo mysql -u root -p

Créez la base de données Icinga Web.

mysql> CREATE DATABASE icingaweb2;

Créez le compte utilisateur SQL pour Icinga Web.

mysql> CREATE USER 'icingaweb2'@'localhost' IDENTIFIED BY 'Your_password3';

Accordez tous les privilèges sur la base de données à l’utilisateur.

mysql> GRANT ALL PRIVILEGES ON icingaweb2.* TO 'icingaweb2'@'localhost';

Rafraîchissez les privilèges des utilisateurs.

mysql> FLUSH PRIVILEGES;

Quittez le shell.

mysql> exit

Étape 11 - Configurer IcingaWeb

Ouvrez l’URL https://icinga.example.com dans votre navigateur et vous obtiendrez l’écran suivant.

Page de configuration Icinga Web

Entrez le jeton généré à l’étape précédente et appuyez sur le bouton Suivant pour continuer.

Configuration des modules Icinga

À l’écran suivant, choisissez les modules que vous souhaitez installer et cliquez sur Suivant pour continuer. Le module Surveillance est sélectionné par défaut. À la page suivante, vous verrez les exigences et si elles ont été satisfaites. Assurez-vous que toutes les exigences sont marquées en vert.

Page des exigences Icinga

Cliquez sur Suivant pour passer à la page suivante pour sélectionner le type d’authentification.

Type d'authentification Icinga

Le type d’authentification est défini sur Base de données par défaut. Cliquez sur Suivant pour continuer. On vous demandera de remplir les identifiants de la base de données à la page suivante.

Identifiants de la base de données Icinga Web

Remplissez les identifiants de la base de données créés à l’étape 10. Cliquez sur le bouton Valider la configuration pour vérifier les identifiants. Une fois vérifiés, cliquez sur Suivant pour continuer. Ensuite, on vous demandera de nommer le backend d’authentification.

Backend d'authentification Icinga

Laissez la valeur par défaut et cliquez sur Suivant pour continuer. À la page suivante, on vous demandera de créer un compte administrateur.

Détails de l'administrateur Icinga

Entrez les identifiants de votre nouveau compte administrateur et cliquez sur Suivant pour continuer. Ensuite, vous verrez la page Configuration de l’application.

Configuration de l'application Icinga

Laissez toutes les valeurs par défaut pour la configuration de l’application et des journaux et cliquez sur Suivant pour continuer. On vous demandera de revoir la configuration à la dernière page.

Revue de la configuration Icinga

Vous pouvez revenir en arrière pour changer certains des paramètres. Si vous êtes satisfait, cliquez sur Suivant pour continuer.

Cliquez sur Suivant pour continuer avec la configuration du module de surveillance. Ensuite, on vous demandera les identifiants de la base de données Icinga.

Identifiants de la base de données Icinga

Remplissez les identifiants de la base de données à l’étape 3 et cliquez sur Valider la configuration pour vérifier la connexion. Une fois vérifiée, cliquez sur Suivant pour continuer. Ensuite, on vous demandera de remplir les détails de l’API.

Détails de l'API Icinga

Remplissez les identifiants de l’API créés à l’étape 6 et cliquez sur Valider la configuration pour vérifier la connexion. Cliquez sur Suivant pour continuer. Ensuite, on vous demandera de choisir des variables personnalisées protégées pour la sécurité de la surveillance.

Sécurité de la surveillance Icinga

Laissez les valeurs par défaut et cliquez sur Suivant pour continuer. Ensuite, on vous demandera de revoir la configuration de la surveillance. Vous pouvez revenir en arrière et la modifier si vous le souhaitez.

Revue de la configuration de la surveillance Icinga

Si vous êtes satisfait, cliquez sur Terminer pour compléter l’installation.

Installation Icinga terminée

Une fois terminé avec succès, cliquez sur le bouton Se connecter à Icinga Web 2 pour ouvrir la page de connexion.

Page de connexion Icinga Web

Entrez les détails de votre compte administrateur et cliquez sur le bouton Connexion pour ouvrir le tableau de bord Icinga Web.

Tableau de bord Icinga Web

Visitez la page Aperçu >> Services pour vérifier l’état du serveur maître similaire à ce qui suit.

Page des services Icinga Web

Étape 12 - Initialiser le serveur maître

L’étape suivante consiste à initialiser le serveur maître en tant que nœud maître. Le nœud maître agit comme le contrôleur principal pour la pile de surveillance. Exécutez la commande suivante pour commencer le processus d’initialisation.

$ sudo icinga2 node wizard

On vous demandera s’il s’agit d’une configuration d’agent. Entrez n pour configurer le nœud maître.

Bienvenue dans l'assistant de configuration Icinga 2 !

Nous vous guiderons à travers tous les détails de configuration requis.

Veuillez spécifier s'il s'agit d'une configuration d'agent/satellite ('n' installe une configuration maître) [Y/n]: n

Ensuite, on vous demandera le nom commun ou le nom de domaine. Appuyez sur Entrée pour sélectionner la valeur par défaut qui est affichée.

Veuillez spécifier le nom commun (CN) [icinga.example.com]:
Reconfiguration d'Icinga...
Vérification des certificats existants pour le nom commun 'icinga.example.com'...
Le certificat '/var/lib/icinga2/certs//icinga.example.com.crt' pour CN 'icinga.example.com' existe déjà. Saut de la génération de certificat.
Génération de la configuration maître pour Icinga 2.
La fonctionnalité 'api' est déjà activée.

Ensuite, entrez le nom de la zone maître et appuyez sur Entrée pour continuer. Dans notre cas, c’est le même que le nom de domaine du serveur.

Nom de la zone maître [master]: icinga.example.com

Ensuite, on vous demandera si vous souhaitez ajouter des zones globales supplémentaires. Appuyez sur n pour sauter l’ajout et appuyez sur Entrée pour continuer.

Zones globales par défaut : global-templates director-global
Souhaitez-vous spécifier des zones globales supplémentaires ? [y/N]: n

À l’étape suivante, laissez l’hôte et le port de liaison API par défaut et appuyez sur Entrée pour continuer.

Veuillez spécifier l'hôte/port de liaison API (optionnel) :
Hôte de liaison []:
Port de liaison []:

Ensuite, appuyez sur Y pour désactiver la configuration à l’intérieur du répertoire /etc/icinga2/conf.d/ car nous utiliserons la configuration des zones Icinga2 plus tard.

Souhaitez-vous désactiver l'inclusion du répertoire conf.d [Y/n]: Y
Désactivation de l'inclusion du répertoire conf.d...
Vérification si le fichier api-users.conf existe...

Fait.

Maintenant, redémarrez votre démon Icinga 2 pour terminer l'installation !

Redémarrez le service pour appliquer les changements.

$ sudo systemctl restart icinga2

Et enfin, exécutez la commande suivante pour créer un ticket pour le serveur client. Utilisez le nom de domaine du client comme argument.

$ sudo icinga2 pki ticket --cn 'client.example.com'
365cd931d3091537622a95b113b17775893a224f

Notez le ticket pour une utilisation ultérieure.

Étape 13 - Initialiser l’agent Icinga2 sur le serveur client

Connectez-vous au serveur client et installez Icinga2 et les plugins de surveillance. Exécutez les commandes suivantes pour cela.

$ wget -O - https://packages.icinga.com/icinga.key | sudo gpg --dearmor -o /usr/share/keyrings/icinga-archive-keyring.gpg
$ echo "deb [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/ubuntu icinga-`lsb_release -cs` main" | sudo tee /etc/apt/sources.list.d/$(lsb_release -cs)-icinga.list
$ echo "deb-src [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] http://packages.icinga.com/ubuntu icinga-`lsb_release -cs` main" | sudo tee -a /etc/apt/sources.list.d/$(lsb_release -cs)-icinga.list
$ sudo apt update
$ sudo apt install icinga2 monitoring-plugins -y

Vérifiez si le service Icinga est activé et en cours d’exécution.

$ sudo systemctl status icinga2
? icinga2.service - Système de surveillance des hôtes/services/réseaux Icinga
     Loaded: loaded (/lib/systemd/system/icinga2.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/icinga2.service.d
             ??limits.conf
     Active: active (running) since Tue 2023-05-02 07:32:07 UTC; 59min ago
   Main PID: 7602 (icinga2)
     Status: "Démarrage terminé."
      Tasks: 8
     Memory: 13.9M
        CPU: 1.018s
     CGroup: /system.slice/icinga2.service
             ??7602 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
             ??7620 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
             ??7623 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log

Démarrez l’assistant de nœud Icinga pour initialiser l’agent sur le serveur client.

$ sudo icinga2 node wizard

On vous demandera s’il s’agit d’une configuration d’agent. Entrez Y pour configurer l’agent.

Bienvenue dans l'assistant de configuration Icinga 2 !

Nous vous guiderons à travers tous les détails de configuration requis.

Veuillez spécifier s'il s'agit d'une configuration d'agent/satellite ('n' installe une configuration maître) [Y/n]: Y

Ensuite, on vous demandera de spécifier le nom commun. Laissez la valeur par défaut et appuyez sur Entrée pour continuer.

Démarrage de la routine de configuration de l'agent/satellite...

Veuillez spécifier le nom commun (CN) [client.example.com]:

Ensuite, spécifiez le point de terminaison parent comme icinga.example.com et entrez Y pour établir une connexion au nœud parent depuis le client.

Veuillez spécifier le(s) point(s) de terminaison parent(s) (maître ou satellite) auxquels ce nœud doit se connecter :
Nom commun (CN de votre nœud maître/satellite) : icinga.example.com

Souhaitez-vous établir une connexion au nœud parent depuis ce nœud ? [Y/n]: Y

Ensuite, entrez l’adresse IP du serveur maître et laissez la valeur du port inchangée par défaut.

Veuillez spécifier les informations de connexion maître/satellite :
Hôte du point de terminaison maître/satellite (adresse IP ou FQDN) : 199.247.31.184
Port du point de terminaison maître/satellite [5665]:

Entrez N pour refuser d’ajouter d’autres points de terminaison maîtres.

Ajouter d'autres points de terminaison maître/satellite ? [y/N]: N

Ensuite, vous verrez les informations de certificat pour le serveur maître. Appuyez sur Y pour confirmer les informations et continuer.

Informations sur le certificat parent :

 Version :             3
 Sujet :             CN = icinga.example.com
 Émetteur :              CN = Icinga CA
 Valide depuis :          May  1 08:28:26 2023 GMT
 Valide jusqu'à :         Jun  1 08:28:26 2024 GMT
 Numéro de série :              53:50:d4:1a:85:c5:70:5b:b1:f6:0e:c3:b6:e4:db:62:df:8d:5e:d9

 Algorithme de signature : sha256WithRSAEncryption
 Noms alternatifs du sujet :   icinga.example.com
 Empreinte :         DC BB 90 68 29 E5 C4 B5 74 F5 BC 8C BF A1 8F BF D2 9D A4 E5 A9 9A 43 2C 3B 24 AE A9 CD 19 32 F4

Ces informations sont-elles correctes ? [y/N]: Y

Ensuite, entrez le ticket de demande généré à l’étape précédente.

Veuillez spécifier le ticket de demande généré sur votre maître Icinga 2 (optionnel).
 (Indice : # icinga2 pki ticket --cn 'client.example.com') : 365cd931d3091537622a95b113b17775893a224f

Laissez l’hôte et le port de liaison API par défaut et appuyez sur Entrée pour continuer.

Veuillez spécifier l'hôte/port de liaison API (optionnel) :
Hôte de liaison []:
Port de liaison []:

Ensuite, entrez Y deux fois pour accepter la configuration et les commandes du nœud maître.

Accepter la configuration du nœud parent ? [y/N]: Y
Accepter les commandes du nœud parent ? [y/N]: Y

Appuyez sur Entrée pour accepter le nom de zone local par défaut qui est le nom de domaine du client. Entrez le nom de domaine du maître comme nom de zone parent pour continuer.

Reconfiguration d'Icinga...
Désactivation de la fonctionnalité notification. Assurez-vous de redémarrer Icinga 2 pour que ces changements prennent effet.
Activation de la fonctionnalité api. Assurez-vous de redémarrer Icinga 2 pour que ces changements prennent effet.

Nom de la zone locale [client.example.com]:
Nom de la zone parent [master]: icinga.example.com

Appuyez sur N pour sauter l’ajout de zones globales supplémentaires.

Zones globales par défaut : global-templates director-global
Souhaitez-vous spécifier des zones globales supplémentaires ? [y/N]: N

Appuyez sur N pour sauter la désactivation des configurations du répertoire /etc/icinga2/conf.d/.

Souhaitez-vous désactiver l'inclusion du répertoire conf.d [Y/n]: Y
Désactivation de l'inclusion du répertoire conf.d...

Fait.

Maintenant, redémarrez votre démon Icinga 2 pour terminer l'installation !

Redémarrez le service pour appliquer les changements de configuration.

$ sudo systemctl restart icinga2

Étape 14 - Créer la configuration des zones sur le serveur maître

Reconnectez-vous au serveur et créez un nouveau répertoire en tant que zone par défaut.

$ sudo mkdir -p /etc/icinga2/zones.d/icinga.example.com/

Ensuite, créez un fichier de configuration dans le répertoire nouvellement créé et ouvrez-le pour l’éditer.

$ sudo nano /etc/icinga2/zones.d/icinga.example.com/client.example.com.conf

Collez le code suivant dedans. L’adresse IP dans le code doit correspondre à l’adresse IP publique du client.

// Points de terminaison
object Endpoint "client.example.com" {
}
// Zones
object Zone "client.example.com" {
    endpoints = [ "client.example.com" ]
    parent = "icinga.example.com"
}
// Objets hôtes
object Host "client.example.com" {
    check_command = "hostalive"
    address = "95.179.138.148"
    vars.client_endpoint = name
}

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité une fois terminé.

Créez et ouvrez le fichier de services pour l’éditer.

$ sudo nano /etc/icinga2/zones.d/icinga.example.com/services.conf

Collez le code suivant dedans.

// Ping
 apply Service "Ping" {
 check_command = "ping4"
 assign where host.address // vérification exécutée sur le maître
 }
 // Charge système
 apply Service "System Load" {
 check_command = "load"
 command_endpoint = host.vars.client_endpoint // Vérification exécutée sur client01
 assign where host.vars.client_endpoint
 }
 // Service SSH
 apply Service "SSH Service" {
 check_command = "ssh"
 command_endpoint = host.vars.client_endpoint
 assign where host.vars.client_endpoint
 }
 // Service Icinga 2
 apply Service "Icinga2 Service" {
 check_command = "icinga"
 command_endpoint = host.vars.client_endpoint
 assign where host.vars.client_endpoint
 }

Exécutez la commande suivante pour vérifier la configuration.

$ sudo icinga2 daemon -C

Vous obtiendrez une sortie similaire.

[2023-05-02 11:21:23 +0000] information/cli: Chargeur d'application Icinga (version : r2.13.7-1)
[2023-05-02 11:21:23 +0000] information/cli: Chargement du(s) fichier(s) de configuration.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Validation des éléments de configuration.
[2023-05-02 11:21:23 +0000] information/ApiListener: Mon identité API : icinga.example.com
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiation de 1 IcingaApplication.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiation de 1 Host.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiation de 1 FileLogger.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiation de 1 IdoMysqlConnection.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiation de 1 CheckerComponent.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiation de 4 Zones.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiation de 2 Endpoints.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiation de 2 ApiUsers.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiation de 1 ApiListener.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiation de 1 NotificationComponent.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiation de 244 CheckCommands.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiation de 4 Services.
[2023-05-02 11:21:23 +0000] information/ScriptGlobal: Dumping variables to file '/var/cache/icinga2/icinga2.vars'
[2023-05-02 11:21:23 +0000] information/cli: Validation des fichiers de configuration terminée.

Redémarrez le service Icinga pour appliquer les changements de configuration.

$ sudo systemctl restart icinga2

Étape 15 - Vérifier sur le tableau de bord Icinga

Ouvrez le tableau de bord Web Icinga2 pour vérifier les informations sur la machine cliente. Sélectionnez Aperçu >> Hôtes dans le menu de gauche et vous verrez l’écran suivant.

Page des hôtes du tableau de bord Icinga Web

Cela peut prendre un certain temps pour que l’état du client apparaisse comme UP. Cliquez sur le client pour voir plus de détails à son sujet. Sélectionnez Aperçu >> Services et vous verrez les états suivants concernant le client.

Détails des services du client Icinga Web

Cela confirme que le client envoie correctement des statistiques au serveur maître Icinga.

Conclusion

Cela conclut notre tutoriel sur l’installation du logiciel de surveillance Icinga sur un serveur Ubuntu 22.04 et sa configuration pour surveiller une machine cliente exécutant le même système d’exploitation. Si vous avez des questions, postez-les dans les commentaires ci-dessous.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.