serveur_hebergement:icinga:installation_d_icinga

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
serveur_hebergement:icinga:installation_d_icinga [2022/10/01 19:47] – [Installation du serveur maître] fateserveur_hebergement:icinga:installation_d_icinga [2024/01/15 12:40] (Version actuelle) fate
Ligne 12: Ligne 12:
 Pour information, j’ai choisi cette configuration vu que je n’ai que deux serveurs à surveiller (mon serveur OVH et mon Raspberry, respectivement le maître et le client) mais il existe d’autres configurations. Pour information, j’ai choisi cette configuration vu que je n’ai que deux serveurs à surveiller (mon serveur OVH et mon Raspberry, respectivement le maître et le client) mais il existe d’autres configurations.
 En plus du maître et du/des client(s), il peut y avoir des satellites placés entre le maître et les clients. N’ayant pas besoin d’une telle configuration, je ne me suis pas renseigné sur l’utilité de rajouter un satellite. J’imagine que ça permet de pouvoir lancer des tests sur des serveurs clients accessibles en local depuis le serveur satellite mais pas reliés à Internet. En plus du maître et du/des client(s), il peut y avoir des satellites placés entre le maître et les clients. N’ayant pas besoin d’une telle configuration, je ne me suis pas renseigné sur l’utilité de rajouter un satellite. J’imagine que ça permet de pouvoir lancer des tests sur des serveurs clients accessibles en local depuis le serveur satellite mais pas reliés à Internet.
-Vous pouvez également avoir plusieurs serveurs maître, qui sont des répliques, afin d’éviter que votre système de surveillance ne fonctionne plus en cas de panne du serveur maître.+Vous pouvez également avoir plusieurs serveurs maîtres, qui sont des répliques, afin d’éviter que votre système de surveillance ne fonctionne plus en cas de panne du serveur maître.
  
 Comme d’hab, toutes les commandes sont à lancer en root. Comme d’hab, toutes les commandes sont à lancer en root.
Ligne 20: Ligne 20:
 ==== Installation du serveur maître ==== ==== Installation du serveur maître ====
  
-La version d’Icinga présente dans les dépôts de Debian 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  +La version d’Icinga présente dans les dépôts de Debian 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
-<code bash>wget -O - https://packages.icinga.com/icinga.key | sudo apt-key add -</code>+<code bash>aptitude install apt-transport-https wget gnupg</code>  
 +<code bash>wget -O - https://packages.icinga.com/icinga.key | gpg --dearmor -o /usr/share/keyrings/icinga-archive-keyring.gpg</code>
  
 Maintenant ouvrez le fichier  Maintenant ouvrez le fichier 
Ligne 29: Ligne 30:
 <code bash> <code bash>
 # dépôt Icinga # dépôt Icinga
-deb http://packages.icinga.com/debian icinga-bullseye main +deb [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] http://packages.icinga.com/debian icinga-bookworm main 
-deb-src http://packages.icinga.com/debian icinga-bullseye main+deb-src [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] http://packages.icinga.com/debian icinga-bookworm main
 </code> </code>
  
Ligne 37: Ligne 38:
 Mettez à jour la liste des paquets  Mettez à jour la liste des paquets 
 <code bash>aptitude update</code>  <code bash>aptitude update</code> 
- 
-Affichez de nouveau la version d'icinga2 dans les paquets et vous verrez que les priorités sont passés de 500 à 990 
-<code bash>aptitude versions icinga2</code> 
  
 On peut donc passer à l’installation. On peut donc passer à l’installation.
Ligne 52: Ligne 50:
 {{:gnu_linux:icinga2.png?400|}} {{:gnu_linux:icinga2.png?400|}}
  
-Choisissez un mot de passe puis retapez le dans le fenêtre d’après.+Choisissez un mot de passe puis retapez-le dans la fenêtre d’après.
  
 {{:gnu_linux:icinga3.png?400|}} {{:gnu_linux:icinga3.png?400|}}
Ligne 68: Ligne 66:
  
 php-mysql sert à ce que PHP puisse dialoguer avec le serveur MariaDB. php-mysql sert à ce que PHP puisse dialoguer avec le serveur MariaDB.
