Le module Centreon-Nagvis va nous permettre d’intégrer Nagvis dans notre interface Centreon UI sans devoir s’authentifier sur l’interface Nagvis. La limitation de ce module est qu’il ne permet pas l’édition des cartes, seule la lecture est autorisée. Vous devrez utiliser l’interface de Nagvis pour la création et l’édition des cartes.
Attention : Le framework Smarty intégré à l’interface Centreon nécessite une correction avec Debian 8 (Jessie). Merci à Gautier Ferandelle pour avoir trouvé une solution :-)
J’indique aussi les chemins d’installation par rapport à l’article précédent.
Attention : Le framework Smarty intégré à l’interface Centreon nécessite une correction avec Debian 8 (Jessie). Merci à Gautier Ferandelle pour avoir trouvé une solution :-)
J’indique aussi les chemins d’installation par rapport à l’article précédent.
8 Installation du module
8.1 Debian
Récupérez le binaire du module Centreon-Nagvis sur le site Download de Centreon.
cd /usr/local/src wget https://s3-eu-west-1.amazonaws.com/centreon-download/public/Modules/centreon-nagvis/centreon-nagvis-1.1.1.tar.gz
Décompressez le binaire et déplacez le dossier vers le dossier des modules.
tar xzf centreon-nagvis-1.1.1.tar.gzinstallation dossier /usr/share
mv centreon-nagvis-1.1.1/www/modules/centreon-nagvis /usr/share/centreon/www/modules/installation dossier /usr/local
mv centreon-nagvis-1.1.1/www/modules/centreon-nagvis /usr/local/centreon/www/modules/
8.1a Correction du framewok Smarty pour Debian 8
L’interface de Smarty livré avec Centreon souffre d’incompatibilité avec PHP 5.4 installé en standard avec DEBIAN 8. L’affichage des cartes NagVis avec le module Centreon-Nagvis nous donne le résultat ci-dessous.
Le problème vient de l’obsolescence de la fonction preg_replace(). Nous devons modifier le fichier Smarty_Compiler.class.php se trouvant dans le dossier /usr/share/centreon/GPL_LIB/Smarty/libs. Modifiez les lignes 265 à 270.
265 $source_content = preg_replace($search.'e', "'" 266 . $this->_quote_replace($this->left_delimiter) . 'php' 267 . "' . str_repeat(\"\n\", substr_count('\\0', \"\n\")) .'" 268 . $this->_quote_replace($this->right_delimiter) 269 . "'" 270 , $source_content);
Par ces lignes
$source_content = preg_replace_callback($search, create_function('$m',"return '" . $this->_quote_replace($this->left_delimiter) . 'php' . "' . str_repeat(\"\n\", substr_count('\$m[1]', \"\n\")) .'" . $this->_quote_replace($this->right_delimiter) . "';") , $source_content);
L’affichage des cartes se fait sans problème avec la modification.
8.2 CES
Installez le paquet centreon-nagvis
yum install centreon-nagvis
9 Intégration du module dans Centreon
L'installation en ligne de commande est terminée, nous devons terminer l'installation en nous connectant à l'interface web. Actuellement la dernière version du module centreon-nagvis est la version 1.1.1. Les copies d’écran sont réalisées avec Centreon-Web 2.7x mais l’installation est identique pour les versions antérieures.
Sélectionnez le menu Administration / Extensions. Cliquez sur l'icône Action pour installer le module.
Cliquez sur le bouton Install Module.
Le module est installé, cliquez sur back pour revenir à l'affichage des modules.
Lors d’une installation complète du module de Centreon-Nagvis, vous ne pouvez pas sauvegarder les paramètres « Nagvis authentication »
Ce phénomène ne se produit pas lors d’une mise à jour du module. La cause, deux requêtes SQL manquantes dans le fichier d’installation du module. Connectez vous sur la base données du serveur Central.
mysql -u centreon -p centreon
saisissez les commandes suivantes :
INSERT INTO `options` (`key`, `value`) VALUES ('centreon_nagvis_auth', 'single');
INSERT INTO `options` (`key`, `value`) VALUES ('centreon_nagvis_single_user', 'centreon_nagvis');
10 Configuration du module
Le module Centreon-Nagvis autorise deux modes de fonctionnement. Le premier mode Single user, le plus simple, utilise un compte unique Nagvis. Tous les utilisateurs Centreon pourront consulter les cartes Nagvis en lecture seule. Le deuxième mode Centreon User exige un compte Nagvis correspondant à un compte Centreon. Cette solution permet d’utiliser des rôles différents pour donner des droits spécifiques aux utilisateurs Centreon. On peut affecter des cartes à certains utilisateurs grâce aux rôles Nagvis.
10.1 Modification pour l’authentification commune aux deux modes
Il faut modifier l’authentification pour les besoins de Centreon UI. Pour l’installation dans /usr/local, éditez le fichier /usr/local/nagvis/share/server/core/defines/global.php. Pour l’installation dans /usr/share, éditez le fichier /usr/share/nagvis/share/server/core/defines/global.php.Remplacez la ligne suivante :
// NagVis session name define('SESSION_NAME', 'nagvis_session');
Par celle-ci
// NagVis session name define('SESSION_NAME', 'PHPSESSID');
On aura pris le soin de créer nos cartes. Pour l’exemple du mode Centreon User, la carte Central sera dédiée pour user1 et la carte Poller sera dédié pour user2.
10.2 Authentification Single User
Ce mode permet à tous les utilisateurs de Centreon d’accéder aux cartes Nagvis en mode lecture avec le user centreon_nagvis.
10.2.a Configuration Nagvis
Ajoutons un utilisateur que nous nommerons centreon_nagvis. Connectez-vous sur l’interface de Nagvis. Sélectionnez Menu Personnel / Gérez les utilisateurs
Saisir un mot de passe obligatoire pour la création mais il ne servira pas pour la suite. Affectez le rôle Users(read-Only) à notre utilisateur.
10.2.b Configuration Centreon
Connectez-vous à l’interface de Centreon UI. Sélectionnez Administration / Nagvis. Choisissez le mode Single User et l’identifiant Nagvis centreon_nagvis. Vérifiez le chemin de NagVis. Sauvegardez.
C’est terminé pour la configuration. Passez au chapitre Vérification du fonctionnement.
10.3 Authentification Centreon User
Ce mode permet d’associer un utilisateur Nagvis à un utilisateur Centreon afin de créer des accès différents aux cartes grâce aux rôles Nagvis. Dans notre configuration, nous allons créer deux utilisateurs Centreon user1 qui aura accès au Central et user2 qui aura accès au poller.
10.3.a Configuration Nagvis
Ajoutons les utilisateurs user1 et user2. Connectez-vous sur l’interface de Nagvis. Sélectionnez Menu Personnel / Gérez les utilisateurs
Saisir un mot de passe obligatoire pour la création mais il ne servira pas pour la suite. Créez les rôles central et poller que nous associerons respectivement au user1 et user2. Sélectionnez Menu Personnel / Gérez les Rôles
Modifiez les autorisations de chaque rôle.
Affectez les rôles pour chaque utilisateur : user1 sera affecté au rôle central pour accéder seulement à la carte central et user2 sera affecté au rôle poller pour accéder seulement à la carte poller.
10.3.b Configuration Centreon
Connectez-vous à l’interface de Centreon UI. Sélectionnez Administration / Nagvis. Choisissez le mode Centreon User, l’identifiant Nagvis importe peu. Sauvegardez.
Les utilisateurs user1 et user2 devront être créés dans Centreon. Il faudra leur affecter les bonnes ACL, pour cela lisez l’article suivant sur la configuration des ACL. C’est terminé pour la configuration. Passez au chapitre Vérification du fonctionnement.
11 Vérification du fonctionnement
11.1 Authentification Single User
C’est le mode de fonctionnement le plus simple. Connectez-vous avec un utilisateur lambda sur l’interface Centreon UI. Sélectionnez le menu View / Nagvis pour les versions Centreon inférieures à 2.7x. Sélectionnez le menu Monitoring / Nagvis pour les versions Centreon supérieures et égales à 2.7x. Vous avez accès aux cartes Nagvis. Pour les sélectionnez, cliquez sur le menu déroulant en haut à gauche de la page.
Plusieurs fonctions de NagVis version 1.8.x ont des noms identiques avec Centreon provoquant une incompatibilité de fonctionnement. Cela se traduit par une page blanche dans le menu Nagvis
Si vous avez la curiosité de regardez les logs d’apache, vous lirez ceci :
tail -f /var/log/apache2/error.log
[Sat Mar 19 16:12:55 2016] [error] [client 172.16.209.1] PHP Fatal error: Cannot redeclare get_error() (previously declared in /usr/share/centreon/www/include/common/common-Func.php:1751) in /usr/share/nagvis/share/server/core/functions/html.php on line 76, referee: http://172.16.209.70/centreon/main.php?p=402
[Sat Mar 19 17:16:03 2016] [error] [client 172.16.209.1] PHP Fatal error: Cannot redeclare debug() (previously declared in /usr/share/centreon/www/modules/centreon-nagvis/index.php:158) in /usr/share/nagvis/share/server/core/functions/debug.php on line 43, referee: http://172.16.209.70/centreon/main.php?p=403
[Sat Mar 19 17:21:55 2016] [error] [client 172.16.209.1] PHP Fatal error: Cannot redeclare microtime_float() (previously declared in /usr/share/centreon/www/header.php:44) in /usr/share/nagvis/share/server/core/functions/debug.php on line 70, referee: http://172.16.209.70/centreon/main.php?p=403
Je vous propose de renommer les fonctions suivantes de Nagvis
get_error()
debug()
microtime_float()
comme ceci
get_error_nagvis()
debug_nagvis()
microtime_float_nagvis()
Modifions les fichiers, placez-vous à la racine du dossier de base nagvis (dans notre exemple /usr/share/nagvis)
cd /usr/share/nagvis/
sed -i -e "s/get_error/get_error_nagvis/g" ./share/server/core/functions/html.php
sed -i -e "s/debug(/debug_nagvis(/g" ./share/server/core/ext/php-gettext-1.0.9/gettext.inc
sed -i -e "s/debug(/debug_nagvis(/g" ./share/server/core/classes/CoreAuthorisationHandler.php
sed -i -e "s/debug(/debug_nagvis(/g" ./share/server/core/classes/CoreSQLiteHandler.php
sed -i -e "s/debug(/debug_nagvis(/g" ./share/server/core/classes/GlobalLanguage.php
sed -i -e "s/debug(/debug_nagvis(/g" ./share/server/core/classes/CoreAuthHandler.php
sed -i -e "s/debug(/debug_nagvis(/g" ./share/server/core/classes/CoreMySQLHandler.php
sed -i -e "s/debug(/debug_nagvis(/g" ./share/server/core/functions/debug.php
sed -i -e "s/microtime_float(/microtime_float_nagis(/g" ./share/server/core/functions/debug.php
Les cartes devraient s’afficher.
Attention pour l’instant cet astuce ne fonctionne qu’avec les versions instables 1.8b1 à 1.8rc3. Avec la nouvelle version de Centreon-Web 2.7.x, l’accès au carte de Nagvis a disparu car le menu Views a été supprimé. Pour faire apparaître le menu Nagvis dans la section Monitoring, connectez-vous à la base centreon :
mysql -u centreon -p centreon
modifiez la base centreon comme ceci :
mysql> INSERT INTO topology (topology_id, topology_name, topology_icone, topology_parent, topology_page, topology_order, topology_group, topology_url, topology_url_opt, topology_popup, topology_modules, topology_show) VALUES ('', 'Nagvis', NULL, 2, 243, 20, 1, './modules/centreon-nagvis/index.php', NULL, '0', '1', '1');
Le menu des cartes s’affiche mais pas les cartes nagvis, il reste une dernière chose à modifier.
Modifions le fichier nagvis.ihtml se trouvant dans le dossier centreon-nagvis. Celui-ci se trouvant dans le dossier module de centreon. Commentez les lignes dans la fonction resizeMap
function resizeMap() {
var height = jQuery('html').height();
jQuery('#map').height(0);
/* Header */
height = height - jQuery('#header').height() - jQuery('#forMenuAjax').height();
/* lignes à commenter */
/* Footer /
height = height - jQuery('#footer').height() - 10;
height = height - jQuery('#contener').height();*/
jQuery('#map').height(height);
}
Les cartes devraient s’afficher. Merci à DaStivi pour la correction.
11.2 Authentification Centreon User
Pour chaque utilisateur Centreon, nous pouvons associer un rôle Nagvis. Dans notre exemple, l’utilisateur user1 aura seulement accès à la carte central et notre utilisateur user2 aura seulement accès à la carte poller.
La contrainte de ce mode est qu’il faut affecter obligatoirement un utilisateur Nagvis pour chaque utilisateur Centreon. Créons un utilisateur user3 dans Centreon UI sans configurer Nagvis. Vous aurez ce message d’erreur lorsque vous accéderez à Nagvis.
Avec CES, vous pouvez avoir ce message d’erreur ci-dessous lors de l’utilisation du module Centreon-nagvis
Vous devez spécifiez le fuseau horaire pour PHP, éditez le fichier /etc/php.ini. Décommentez et complétez la ligne du fuseau horaire :
date.timezone = Europe/Paris
Rechargez Apache
service httpd reload