![Stacks Image 28744](files/stacks-image-c4bb38e-212x168.png)
Centreon-Web 2.8x vient de sortir, je vous propose un dépoussiérage de mes articles sur Nagvis en vous proposant l'installation du module Centreon-Nagvis sur deux installations Full Centreon : une installation avec les sources sous Debian 8 et une installation avec l'ISO Centreon 3.4. J'ai essayé de recenser tous les problèmes bloquants afin de vous proposer une installation à peu près correcte. J'attire cependant votre attention que cette installation n'est pas supportée par l'éditeur Centreon et que je n'ai peut-être pas vu tous les cas de figure. Attention aux futures mises à jour qui pourrait ne pas être compatible avec Nagvis.
Je me suis limité à la version de Nagvis 1.85, ne me demandez pas de l'aide pour d'autres versions plus récentes. J'attends la version stable.
Je me suis limité à la version de Nagvis 1.85, ne me demandez pas de l'aide pour d'autres versions plus récentes. J'attends la version stable.
![Stacks Image 942216](files/stacks-image-855a29e-48x46.png)
1 Prérequis
Par convention, nous utiliserons le chemin d'installation de centreon /usr/share/centreon et pour Nagvis /usr/share/nagvis.
1.1 Installation de Nagvis 1.85
Installez les paquets nécessaires à Nagvis et le backend Centreon.
Debian
apt-get install php5-sqlite graphviz sqlite3 rsync git-core -yCENTREON
yum install graphviz git -y
Téléchargez la dernière version stable 1.8.5 de NagVis.
cd /usr/local/src wget http://www.nagvis.org/share/nagvis-1.8.5.tar.gz tar xzf nagvis-1.8.5.tar.gz cd nagvis-1.8.5
Procédez à l'installation de NagVis. J'utilise l'installation silencieuse. Pour connaître le détail voir l'article sur Nagvis.
Debian
./install.sh -q -n /usr/sbin -p /usr/share/nagvis -u www-data -g www-data -w /etc/apache2/conf-available -a yCENTREON
./install.sh -q -n /usr/sbin -p /usr/share/nagvis -u apache -g apache -w /etc/httpd/conf.d -a y
L'installation est terminée, relancez Apache pour qu'il prenne en compte la nouvelle configuration.
Debian
a2enconf nagvis.conf service apache2 reloadCENTREON
service httpd reload
1.2 Installation du connecteur-backend
Passons à l'installation du connecteur-backend Centreon-Broker. Celui-ci n'étant pas encore dans la distribution NagVis, il faut le récupérer sur le git-hub de Centreon. Récupérez le dernier git de centreon-nagvis-backend.
cd /usr/local/src git clone https://github.com/centreon/centreon-nagvis-backend.git
Copiez le fichier dans le dossier de configuration de Nagvis avec les droits appropriés.
Debian
mv centreon-nagvis-backend/GlobalBackendcentreonbroker.php /usr/share/nagvis/share/server/core/classes/ chown www-data: /usr/share/nagvis/share/server/core/classes/GlobalBackendcentreonbroker.php chmod 664 /usr/share/nagvis/share/server/core/classes/GlobalBackendcentreonbroker.phpCENTREON
mv centreon-nagvis-backend/GlobalBackendcentreonbroker.php /usr/share/nagvis/share/server/core/classes/ chown apache: /usr/share/nagvis/share/server/core/classes/GlobalBackendcentreonbroker.php chmod 664 /usr/share/nagvis/share/server/core/classes/GlobalBackendcentreonbroker.php
1.2a Modification du connecteur-backend
Nagvis ne gère pas l'état Pending de Centreon. Tant que vous aurez un état pending sur votre supervision, vous ne pourrez plus utiliser votre cartographie Nagvis. Voici un exemple d'erreur.
![Stacks Image 942233](files/stacks-image-1c8be1a.png)
Connexion à Nagvis
Nous devrons modifier le fichier GlobalBackendcentreonbroker.php comme il est indiqué dans l'issue #11 du GitHub centreon-nagvis-backend. Editez le fichier /usr/share/nagvis/share/server/core/classes/GlobalBackendcentreonbroker.php et modifiez les lignes suivantes :
Ligne 273 et 415
remplacez
if ($row['has_been_checked'] == '0' || $row['current_state'] == '') {par
if (isset($e) && $row['has_been_checked'] == '0' || $row['current_state'] == '') {
1.3 Configuration de Nagvis
Modifions le fichier de configuration de Nagvis pour faire reconnaître le connecteur-backend de Centreon. Editez le fichier /usr/share/nagvis/etc/nagvis.ini.php.
vi /usr/share/nagvis/etc/nagvis.ini.php
Ajoutez la configuration suivante comme indiqué dans la documentation Centreon:
[global] authmodule="CoreAuthModSQLite" authorisationmodule="CoreAuthorisationModSQLite" dateformat="Y-m-d H:i:s"
En fonction de la distribution, configurez les droits apache.
Debian file_group="www-data" CES file_group="apache"
Ne pas oublier de saisir le mot de passe de la base de données.
file_mode="660" language_detection="user,session,browser,config" language="en_US" refreshtime=60 sesscookiedomain="auto-detect" sesscookiepath="/" sesscookieduration="86400" startmodule="Overview" startaction="view" [paths] base="/usr/share/nagvis/" htmlbase="/nagvis" htmlcgi="/centreon" [defaults] backend="centreonbroker" backgroundcolor="#ffffff" contextmenu=1 contexttemplate="default" event_on_load=0 event_repeat_interval=0 event_repeat_duration=-1 eventbackground=0 eventhighlight=1 eventhighlightduration=30000 eventhighlightinterval=500 eventlog=0 eventloghidden="1" eventscroll=1 headermenu="1" headertemplate="default" headerfade=1 hovermenu=1 hovertemplate="default" hoverdelay=0 hoverchildsshow=1 hoverchildslimit="10" hoverchildsorder="asc" hoverchildssort="s" icons="std_medium" onlyhardstates=0 recognizeservices=1 showinlists=1 showinmultisite=1 urltarget="_parent" hosturl="[htmlcgi]/main.php?p=20201&o=svc&host_search=[host_name]&search=&poller=&hostgroup=&output_search=" hostgroupurl= serviceurl="[htmlcgi]/main.php?p=20201&o=svcd&host_name=[host_name]&service_description=[service_description]&poller=&hostgroup=&output_search=" servicegroupurl= mapurl="[htmlcgi]/main.php?p=243&map=[map_name]" view_template="default" label_show=1 [index] backgroundcolor=#ffffff headermenu="1" headertemplate="default" showmaps=1 showrotations=1 showmapthumbs=0 [automap] [wui] maplocktime=5 grid_show=0 grid_color="#D5DCEF" grid_steps=32 [worker] interval=10 requestmaxparams=0 requestmaxlength=1900 updateobjectstates=30 [backend_centreonbroker] backendtype="centreonbroker" statushost="" dbhost="localhost" dbport=3306 dbname="centreon_storage" dbuser="centreon" dbpass="motdepasse" dbinstancename="default" htmlcgi="/centreon" [states]
Ensuite, connectez-vous sur votre interface nagvis http://[ip du serveur Central]/nagvis.
![Stacks Image 942164](files/stacks-image-d3e844e.png)
Connexion à Nagvis
Cliquez sur Options/Gérer les backends. Vérifiez le backend par défaut soit centreonbroker et sauvegardez le cas échéant.
![Stacks Image 942169](files/stacks-image-493a8ac.png)
Backend par défaut
Vous pouvez aussi ajoutez le backend par l’interface web comme ci-dessous :
![Stacks Image 942174](files/stacks-image-fa35a62.png)
création du backend centreonbroker
2 Installation du module
2.1 Téléchargement
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.
tar xzf centreon-nagvis-1.1.1.tar.gz
2.2 Modification du module
Nous devons modifier un fichier pour avoir l'affichage des menus. Nous en profiterons pour modifier les paramètres par défaut. Modifions le fichier ci-dessous :
vi /usr/local/src/centreon-nagvis-1.1.1/www/modules/centreon-nagvis/sql/install.sql
Modifiez le fichier comme ceci
-- Topology INSERT INTO `topology` (`topology_id`, `topology_name`, `topology_parent`, `topology_page`, `topology_order`, `topology_group`, `topology_url`, `topology_url_opt`, `topology_popup`, `topology_modules`, `topology_show`) VALUES ('', 'Nagvis', 2, 243, 20, 1, './modules/centreon-nagvis/index.php', NULL, '0', '1', '1'); -- Admin page INSERT INTO `topology` (`topology_id`, `topology_name`, `topology_parent`, `topology_page`, `topology_order`, `topology_group`, `topology_url`, `topology_url_opt`, `topology_popup`, `topology_modules`, `topology_show`) VALUES ('', 'Nagvis', 5, 513, 11, 1, './modules/centreon-nagvis/nagvis-config.php', NULL, '0', '1', '1'); INSERT INTO `topology` (`topology_id`, `topology_name`, `topology_parent`, `topology_page`, `topology_order`, `topology_group`, `topology_url`, `topology_url_opt`, `topology_popup`, `topology_modules`, `topology_show`) VALUES ('', 'Nagvis Configuration',513, 51301, 20, 1, './modules/centreon-nagvis/nagvis-config.php', NULL, '0', '1', '1'); -- Insert options INSERT INTO `options` (`key`,`value`) VALUES ('centreon_nagvis_uri','/nagvis/frontend/nagvis-js/index.php'); INSERT INTO `options` (`key`,`value`) VALUES ('centreon_nagvis_path','/usr/share/nagvis/share/'); INSERT INTO `options` (`key`, `value`) VALUES ('centreon_nagvis_auth', 'single'); INSERT INTO `options` (`key`, `value`) VALUES ('centreon_nagvis_single_user', 'centreon_nagvis');
Cette modification vous permettra d'obtenir la visualisation du menu Nagvis dans Centreon.
![Stacks Image 942199](files/stacks-image-d3a7826.png)
Il faut modifier un autre fichier pour afficher les cartes nagvis. Editez le fichier suivant :
vi /usr/local/src/centreon-nagvis-1.1.1/www/modules/centreon-nagvis/nagvis.ihtml
Commentez les lignes suivantes 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); }
Déplacez le dossier vers le dossier des modules.
mv /usr/local/src/centreon-nagvis-1.1.1/www/modules/centreon-nagvis /usr/share/centreon/www/modules/
2.3 Modification de Nagvis
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. Modifions les fichiers, placez-vous à la racine du dossier de base 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
Attention, pensez à renouveler cette opération en cas de mise à jour mineure de Nagvis.
2.3a 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.
![Stacks Image 42928](files/stacks-image-e5e7ec6-736x260.png)
Problème d’affichage avec le framework Smarty er Debian 8
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.
vi /usr/share/centreon/GPL_LIB/Smarty/libs/Smarty_Compiler.class.php
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.
3 Activation 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.
![Stacks Image 29144](files/stacks-image-517f5a2-918x244.png)
1-Installation de l'extension
Sélectionnez le menu Administration / Extensions. Cliquez sur l'icône Action pour installer le module.
![Stacks Image 29165](files/stacks-image-56485fa-914x294.png)
2-Installation de l'extension
Cliquez sur le bouton Install Module.
![Stacks Image 29186](files/stacks-image-dcf4de3-916x290.png)
3-Installation de l'extension
Le module est installé, cliquez sur back pour revenir à l'affichage des modules.
![Stacks Image 29207](files/stacks-image-88719b0-916x236.png)
4-Installation de l'extension
4 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.
![Stacks Image 78821](files/stacks-image-81c51c5.jpg)
Modes du module Centreon-Nagvis
4.1 Modification pour l’authentification commune aux deux modes
Il faut modifier l’authentification pour les besoins de Centreon UI. Editez le fichier /usr/share/nagvis/share/server/core/defines/global.php.
vi /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.
![Stacks Image 103466](files/stacks-image-b3a4ce9-800x196.png)
Création de cartes
4.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.
4.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
![Stacks Image 24326](files/stacks-image-9a6ea98.png)
Création de l’utilisateur
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.
![Stacks Image 24351](files/stacks-image-749b40b.png)
Affectation du rôle
4.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 /usr/share/nagvis/share/. Sauvegardez.
![Stacks Image 103487](files/stacks-image-3dd78ec-800x348.png)
Configuration de Centreon-Nagvis
C’est terminé pour la configuration. Passez au chapitre Vérification du fonctionnement.
4.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.
4.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
![Stacks Image 103601](files/stacks-image-2325d01-800x178.png)
Création des 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
![Stacks Image 103614](files/stacks-image-aa1f2b8.png)
création des rôles central et poller
Modifiez les autorisations de chaque rôle.
![Stacks Image 103627](files/stacks-image-0be5913.png)
modification des rôles central et poller
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.
![Stacks Image 103648](files/stacks-image-3b9ebc0.png)
affectation des rôles central et poller
4.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.
![Stacks Image 103540](files/stacks-image-9e51b2a-800x304.png)
Configuration de Centreon-Nagvis
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.
5 Vérification du fonctionnement
5.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.
![Stacks Image 103669](files/stacks-image-73557dd-800x660.png)
Accès aux cartes
5.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.
![Stacks Image 103698](files/stacks-image-16946cc-800x588.png)
Accès à la carte Central par l’utilisateur user1
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.
![Stacks Image 103719](files/stacks-image-3b68fd7-800x186.png)
Accès refusé pour l’utilisateur user3