Installation et configuration de Centreon, de A à Z

Dans cet article je vais détailler l’installation d’un serveur de supervision avec la solution Centreon Entreprise Server dans sa version Standard (gratuite et libre), qui est en version 3.3 au moment où j’écris ces lignes. Dans des articles à venir je lui ajouterais NagVis pour avoir de jolies cartes, et certainement aussi le module pour GLPI qui permet d’ouvrir et fermer automatiquement des tickets en cas d’incident.

Pour les sondes on utilisera du SNMP, premièrement parce que les templates déjà présents dans Centreon l’utilisent (ça nous facilite le travail). Ensuite, parce que c’est LE standard pour la supervision, donc c’est disponible partout du serveur jusqu’au commutateur, et si un jour on change de solution de supervision il n’y a pas besoin de changer l’agent qui va avec.

À la fin de ce tutoriel, vous devriez vous retrouver avec quelque chose qui ressemble à ça :

  • Supervision des services Supervision des services

  • Graphique d’utilisation de la bande passante Graphique d'utilisation de la bande passante

Pourquoi Centreon ?

C’est en partie une histoire de feeling, au travail on utilise actuellement Zabbix (en version 2.2). C’est une très bonne solution de supervision, cependant je trouve son interface absolument anti-ergonomique. Lorsqu’il y a un incident on ne sait pas trop où aller chercher l’information, et pire encore, je trouve qu’on manque d’information.

C’est un problème qu’on ne retrouve pas sur les « Nagios-like » (dont Centreon fait partie). L’information est claire, on sait exactement quel est le problème (et pas seulement qu’il y a un incident) et on a l’information directement sous la main.

Bref, je trouve que Zabbix est une usine à gaz.

Toutefois son interface a été un peu rafraîchie dans la version 3 qui est sortie très récemment. Je n’y ai pas noté de gros changements, mais après tout peut-être que c’est moi qui n’y suis pas accoutumé, et qu’il suffirait que je dompte la bête pour l’apprécier. Ça sera peut-être pour une prochaine fois donc…

L’avantage de Centreon sur les autres « Nagios-like » tels que Nagios lui-même, ou Shinken et Icinga, c’est qu’on a une solution tout-en-un, facile à configurer. La configuration se fait relativement simplement, via l’interface Web, plutôt que via les fichiers comme pour les autres solutions. Et surtout, contrairement à celles-ci, il permet de faire nativement de la métrologie, comme Zabbix.

Si vous voulez tout de même faire un tour des solutions du supervision existantes, vous pouvez aller jeter un coup d’œil sur le site Monitoring-FR et son Wiki.

Installation du serveur

Pour l’installation, rien de plus simple, il suffit d’aller télécharger le fichier ISO sur la page de téléchargement de Centreon, la balancer sur une clé USB ou un DVD et booter dessus. Ensuite c’est suivant, suivant, terminer donc pas la peine de s’attarder dessus.

Une fois l’installation terminée et le serveur redémarré, l’interface réseau n’est par défaut pas forcément démarrée, ni configurée. On est sur du CentOS, il faut donc aller modifier le fichier de configuration de l’interface qui se trouve dans le répertoire /etc/sysconfig/network-scripts/. Dans mon cas l’interface s’appelle em1, je modifie donc le fichier /etc/sysconfig/network-scripts/ifcfg-em1.

Si on veut laisser le DHCP et faire en sorte que l’interface soit activée au démarrage du serveur, il suffit de passer la directive ONBOOT à yes (si elle ne l’est pas déjà).

Si on veut utiliser une adresse IP statique il faut passer la directive BOOTPROTO à none et ajouter les lignes suivantes (en adaptant à votre configuration réseau bien sûr) :

IPADDR=192.168.0.10
NETMASK=255.255.255.0
GATEWAY=192.168.0.254
PEERDNS=yes
DNS1=192.168.0.1
DNS2=192.168.0.2

Si vous avez une configuration un peu exotique, vous pouvez jeter un coup d’œil sur la documentation de CentOS afin d’adapter à votre besoin.

Ensuite, pour activer l’interface on fait ifup em1, et on devrait avoir du réseau.

On termine l’installation par yum update -y pour mettre à jour la distribution.

Il ne reste plus qu’à régler le fuseau horaire de PHP. Dans le fichier /etc/php.ini, dé-commenter et renseigner date.timezone = Europe/Paris. Et on redémarre Apache : service httpd restart.

Voilà, notre Centreon devrait maintenant être accessible à l’adresse : http://192.168.0.10/centreon/. Il suffit de suivre les instructions, et choisir ses mots de passe pour l’accès à l’interface et celui de la base de données.

Passage en HTTPS

Si on veut éviter qu’un petit malin sniffe le réseau et récupère nos identifiants, il faut qu’on ajoute le support du HTTPS sur l’interface Web. On installe donc le module SSL/TLS pour Apache2 :

yum install -y mod_ssl

Si le certificat auto-signé n’existe pas (/etc/pki/tls/certs/localhost.crt), on le génère :

cd /etc/pki/tls/certs/
make testcert

Lors du processus il nous a été demandé de protéger la clé privée par une passphrase. Ce qui va avoir pour effet de nous demander cette passphrase à chaque redémarrage de Apache2 (ce qui accessoirement plante le boot de CentOS…). On va donc la retirer :