- 
-On va commencer par changer le mot de passe de l’utilisateur root SQL 
- 
-<code bash>mysql_secure_installation</code> 
- 
-Renseignez le mot de passe que vous voulez pour le compte root (évitez 1234 comme mot de passe), puis vous aurez à répondre à une série de questions : 
-  * Remove anonymous users? [Y/n] -> répondre Yes 
-  * Disallow root login remotely? [Y/n] -> répondre Yes 
-  * Remove test database and access to it? [Y/n] -> répondre Yes 
-  * Reload privilege tables now? [Y/n] -> répondre Yes 
- 
-Si comme moi vous avez du mal avec les requêtes SQL, je vous invite à installer PHPMyAdmin, une interface web permettant de manipuler vos bases de données 
-<code bash>aptitude install phpmyadmin</code> 
- 
-Vous pourrez y accéder à vous rendant à l’adresse http://ipduserveur/phpmyadmin 
- 
-Vous risquez d’avoir le message d’erreur suivant en essayant de vous connecter avec le compte root : ERROR 1698 (28000): Access denied for user ‘root’@’localhost’. 
-La nouvelle politique de sécurité de MariaDB est d’utiliser le socket unix pour se connecter avec le compte root au lieu d’y associer un mot de passe. 
-Pour remédier à ce problème, il va falloir créer un nouvel utilisateur. Tapez les lignes suivantes dans la console 
-<code sql>  
-mysql -u root 
-use mysql; 
-CREATE USER 'nom_utilisateur'@'localhost' IDENTIFIED BY 'motdepasse' WITH GRANT OPTION; 
-GRANT ALL PRIVILEGES ON *.* TO 'nom_utilisateur'@'localhost'; 
-flush privileges; 
-exit; 
-</code> 
- 
-Vous pouvez maintenant vous connecter avec l’utilisateur que vous venez de créer. 
  
 Passons à l’installation d’Icinga2. Passons à l’installation d’Icinga2.
Ligne 102: Ligne 71:
 === Installation d’Icinga2 sur le Raspberry === === Installation d’Icinga2 sur le Raspberry ===
  
-Sur Raspbianla version dIcinga2 présente dans les dépôts est un peu ancienne. Heureusement, il existe un dépôt non-officiel qui propose une version plus récente d’Icinga2.  +Comme sur Debianon va ajouter le dépôt d'Icinga2 afin de récupérer la version plus récente d’Icinga2.  
-Ouvrez le fichier  +<code bash>wget -O - https://packages.icinga.com/icinga.key | gpg --dearmor -o /usr/share/keyrings/icinga-archive-keyring.gpg</code>
-<code>/etc/apt/sources.list</code> +
  
-Rajoutez les lignes suivantes+Maintenant ouvrez le fichier  
 +<code>/etc/apt/sources.list</code> 
 + 
 +Ajoutez à la fin les lignes suivantes
 <code bash> <code bash>
 # dépôt Icinga # dépôt Icinga
-deb http://packages.icinga.com/raspbian icinga-bullseye main+deb [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] http://packages.icinga.com/debian icinga-bookworm main 
 +deb-src [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] http://packages.icinga.com/debian icinga-bookworm main
 </code> </code>
  
-On va ensuite importer la clé de ce dépôt +Le dépôt d’Icinga est maintenant rajouté dans notre liste de dépôts
-<code bash>wget -O - https://packages.icinga.com/icinga.key | apt-key add -</code>+
  
 Il ne reste plus qu’à mettre à jour les dépôts et installer Icinga2 et les plugins  Il ne reste plus qu’à mettre à jour les dépôts et installer Icinga2 et les plugins 
Ligne 134: Ligne 105:
  
 Sur Debian, on doit créer la base de donnée à la main Sur Debian, on doit créer la base de donnée à la main
-<code bash>mysql -u root -p</code> +<code bash>mysql</code> 
  
 Rentrez le mot de passe de l’administrateur mysql. Une fois connecté à mysql, créez la base de donnée icingaweb2: Rentrez le mot de passe de l’administrateur mysql. Une fois connecté à mysql, créez la base de donnée icingaweb2:
