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.comet 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 -yCertains 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.

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

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

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.

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

À 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.

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

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.

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.

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

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

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.

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.

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.

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.

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.

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

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

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

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

É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.

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.

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.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.