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