Centreon 18.10 utilise un nouveau mécanisme pour l'interface Web avec la version du PHP 7.1. Nous étudierons dans ce tutoriel comment configurer Nagvis avec Centreon version 18.10 après une mise à jour. Ensuite nous aborderons la problématique de l'ouverture de session commune entre Centreon et Nagvis. Un point en suspend, la page de configuration du module qui reste à mdofoer pour la version 18.10.
1 Le contexte
Nous avons un serveur Centreon en 2.8.26 équipé de Nagvis 1.9.8. Ces deux applications communiquent avec le backend Centreon. L'installation utilise le mode Single User.
1.1 Mise à jour de Centreon
La migration ne pose pas de problème majeur, suivez la documentation officielle de Centreon : https://documentation-fr.centreon.com/docs/centreon/en/18.10/upgrade/from_packages.html#mise-a-jour-du-serveur-centreon-central. Conseil : si la mise à jour ne fonctionne pas, faite un clean de la base yum.
[root@central ~]# yum update centreon* Modules complémentaires chargés : fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.ircam.fr * extras: mirrors.ircam.fr * updates: mirrors.ircam.fr centos-sclo-rh | 3.0 kB 00:00:00 centos-sclo-sclo | 2.9 kB 00:00:00 (1/2): centos-sclo-sclo/x86_64/primary_db | 294 kB 00:00:00 (2/2): centos-sclo-rh/x86_64/primary_db | 3.7 MB 00:00:02 No packages marked for updateDans ce cas, lancez la commande suivante
yum clean all
Faire la mise à jour avec l'interface Web. Connectez-vous à l'IHM. Réalisez la mise à jour des modules, widgets et éventuellement des plugins pack. Appliquez de nouveau la configuration (pensez à vider le cache du navigateur) car les plugins nagios sont déplacés dans le dossier /usr/lib64/nagios/plugins.
1.2 Test avec Nagvis
Après la mise à jour de Centreon, on peut tester la page Nagvis qui a l'air de fonctionner au premier abord.
Mais lorsque l'authentification PHPSESSID sera supprimée de la session précédente, les deux applications ne pourront plus communiquer car les versions de PHP sont différentes. En effet, Centreon utilise le PHP 7.1 avec php-fpm et Nagvis utilise l'ancienne version de PHP 5.4.
Pour faire communiquer ces deux applications, nous allons donc configurer Nagvis avec le php-fpm installé sur le serveur Centreon.
2 Configuration de Nagvis
2.1 Fichier de configuration d'apache
Modifiez le fichier de configuration d'apache.
vi /etc/httpd/conf.d/nagvis.conf
Modifiez le fichier comme suit :
# NagVis Apache2 sample configuration file # # ############################################################################# Alias /nagvis /usr/share/nagvis/share/ <LocationMatch ^/nagvis/(.*\.php(/.*)?)$> ProxyPassMatch fcgi://127.0.0.1:9043/usr/share/nagvis/share/$1 </LocationMatch> ProxyTimeout 300 <Directory "/usr/share/nagvis/share"> DirectoryIndex index.php Options Indexes AllowOverride all Order allow,deny Allow from all Require all granted <IfModule mod_php5.c> php_admin_value engine Off </IfModule> AddType text/plain hbs </Directory> RedirectMatch ^/$ /nagvis
2.2 Fichier de configuration du module php-fpm
Nous devons créer une configuration pour Nagvis.
vi /etc/opt/rh/rh-php71/php-fpm.d/nagvis.conf
Configurez comme ceci.
[nagvis] user = apache group = apache listen = 127.0.0.1:9043 listen.allowed_clients = 127.0.0.1 pm = ondemand pm.max_children = 30 pm.process_idle_timeout = 10s pm.max_requests = 500 rlimit_files = 4096 php_admin_value[error_log] = /var/opt/rh/rh-php71/log/php-fpm/nagvis-error.log php_admin_flag[log_errors] = on php_value[session.save_handler] = files php_value[session.save_path] = /var/opt/rh/rh-php71/lib/php/session php_value[soap.wsdl_cache_dir] = /var/opt/rh/rh-php71/lib/php/wsdlcache
Le chemin des sessions sera identique au fichier de configuration de Centreon. Relancez les services.
systemctl restart rh-php71-php-fpm systemctl restart httpd
2.3 Test de Nagvis
On tente de nouveau l'interface Centreon avec Nagvis.
Nous sommes bien connectés automatiquement avec le compte centreon_nagvis mais le backend Centreon ne veut plus fonctionner avec la version PHP 7.1.
3 Modification du backend Centreon
Le backend Centreon s'appuie sur les modules PHP version 5.4 comme indiqué vers la ligne 888 du fichier /usr/share/nagvis/share/server/core/classes/GlobalBackendcentreonbroker.php
888 private function connectToDb() { 889 if (false === extension_loaded('mysql')) { 890 throw new BackendConnectionProblem(l('mysqlNotSupported', array('BACKENDID', $this->_backendId))); 891 }
Vérifions les modules de PHP version 5.4
php -m …………. libxml mbstring mhash mysql mysqli mysqlnd openssl pcntl pcre PDO ………..
On retrouve le module mysql chargé. Faisons de même pour la version PHP 7.1
/opt/rh/rh-php71/root/usr/bin/php -m …………. libxml mbstring mysqli mysqlnd openssl pcntl pcre PDO …………
Le module mysql n'existe plus. Par contre le module mysqli est disponible, c'est celui-ci que nous utiliserons. Modifions le backend comme suit :
888 private function connectToDb() { 889 if (false === extension_loaded('mysqli')) { 890 throw new BackendConnectionProblem(l('mysqlNotSupported', array('BACKENDID', $this->_backendId))); 891 }
Vérifions de nouveau l'interface Centreon.
La cartographie Nagvis fonctionne de nouveau.
4 Module Centreon-Nagvis
Actuellement, il subsiste un problème de compatibilité avec l'interface Centreon pour le menu administration du module. Je n'ai pas encore trouvé de solution, car il faut modifier le code php de ce module.
Je suis à votre écoute si vous avez une solution.