====== Icinga: Supervision de l'infrastructure serveur et actif réseau ====== {{https://icinga.com/docs/icinga-db-web/latest/doc/res/icingadb-architecture.png?nolink&500}} Afin d'avoir un seul point d'acces de supervision, d'autres solution autonomes seront intégrées dans l'interface de Icinga tel que Nagvis et [[:systeme:grafana|Grafana]]. Ces éléments font l'objet d'une page dédiée car autonomes et non indispensables au fonctionnement de Icinga. ===== Prérequis machine serveur ===== Pour une raison d'harmonie des sytèmes sur les serveurs Linux, nous utiliserons Debian. Le fait que cela soit une VM les besoins matériels sont facilement modifiables (sauf redimensionnement du disque virtuel), nous commencerons donc avec: * 2 vCPU * 4 Go de RAM * 150 Go de disque virtuel Le serveur sera connecté sur le réseau serveur afin de pouvoir communiquer avec tous les serveurs et matériels supervisés. ===== Installation de Icinga 2 ===== source: [[https://icinga.com/docs/icinga-2/latest/doc/01-about/|https://icinga.com/docs/icinga-2/latest/doc/01-about/]] Pour Debian: [[https://icinga.com/docs/icinga-2/latest/doc/02-installation/01-Debian/|https://icinga.com/docs/icinga-2/latest/doc/02-installation/01-Debian/]] On ajoute le dépot en copiant les commandes données dans un terminal shell en tant que root apt update apt -y install apt-transport-https wget gnupg commande obscure qui attend quelque chose et après avoir fait Entrée il veut un fichier ! wget -O - https://packages.icinga.com/icinga.key | gpg --dearmor -o /usr/share/keyrings/icinga-archive-keyring.gpg peut être remplacé par: wget https://packages.icinga.com/icinga.key cat inciga.key|gpg --dearmor -o /usr/share/keyrings/icinga-archive-keyring.gpg rm -f incinga.key DIST=$(awk -F"[)(]+" '/VERSION=/ {print $2}' /etc/os-release); \ echo "deb [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/debian icinga-${DIST} main"> \ /etc/apt/sources.list.d/${DIST}-icinga.list echo "deb-src [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/debian icinga-${DIST} main">> \ /etc/apt/sources.list.d/${DIST}-icinga.list apt update apt install icinga2 Sans plugins on a une coquille vide de icinga2. Les plugins permettent de superviser,monitorer les services des cibles. Avant on installait les plugins Nagios. Là c'est intégré !!! Aolrs on les installe. source: [[https://icinga.com/docs/icinga-2/latest/doc/02-installation/01-Debian/#set-up-check-plugins|https://icinga.com/docs/icinga-2/latest/doc/02-installation/01-Debian/#set-up-check-plugins]] apt install monitoring-plugins IcingaDB (pré-requis 2) et d'autres fonctionnaltés nécessitent que icinga API soit configuré pour dialoguer avec Icinga2 donc vaut mieut le faire tout de suite. icinga2 api setup les informations générées sont stockées dans /etc/icinga2/conf.d/api-users.conf Et enfin on redémarre le service icinga2 systemctl restart icinga2 Voilà pré-requis 1 (Icinga2) installé ! ===== Installation de IcingaDB et Database ===== Sans base de donnée de stockage… pas d'Icinga2, d'interaction ou d'interface web !!! Avant out icingaDB nécessite une base de donnée hein! Donc il faut avoir une base de donnée. Je suis plus à l'aise avec MySQL ou MariaDB un fork de MySQL (avec les meme commandes). On vérifie ou installe MariaDB. source: [[https://aymeric-cucherousset.fr/en/install-mariadb-on-debian-11/|https://aymeric-cucherousset.fr/en/install-mariadb-on-debian-11/]] apt install mariadb-server On automatise son démarrage systemctl enable mariadb systemctl start mariadb On vérifie que MariaDB est opérationnelle systemctl status mariadb Et on sécurise MariaDB. Pour le compte root répondre "n" et le reste en répondant Y à toutes les questions. mysql_secure_installation Si on est logué avec un compte standard, on ne peut pas se connectrer à mariadb comme ça : mysql -u root -p Il faut d'abord se logué avec root puis se connecter à mariadb su - mysql -u root -p Bon on peut passé à l'installation de icingaDB. source: [[https://icinga.com/docs/icinga-db/latest/doc/01-About/|https://icinga.com/docs/icinga-db/latest/doc/01-About/]] Pour Debian: [[https://icinga.com/docs/icinga-db/latest/doc/02-Installation/03-Debian/|https://icinga.com/docs/icinga-db/latest/doc/02-Installation/03-Debian/]] Si on est arrivé là c'est qu'on a déjà ajouté le dépot. Donc on installe apt install icingadb (A ce jour la version de MariaDB est la 10.5.23) On peut configurer la base de donnée pour icingaDB directement mysql -u root -p Une fois dans connecté à mariadb on créer la base de donnée. Ici un compte icingadb va etre céé, il faut lui associer un mot de passe! Par défaut c'est "CHANGEME" CREATE DATABASE icingadb; CREATE USER 'icingadb'@'localhost' IDENTIFIED BY 'CHANGEME'; GRANT ALL ON icingadb.* TO 'icingadb'@'localhost'; On quitte MariaDB quit et on lance la création des tables dans la base de donnée mysql -u root -p icingadb Si on a oublié de changer le mot de passe pour le compte icingadb (qui est CHANGEME), on peut le faire en se connectant à mariaDB et exécuter: SET PASSWORD FOR 'icingadb'@'localhost'=PASSWORD('newpassword'); Ce nouveau newpassword doit etre renseigné dans le fichier de configuration de icingaDB. vi /etc/icingadb/config.yml Pour finir on automatise le démarrage de icingaDB systemctl enable --now icingadb ===== Redis serveur ===== Avec la nouvelle version de icinga2, il est nécessaire d'avoir Redis Server qui communique entre icingaDB et incigaDB WEB pour l'affichage web. Il faut donc installer Redis Server ! source: [[https://icinga.com/docs/icinga-2/latest/doc/02-installation/01-Debian/#set-up-redis-server|https://icinga.com/docs/icinga-2/latest/doc/02-installation/01-Debian/#set-up-redis-server]] apt install icingadb-redis On automatise le démarrage systemctl enable --now icingadb-redis Si un problème de lancement apparait avec une erreur sur l'alias lancez systemctl enable --now icingadb-redis-server (Vu qu'on installe Redis sur le meme serveur que icinga2, pas besoin de configuter le remote acces de Redis) On controle le fonctionnement de redis systemctl status icingadb-redis ==== Icinga DB Feature ==== Il faut activer la publication des données de icingaDB vers icingadb-Redis par Icinga 2 avec l'API grâce à "Icinga DB Feature": [[https://icinga.com/docs/icinga-2/latest/doc/14-features/#icinga-db|https://icinga.com/docs/icinga-2/latest/doc/14-features/#icinga-db]] icinga2 feature enable icingadb Maintenant que icingadb-redis est opérationnel, il faut relancer icingaDB pour q'il communique. systemctl restart icingadb ==== ==== **Sauvegarde** S'assurer de sauvegarder ces répertoires: * Configuration : /etc/icinga2 * Certificat: /var/lib/icinga2/ca (Master CA key pair) et /var/lib/icinga2/certs (node certificates) * Le runtime: /var/lib/icinga2 ===== Installation de Icinga Web 2 ===== Avant de commencer l'installation de Icinga Web 2 on controle que tout est opérationnel systemctl status icingadb-redis systemctl status icingadb systemctl status icinga2 un redémarrage pour etre propre… On dispose maintenant du socle de monitoring Icinga 2. En l'état actuel c'est plus du log et donc il faut aller les consulter manuellement, pas très pratique pour de la supervision! Pour avoir une interface visuel on doit installer Icinga Web 2 au dessus de ce socle. Depuis l'interface on pourra configure Icing2 grace Incinga Director (ou si on préfère avec du fichier texte il faudra Icinga DSL). Commençons… Si on est arrivé ici, c'est qu'on à déjà ajouté les sources apt (sinon voir en début de page). Qui dit interface web dit un serveur web. On peut au choix utiliser Apache ou Nginx avec PHP ( version supérieure ou égale à 7.2 ). Comme Icinga Web 2 est déjà préconfiguré avec Apache on va l'utiliser !!! ==== Apache et PHP ==== apt install apache2 On active 2 modules qui sont souvent utiles (mais pas un prérequies pour icinga web) a2enmod rewrite a2enmod ssl On installe PHP avec les modules nécessaires pour communiquer avec MariaDB (déjà installée avec icinga2) et l'active directory. On pourra installer des module php complémentaire plus tard si besoin. apt-get install php libapache2-mod-php php-mysql php-ldap php-imagick On prépare une page de test et active le https par par défaut rm /var/www/html/index.html echo ""> /var/www/html/index.php a2ensite default-ssl On démarre apache systemctl start apache2 systemctl status apache2 Si apache fonctionne on devrait avoir une page résumé de PHP installé si on va sur: [[http://@IP_du_serveur|https://@IP_du_serveur]] Remarque: En cas d'erreur en https: ssl_error_rx_record_too_long remplacez _ckgedit_QUOT__default__ckgedit> par "*" dans le fichier default-ssl.conf vi /etc/apache2/sites-available/default-ssl.conf ==== Icinga web 2 ==== L'installation de icinga web est on ne peut plus simple! [[https://icinga.com/docs/icinga-web/latest/doc/02-Installation/01-Debian/|https://icinga.com/docs/icinga-web/latest/doc/02-Installation/01-Debian/]] apt-get install icingaweb2 icingacli //(icingacli permet de configurer la mise en route de icinga web)// Vérifiez que Apache a bien redémarré sinon le faire manuellement. systemctl restart apache2 Paramétrage de icinga web A la premiere connexion sur la page web de icinga, il sera demandé un "token" icingacli setup token create en cas d'oubli on peut retrouver le token avec la commande icingacli setup token show Il faut créer une base de donnée dans MariaDB pour l'interface web. mysql -u root -p CREATE DATABASE icingaweb2; On donne acces à toutes les tables de la base à l'utilisateur incigaweb2 ayant le password CHANGEME…** Donc à modifier !!!!** GRANT ALL ON icingaweb2.* TO icingaweb2@localhost IDENTIFIED BY 'icingaweb2@Bee!'; (CHANGEME est remplacé par "icingaweb2@Bee!" pour l'installation) Et voilà! Le serveur en lui même est installé. Maintenant direction sur la page web de Icinga Web 2 pour configurer l'application. Il faudra renseigner le token créé plus haut pour commencé. [[https://@ip_du_serveur/icingaweb2/setup|https://@ip_du_serveur/icingaweb2/setup]] ==== Icingadb-web module ==== Afin d'avoir toutes les fonctionnalités d'affichage de icinga web, on installe icingadb-web qui communiquera avec redis et les autres base de données de icingadb. source: [[https://icinga.com/docs/icinga-db-web/latest/doc/02-Installation/Debian/|https://icinga.com/docs/icinga-db-web/latest/doc/02-Installation/Debian/]] apt install icingadb-web Sa configration doit se faire depuis l'interface web de icinga web quand il sera opérationnel ([[https://icinga.com/docs/icinga-db-web/latest/doc/03-Configuration/|https://icinga.com/docs/icinga-db-web/latest/doc/03-Configuration/]]) ===== Icinga DSL ===== source: [[https://icinga.com/docs/icinga-2/latest/doc/04-configuration/#configuration|https://icinga.com/docs/icinga-2/latest/doc/04-configuration/#configuration]] Il n'y a rien à installer. C'est la manière de configurer icinga2 de base: par fichier texte. A terme, pour ne pas faire d'erreur de synthaxe ou copier/coller de fichier de configuration on passera par Icinga Director depuis l'interface web de icinga. Donc arrivée à cette partie, l'application Icinga 2 est totalement opérationnel après sa configuration. ===== Icinga Director ===== source: [[https://icinga.com/docs/icinga-director/latest/doc/01-Introduction|https://icinga.com/docs/icinga-director/latest/doc/01-Introduction]] Debian: [[https://icinga.com/docs/icinga-director/latest/doc/02-Installation/Debian/|https://icinga.com/docs/icinga-director/latest/doc/02-Installation/Debian/]] Incinga Web 2 DOIT être fonctionnel avant d'installer Icinga Director! Director est un module de Icinga Web qui permet une configuration graphique des cibles à superviser via l'API. Il est indépendant de la configuration manuelle (par fichier stocké dans /etc/icinga2/) et peut fonctionner en parallèle. __**Director NE GERE PAS les configurations manuelles existantes par fichier.**__ Son installation est très simple (après jout du dépot, ce qui est déjà fait). apt install icinga-director Il faut ajouter une base de donnée (MariaDB pour notre cas) pour Director. Pensez à changer le mot de passe! (par défaut: CHANGE, ici changé par directorInciga@Bee! ) mysql -e "CREATE DATABASE director CHARACTER SET 'utf8'; CREATE USER director@localhost IDENTIFIED BY 'directorInciga@Bee!'; GRANT ALL ON director.* TO director@localhost;" [[https://icinga.com/docs/icinga-director/latest/doc/02-Installation/Debian/#configuring-icinga-director|https://icinga.com/docs/icinga-director/latest/doc/02-Installation/Debian/#configuring-icinga-director]] On vient de créer la base de donnée qui sera utilisée pour par director pour gérer sa configuration. Il faut configure director pour qu'il puisse utiliser cette base de donné. Pour cela on peut soit utiliser le mode fichier ([[https://icinga.com/docs/icinga-director/latest/doc/03-Automation/|mode automation]]) ou par l'interface Icinga web 2. En bas à gauche sur la roue crantée, à coté de votre login, choisir Configuration puis Application et enfin l'onglet Ressources pour créer une nouvelle ressource.On donne un nom à cette ressource puis les informations de connexion à la base de donnée, les mêmes qui ont permis de créer la base de donné en ligne de commande. Maintenant on configure Director depuis le menu de gauche "Icinga Director". Il faut renseigner "DB Ressource" le nom de la ressource qui vient d'être créée. La structure va étre créée dans la table. pour le Kickstart wizard: [[https://icinga.com/docs/icinga-director/latest/doc/04-Getting-started/|https://icinga.com/docs/icinga-director/latest/doc/04-Getting-started/]] La partie Kickstart wizard va permettre à Director d'importer les informations de configuration qui se font par fichier dans sa base. "… If you are using a fresh Icinga 2 installation or a standalone setup with other ways of checking your clients, you will have to create them. The easiest way to set up Icinga 2 with a ''zone'' and ''endpoint'' is by running the [[https://docs.icinga.com/icinga2/latest/doc/module/icinga2/chapter/distributed-monitoring#distributed-monitoring-setup-master|Icinga 2 Setup Wizard]]. …" En résumé il faut générer les informations nécessaires dans le fichier /etc/icinga2/zones.conf avec icinga2 node wizard (laisser les valeurs par défaut proposée) Puis ajouter un utilisateur dans /etc/icinga2/conf.d/api-users.conf Changez le password. object ApiUser "director" { password = "***" permissions = [ "*" ] //client_cn = "" } Maintenant relancez icinga2 systemctl restart icinga2 Enfin dans la partie Kickstart wizard renseignez les informations qui viennent dêtre créées. Une fois que le "Run import" est terminé, dans "Activity log" on doit avoir toutes les commandes de supervision importées dans director.