Table des matières

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 cette page.

Prérequis

Installation du serveur maître

Doc officielle : 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 : 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 ici.

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…

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

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

Doc officielle : 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 :

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 :

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 :

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/*