cd /etc/pki/tls/private/
mv localhost.key localhost.enc-key
openssl pkey -in localhost.enc-key -out localhost.key

Sinon si vous avez un certificat signé par une autorité de certification de confiance, vous pouvez le placez dans le dossier /etc/pki/tls/certs/, et la clé privée dans /etc/pki/tls/private/. Et ensuite il vous faudra adapter /etc/httpd/conf.d/ssl.conf pour pointer vers ceux-ci. Dans ce fichier vous pouvez au passage durcir la configuration SSL/TLS en fonction de votre niveau de paranoïa.

Pour prendre en compte les changements on redémarre le service Apache2 :

service httpd restart

Configuration SNMP d’un hôte

Avant de pouvoir ajouter des hôtes à superviser, il faut installer un serveur SNMP sur ceux-ci.

Sur Debian/Ubuntu par exemple :

apt-get install snmpd

Ensuite dans le fichier de configuration du service SNMP (/etc/snmp/snmpd.conf), pour qu’il écoute sur toutes les interfaces et plus uniquement en local il faut modifier la ligne suivante :

agentAddress udp:161,udp6:161
# ou si on a pas d'IPv6
agentAddress udp:161

Il faut également autoriser votre Centreon à interroger le service SNMP en ajoutant la ligne suivante (192.168.0.10 étant l’IP du Centreon) :

rocommunity secret  192.168.0.10/32

On redémarre le service :

service snmpd restart

Depuis le Centreon on peut tester si ça fonctionne avec la commande suivante :

snmpwalk -v 2c -c secret 192.168.0.X

Il est possible en fonction des éléments que vous comptez superviser (disques, traffic, etc.), qu’il faille paramétrer le service SNMPD pour tourner en root. Pour ceci il faut retirer -u snmp -g snmp de la directive SNMPDOPTS du fichier /etc/default/snmpd, et redémarrer le service. Sans ça le client SNMP n’arrivera pas à récupérer certaines informations, c’est le cas pour les données de consommation de bande passante par exemple.

Ajout d’un hôte dans Centreon

Maintenant qu’on a un hôte avec SNMPD qui tourne, on va pouvoir l’ajouter à notre supervision. On se rend donc dans « Configuration > Hosts » et clique sur le bouton « Add ». On renseigne les champs nécessaires et on lie le template qui va bien avec les services associés :

Ajout hôte

Après avoir sauvegardé, il faut exporter la configuration et redémarrer le « poller », pour ceci on se rend dans « Configuration > Poller » et clique sur l’engrenage dans la colonne « Actions ».

Ici il est conseillé de procéder en deux temps, on lance premièrement la génération de la configuration avec le debug, pour s’assuer qu’il n’y a pas de problème :

Export config

Ensuite on déplace les fichiers et on redémarre le service :

Restart service

Et voilà, vous devriez avoir votre serveur avec ses différents services qui devraient remonter au bout de quelques minutes dans l’interface.

Résolution des problèmes

Aussi merveilleux Centreon soit-il, il y a tout de même quelques bugs à l’issue d’une « fresh install ».

Poller qui ne démarre pas

Bon, là pour la résolution de ce bug, c’est un peu au petit bonheur la chance. Après avoir généré une configuration et l’avoir exportée, redémarrez le service du Broker de Centreon :

service cbd restart

Si ça n’y change rien, essayez les quelques solutions farfelues du fil à ce sujet sur le forum de Centreon.

Mise à jour des plugins

C’est bête, mais les plugins intégrés ne sont pas « à jour ». Ce qui fait que sur certains check ça bug. Pour l’instant je n’ai eu le cas que sur le check SNMP du Swap, donc ce n’est pas nécessairement problématique, en fonction de ce que vous allez superviser.

Quoi qu’il en soit, si vous voulez les plugins à jour et théoriquement fonctionnels, il faut alors cloner le dépôt Git des plugins Centreon ou télécharger la dernière release en date, et ensuite reconfigurer les commandes des checks (dans Configuration > Commands) pour utiliser ces nouveaux plugins.

Bien évidemment ce serait trop facile si tout fonctionnait pareil, il y a donc une syntaxe différente. Celle-ci est assez bien résumée sur le README du dépôt et devrait suffir pour les usages basiques, sinon il faut aller jeter un coup d’œil à la documentation pour les plugins.

Pour le check du Swap, j’ai créé une nouvelle commande que j’ai nommé « check_remote_swap » :

check_remote_swap

perl /opt/centreon-plugins/centreon_plugins.pl --plugin=os::linux::snmp::plugin --mode=swap --hostname=$HOSTADDRESS$  --warning=$ARG1$ --critical=$ARG2$ --snmp-version=$_HOSTSNMPVERSION$ --snmp-community=$_HOSTSNMPCOMMUNITY$

Vous pouvez éventuellement tester que le plugin fonctionne bien :

sudo -u centreon-engine perl centreon_plugins.pl --plugin=os::linux::snmp::plugin --mode=swap --hostname=192.168.0.X --warning=80 --critical=90 --snmp-version=2 --snmp-community=public

Ensuite il faut aller modifier le template du service « SNMP-Linux-Swap » (dans Configuration > Services > Templates) pour lui dire d’utiliser cette commande :

SNMP-Linux-Swap

Il n’y a plus qu’à exporter la configuration, redémarrer le poller et attendre le prochain check.

Ressources :