Table des matières
Mise en place de l'infra de supervision
Prérequis
- enregistrement DNS,
- reverse proxy + TLS sur le bastion,
- serveur httpd fonctionnel en local.
Installation du serveur maître
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
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
On commence par partir d'une conf de base :
- /etc/nginx/sites-available/icinga.chapril.org
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
- /etc/nginx/sites-available/icingaweb2.conf
fastcgi_pass unix:/run/php/php7.0-fpm.sock
Il faut aussi définir dans /etc/php/7.0/fpm/php.ini
- /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…
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 :
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
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
:- tree /etc/icinga2/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) </code>
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/*