====== Mise en place de l'infra de supervision ====== Ici on parle de l'installation du serveur maître et de l'IHM web. Pour l'ajout du monitoring sur une machine, consulter [[admin:monitoring:add-host|cette page]]. ===== Prérequis ===== * enregistrement DNS, * reverse proxy + TLS sur le bastion, * serveur httpd fonctionnel en local. ===== Installation du serveur maître ===== Doc officielle : [[https://docs.icinga.com/icinga2/latest/doc/module/icinga2/toc#!/icinga2/latest/doc/module/icinga2/chapter/getting-started#installing-icinga2|sur le site web]]. Icinga2 est packagé et le paquet debian aide sur qq étapes. Pour l'installation : apt install icinga2 vim-icinga2 monitoring-plugins Icinga doit tourner : systemctl status icinga2 Installation du greffon vim : apt install vim-addon-manager vim-addons install icinga2 Mise en place de la base de données : apt install mariadb-server mariadb-client apt install icinga2-ido-mysql Les réponses que l'installeur peut attendre : oui à la préconfiguration puis vide au mot de passe. Si besoin les details d'accès à la BDD (user,password,database) seront dans ''/etc/icinga2/features-{en,dis}abled/ido-mysql.conf'' Activation des fonctions utiles : icinga2 feature enable ido-mysql icinga2 feature enable command Redémarrage pour la prise en compte : systemctl restart icinga2 ===== Installation de l'IHM web ===== Doc officielle : [[https://docs.icinga.com/icinga2/latest/doc/module/icinga2/toc#!/icinga2/latest/doc/module/icinga2/chapter/getting-started#setting-up-icingaweb2|sur le site web]]. L'interface web d'Icinga2 est fort séparée du cœur d'exécution (qui sera commun aux maîtres et esclaves). On parle d'Icingaweb2. Celui-ci échange avec Icinga2 via la base de données et via une possibilité de commande locale. On installera également icingacli qui aide sur la gestion des modules d'Icingaweb2. Icingaweb2 est packagé et le paquet debian aide sur qq étapes. Pour l'installation : apt install icingacli icingaweb2 icingaweb2-module-monitoring php-mysql php7.0-intl usermod -a -G icingaweb2 www-data ==== Configuration nginx ==== Pour rappel on suppose que le reverse proxy fait déjà le job. Sinon, la documentation est [[admin:procédures:ajout-d-un-site-web|ici]]. On commence par partir d'une conf de base : server { listen 80; access_log /var/log/nginx/icinga.chapril.org.access_log; error_log /var/log/nginx/icinga.chapril.org.error_log; server_name icinga.chapril.org; Puis on enrichi la conf à l'aide de ''icingacli'' : icingacli setup config webserver nginx --document-root /usr/share/icingaweb2/public >> /etc/nginx/sites-available/icingaweb2.conf Il faut ensuite fermer l'accolade finale, reformatter, et re-définir ''fastcgi_pass'' au profit de fastcgi_pass unix:/run/php/php7.0-fpm.sock Il faut aussi définir dans ''/etc/php/7.0/fpm/php.ini'' date.timezone = Europe/Paris Ensuite on active le site ln -s /etc/nginx/sites-available/icinga.chapril.org /etc/nginx/sites-enabled/icinga.chapril.org nginx -t systemctl reload nginx ==== Finalisation de l'installation ==== Le setup d'icinga va exiger un jeton d'authentification, qu'on génère ainsi : icingacli setup token create => The newly generated setup token is: deadbeef Il suffit ensuite d'ouvrir https://icinga.chapril.org/icingaweb2/setup dans un butineur, et de placer le jeton deadbeef... Si vous avez oubliez le jeton : icingacli setup token show Ensuite laissez vous faire. Il faudra configurer l'accès à la base de données d'Icinga2 pour lire l'état du monitoring, et configurer une base propre à Icingaweb2 pour son fonctionnement propre. Si besoin, création d'une base icingaweb2 : =(^-^)=root@admin:~# mariadb MariaDB [(none)]> CREATE DATABASE icingaweb2; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icingaweb2.* TO 'icingaweb2'@'localhost' IDENTIFIED BY 'icingaweb2'; Query OK, 0 rows affected (0.01 sec) Après tout ça, votre Icingaweb2 devrait être fonctionnel. Si le monitoring n'apparaît pas dans l'IHM web, il faut peut être activer le module : icingacli module enable monitoring ==== Personnalisation du logo ==== Afin de ne pas confondre les sites web Icinga2 April et Chapril, changement du logo Icinga sur le Chapril. Dans ''root@admin:/var/www/icinga.chapril.org/public/img/'', ajout de l'image modifiée du logo Icinga2 auquel a été ajouté le logo Chapril : {{:admin:monitoring:icinga-chapril-logo.png?400|}} Dans ''root@admin:/etc/nginx/sites-enabled/icinga.chapril.org'', ajout de : location = /icingaweb2/img/icinga-logo.svg { alias /var/www/icinga.chapril.org/public/img/icinga-chapril-logo.svg; } ===== Configuration du serveur maître ===== Doc officielle : [[https://docs.icinga.com/icinga2/latest/doc/module/icinga2/toc#!/icinga2/latest/doc/module/icinga2/chapter/distributed-monitoring#distributed-monitoring-setup-master|sur le site web]]. Remarque : globalement on n'utilisera que des fqdn locaux au cluster, dont on est sûr qu'il ne résolvent que sur des ip privées. Ici le nom de la machine est ''admin.cluster.chapril.org''. Le node wizard d'Icinga2 prend ici tout en mains : =(^-^)=root@admin:/etc/icinga2# icinga2 node wizard Welcome to the Icinga 2 Setup Wizard! We'll guide you through all required configuration details. Please specify if this is a satellite setup ('n' installs a master setup) [Y/n]: n Starting the Master setup routine... Please specify the common name (CN) [admin.cluster.chapril.org]: Checking for existing certificates for common name 'admin.cluster.chapril.org'... Certificates not yet generated. Running 'api setup' now. information/cli: Generating new CA. information/base: Writing private key to '/var/lib/icinga2/ca/ca.key'. information/base: Writing X509 certificate to '/var/lib/icinga2/ca/ca.crt'. information/cli: Generating new CSR in '/etc/icinga2/pki/admin.cluster.chapril.org.csr'. information/base: Writing private key to '/etc/icinga2/pki/admin.cluster.chapril.org.key'. information/base: Writing certificate signing request to '/etc/icinga2/pki/admin.cluster.chapril.org.csr'. information/cli: Signing CSR with CA and writing certificate to '/etc/icinga2/pki/admin.cluster.chapril.org.crt'. information/pki: Writing certificate to file '/etc/icinga2/pki/admin.cluster.chapril.org.crt'. information/cli: Copying CA certificate to '/etc/icinga2/pki/ca.crt'. Generating master configuration for Icinga 2. information/cli: Adding new ApiUser 'root' in '/etc/icinga2/conf.d/api-users.conf'. information/cli: Enabling the 'api' feature. Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect. information/cli: Dumping config items to file '/etc/icinga2/zones.conf'. information/cli: Created backup file '/etc/icinga2/zones.conf.orig'. Please specify the API bind host/port (optional): Bind Host []: Bind Port []: information/cli: Created backup file '/etc/icinga2/features-available/api.conf.orig'. information/cli: Updating constants.conf. information/cli: Created backup file '/etc/icinga2/constants.conf.orig'. information/cli: Updating constants file '/etc/icinga2/constants.conf'. information/cli: Updating constants file '/etc/icinga2/constants.conf'. information/cli: Updating constants file '/etc/icinga2/constants.conf'. Done. Now restart your Icinga 2 daemon to finish the installation! Il faut ensuite passer à la configuration à proprement parler. Pour donner un aperçu : * Le fichier ''/etc/icinga2/zones.conf'' défini les zones. Chaque machine du cluster doit s'y trouver. * Les configurations génériques sont dans une zone globale et situés ici : ''/etc/icinga2/zones.d/global-templates/''. A priori ce qui vous intéressera le plus sera : * ''zones.d/global-templates/groups.conf'' * ''zones.d/global-templates/services/*'' * les configurations propres aux machines sont dans ''zones.d/master'' : /etc/icinga2/zones.d/master/ ├── cluster │ ├── admin.conf │ ├── bastion.conf │ ├── bling.conf │ ├── dns.conf │ ├── mail.conf │ ├── pouet.conf │ └── sympa.conf ├── coon.conf ├── galanga │ └── icinga2.conf └── maine.conf ===== Installation d'un bot IRC : Chatonic ===== Le bot s'appelle Chatonic et est présent sur le canal IRC #april-chapril du réseau Freenode. Quelques informations : * écrit en Python3 ; * dépôt des sources : https://forge.april.org/adminsys/icingabot On va utiliser un l'API d'Icinga2. Pour activer l'API Icinga2 : # icinga2 feature enable api Pour installer un wrapper IRC pour Python : # apt install python3-irc ==== Déploiement ==== Création d'un espace de déploiement : mkdir /srv/chatonic Clonage : cd /srv/chatonic git clone april@agir.april.org:/srv/git/chatonic git (/!\ chemin source du clonage peut-être à revoir /!\ Au pire, cloner chez soi et après scp sur serveur) Déploiement du fichier de configuration : mkdir /etc/chatonic/ cp /srv/chatonic/git/chatonic.conf /etc/chatonic/ ln -s /etc/chatonic/chatonic.conf /srv/chatonic/ Adapter le fichier ''/etc/chatonic/chatonic.conf'' : * mettre le mot de passe Icinga ; * … Définir le service dans systemd : ln -s /etc/systemd/system/chatonic.service /srv/chatonic/git/icingabot.service # "linked unit" => ne sera pris en compte qu'au prochain redémarrage de systemd Configurer le lancement du service au boot : systemctl enable chatonic Created symlink /etc/systemd/system/multi-user.target.wants/chatonic.service → /etc/systemd/system/chatonic.service. ==== Logs ==== Des logs sont consultables via SystemD : journal -f -u chatonic ===== Désactivation de perfdata ====== À l'usage, le dossier ''/var/spool/icinga2/perfdata/'' se remplissait excessivement (> 5 Go). Normalement, les fichiers doivent y être traité dans la minute et là on avait plusieurs mois de fichiers. Réponse du mainteneur officiel : https://github.com/Icinga/icinga2/issues/5874#issuecomment-401687713 dnsmichi commented on 2 Jul 2018 perfdata as a feature is disabled by default. There are some guides on the internet which wrongly suggest that you need to enable perfdata in combination with influxdb or graphite - our official documentation does not suggest that. So, in any case, if you actively enable the perfdata feature, you need to ensure that a collecting daemon is reading and purging the rotated files. If you don't have such, you need not enable this feature. Donc désactivation de perfdata : icinga2 feature disable perfdata rm -f /var/spool/icinga2/perfdata/*