Ligne 140: Ligne 111:
  
 Créez un administrateur local de cette base (changez motdepasse par votre mot de passe)  Créez un administrateur local de cette base (changez motdepasse par votre mot de passe) 
-<code sql>GRANT ALL ON icingaweb2.* TO icingaweb2@localhost IDENTIFIED BY 'motdepasse';</code> pour+<code sql>GRANT ALL ON icingaweb2.* TO icingaweb2@localhost IDENTIFIED BY 'motdepasse';</code> 
  
 Tapez “quit” pour quitter mysql. Tapez “quit” pour quitter mysql.
Ligne 150: Ligne 121:
 <code bash>/etc/icinga2/conf.d/api-users.conf</code>  <code bash>/etc/icinga2/conf.d/api-users.conf</code> 
  
-Modifiez le afin d’avoir ceci (remplacez l’utilisateur et le mot de passe par celui qui vous avez choisi)+Modifiez-le afin d’avoir ceci (remplacez l’utilisateur et le mot de passe par celui qui vous avez choisi)
 <code> <code>
 /** /**
Ligne 159: Ligne 130:
   // client_cn = ""   // client_cn = ""
  
-  permissions = [ "status/query", "actions/*", "objects/modify/*", "objects/query/*"  ]+  permissions = [ "*"  ]
 } }
 </code> </code>
 +
 +Icinga fonctionne avec des modules, tous désactivés par défaut (du moins sur mon installation). 
 +
 +Vous pouvez activer un module avec la commande suivante
 +<code bash>icinga2 feature enable nomdumodule</code> 
 +
 +Pour voir tous les modules disponibles et ceux qui sont actifs et inactifs
 +<code bash>icinga2 feature list</code>
 +
 +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 sert à afficher les erreurs dans les fichiers de log.
  
 Redémarrez Icinga Redémarrez Icinga
Ligne 228: Ligne 209:
 Laissez les valeurs par défaut sur la prochaine fenêtre et 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. +Sur la fenêtre suivante, cliquez sur “Finish”. Vous pouvez maintenant vous connecter à Icinga.
- +
-Icinga fonctionne avec des modules, tous désactivés par défaut (du moins sur mon installation).  +
- +
-Vous pouvez activer un module avec la commande suivante +
-<code bash>icinga2 feature enable nomdumodule</code>  +
- +
-Pour voir tous les modules disponibles et ceux qui sont actifs et inactifs +
-<code bash>icinga2 feature list</code> +
- +
-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 sert à afficher les erreurs dans les fichiers de log. +
- +
-Pensez à redémarrer le Icinga  +
-<code bash>systemctl restart icinga2.service</code>+
  
 lancez la commande suivante lancez la commande suivante
Ligne 373: Ligne 341:
 </code> </code>
  
-Petite explication. On commence par créer deux “Endpoint”, un correspondant au serveur maître et un autre correspondant au client. Un “Endpoint” sert à donner à Icinga2 les informations nécessaire pour pouvoir lancer des tests sur une machine distante. On indique le host (adresse ip ou nom de domaine correspondant à la machine) et le port sur lequel se connecter (il faut évidemment que ce port soit accessible).+Petite explication. On commence par créer deux “Endpoint”, un correspondant au serveur maître et un autre correspondant au client. Un “Endpoint” sert à donner à Icinga2 les informations nécessaires pour pouvoir lancer des tests sur une machine distante. On indique le host (adresse ip ou nom de domaine correspondant à la machine) et le port sur lequel se connecter (il faut évidemment que ce port soit accessible).
 On crée ensuite deux zones, une zone nommée “master” à laquelle on lie le endpoint du serveur maître, et une zone client qu’on lie au endpoint du client et où on indique également qu’elle est une zone enfant de la zone “master”. Ainsi, on fait comprendre à Icinga2 que la zone “master” ordonnera les tests qui seront effectués sur la zone client. On crée ensuite deux zones, une zone nommée “master” à laquelle on lie le endpoint du serveur maître, et une zone client qu’on lie au endpoint du client et où on indique également qu’elle est une zone enfant de la zone “master”. Ainsi, on fait comprendre à Icinga2 que la zone “master” ordonnera les tests qui seront effectués sur la zone client.
  
Ligne 444: Ligne 412:
 </code> </code>
  
-C’est un service qui lance la commande ping sur tous les host qui ont une adresse ip renseignée. Si on le laisse tel quel, il va lancer le test sur le host maître et sur le host client en utilisant l’IP renseignée (127.0.0.1) pour chaque host, sans utiliser le endpoint. Les deux test vont donc être lancés en local sur le maître. Pour utiliser le endpoint, on va devoir faire une petite modif+C’est un service qui lance la commande ping sur tous les host qui ont une adresse ip renseignée. Si on le laisse tel quel, il va lancer le test sur le host maître et sur le host client en utilisant l’IP renseignée (127.0.0.1) pour chaque host, sans utiliser le endpoint. Les deux tests vont donc être lancés en local sur le maître. Pour utiliser le endpoint, on va devoir faire une petite modif
 <code> <code>
 apply Service "ping4" { apply Service "ping4" {
Ligne 460: Ligne 428:
 assign where host.vars.endpoint signifie que ce test s’exécutera sur tous les hosts qui ont une variable “vars.endpoint” et command_endpoint = host.vars.endpoint signifie que le test s’effectuera via le endpoint renseigné dans le host. assign where host.vars.endpoint signifie que ce test s’exécutera sur tous les hosts qui ont une variable “vars.endpoint” et command_endpoint = host.vars.endpoint signifie que le test s’effectuera via le endpoint renseigné dans le host.
  
-Si vous n’avez que très peu de service commun entre le maître et le client, vous pouvez créez la variable vars.maitre_endpoint = “FQDNduserveurmaître” pour le host du maître et vars.client_endpoint = “FQDNduclient” pour le host du client et dans le fichier services.conf, puis assigner un service soit au maître soit au client en mettant soit assign where host.vars.client_endpoint et command_endpoint = host.vars.client_endpoint pour le client, soit assign where host.vars.maitre_endpoint et  command_endpoint = host.vars.maitre_endpoint pour le maître. +Si vous n’avez que très peu de service commun entre le maître et le client, vous pouvez créer la variable vars.maitre_endpoint = “FQDNduserveurmaître” pour le host du maître et vars.client_endpoint = “FQDNduclient” pour le host du client et dans le fichier services.conf, puis assigner un service soit au maître soit au client en mettant soit assign where host.vars.client_endpoint et command_endpoint = host.vars.client_endpoint pour le client, soit assign where host.vars.maitre_endpoint et  command_endpoint = host.vars.maitre_endpoint pour le maître. 
-Dans mon cas, comme j’ai beaucoup de services communs à mon serveur OVH et mon Raspberry, j’ai préféré créé une variable “endpoint” globale.+Dans mon cas, comme j’ai beaucoup de services communs à mon serveur OVH et mon Raspberry, j’ai préféré créer une variable “endpoint” globale.
  
 Voilà, il ne vous reste plus qu’à redémarrer Icinga2 sur le maître et le client et tout devrait fonctionner. Voilà, il ne vous reste plus qu’à redémarrer Icinga2 sur le maître et le client et tout devrait fonctionner.
Ligne 468: Ligne 436:
 ===== Désactiver la re-notification ===== ===== Désactiver la re-notification =====
  
-Icinga2 a un comportement un peu con, il envoi un mail toutes les X minutes tant qu’un problème n’est pas résolu. Personnellement j’ai assez de neurones pour comprendre avec une seule notification qu’il y a un soucis.+Icinga2 a un comportement un peu con, il envoie un mail toutes les X minutes tant qu’un problème n’est pas résolu. Personnellement j’ai assez de neurones pour comprendre avec une seule notification qu’il y a un souci.
 On va donc changer ce comportement. On va donc changer ce comportement.
  
  • serveur_hebergement/icinga/installation_d_icinga.1664653643.txt.gz
  • Dernière modification : 2023/08/08 14:01
  • (modification externe)