Menu


Stacks Image 28744
Mise à jour de ma procédure pour Nagvis, je vous propose l'installation du module Centreon-Nagvis sur une installation avec l'ISO Centreon-21.10-2.el7.x86_64. 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.
J'utilise la dernière version stable Nagvis 1.9.27.
Stacks Image 942216
Testé avec Centreon-Web 21.10.x et une fresh-install Centreon (ISO CentOS)

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.9.27

Installez les paquets nécessaires à Nagvis et le backend Centreon.
CENTREON
yum install graphviz wget git -y
Téléchargez la dernière version stable 1.9.27 de NagVis.
cd /usr/local/src
wget http://www.nagvis.org/share/nagvis-1.9.27.tar.gz
tar xzf nagvis-1.9.27.tar.gz
cd nagvis-1.9.27
Procédez à l'installation de NagVis. J'utilise l'installation silencieuse. Pour connaître le détail voir l'article sur Nagvis.
CENTREON
./install.sh -q -n /usr/sbin -p /usr/share/nagvis -u apache -g apache -w /opt/rh/httpd24/root/etc/httpd/conf.d -a y
L'installation est terminée, il faut modifier la configuration de Nagvis pour Apache afin de l'adapter au php-fpm installé sur le serveur Centreon.

1.2 Configuration de Nagvis

Remplacez le fichier de configuration d'apache.
CENTREON
vi /opt/rh/httpd24/root/etc/httpd/conf.d/nagvis.conf
Modifiez le fichier comme suit en remplaçant l'ancien contenu par celui-ci :
# 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
Nous devons créer une configuration php-fpm pour Nagvis.
CENTREON
vi /etc/php-fpm.d/nagvis.conf
Configurez comme ceci.
CENTREON
[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/log/php-fpm/nagvis-error.log
php_admin_flag[log_errors] = on
php_value[session.save_handler] = files
php_value[session.save_path]    = /var/lib/php/session
php_value[soap.wsdl_cache_dir]  = /var/lib/php/wsdlcache
Stacks Image 942357
Vérifiez l'existence du dossier /var/lib/php/sessions
L'absence du dossier ou une erreur de saisie peut provoquer ce type d'erreur à la connexion de Nagvis
nagvis_erreur_session
Relancez Apache pour qu'il prenne en compte la nouvelle configuration.
CENTREON
systemctl restart php-fpm httpd24-httpd

1.3 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.
CENTREON
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.3a Modification du connecteur-backend

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         }
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         }
ou utiliser la commande suivante
sed -i -e "s/extension_loaded('mysql')/extension_loaded('mysqli')/g" /usr/share/nagvis/share/server/core/classes/GlobalBackendcentreonbroker.php
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
Erreur du à l'état pending
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'] == '') {
ou utiliser la commande suivante
sed -i -e "s/\$row\['has_been_checked'\]/isset(\$e) \&\& \$row\['has_been_checked'\]/g" /usr/share/nagvis/share/server/core/classes/GlobalBackendcentreonbroker.php

1.4 Configuration de Nagvis

Maintenant, si voulez avoir une configuration propre, vous pouvez nettoyer la configuration par défaut de NagVis. Supprimez tous les exemples.
rm -f /usr/share/nagvis/etc/maps/*.cfg
Modifions le fichier de configuration de Nagvis pour adapter à la configuration de Centreon et ajouter le connecteur-backend de Centreon. Editez le fichier :
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.
Ne pas oublier de saisir le mot de passe de la base de données. La valeur _top du paramètre urltarget est essentielle pour la navigation dans l'IHM Centreon. Nouvelles url pour s'adapter à la vue ressources status de Centreon. Attention, les paramètres hosturl et serviceurl pour Centreon 21.10 provoquent des effets indésirables sur mes pages web. Vous pouvez télécharger le fichier à cette adresse.
Stacks Image 942362
Extrait du fichier de conf
Ci-dessous un extrait du fichier de configuration.
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"
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="_top"
;*********hosturl="<télécharger l'exemple>"***************
hostgroupurl="[htmlcgi]/main.php?p=20203&o=hg"
serviceurl=""
servicegroupurl="[htmlcgi]/main.php?p=20212&o=svcOVSG"
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
updateobjectstates=30

[backend_centreonbroker]
backendtype="centreonbroker"
statushost=""
dbhost="localhost"
dbport=3306
dbname="centreon_storage"
dbuser="centreon"
; ***** modifier le mot de passe *********
dbpass="motdepasse"
dbinstancename="default"
htmlcgi="/centreon"

[states]
Ensuite, à l'aide de l'utilisateur admin et de son mot de passe par défaut admin, connectez-vous sur votre interface nagvis http://[ip du serveur Central]/nagvis.
Stacks Image 942164
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
Backend par défaut
Vous pouvez aussi ajoutez le backend par l’interface web comme ci-dessous :
Stacks Image 942174
création du backend centreonbroker

2 Installation du module

2.1 Téléchargement

Nous allons récupérer la dernière version du module Centreon-Nagvis sur le GitHub de Centreon.
cd /usr/local/src
git clone https://github.com/centreon/centreon-nagvis.git

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/www/modules/centreon-nagvis/sql/install.sql
Modifiez le fichier comme ceci
-- Topology
INSERT INTO `topology` (`topology_name`, `topology_parent`, `topology_page`, `topology_order`, `topology_group`, `topology_url`, `topology_url_opt`, `topology_popup`, `topology_modules`, `topology_show`, `topology_style_class`, `topology_style_id`, `topology_OnClick`, `readonly`, `is_react`) VALUES ('Nagvis', 2, 243, 20, 1, './modules/centreon-nagvis/index.php', NULL, '0', '1', '1',NULL,NULL,NULL,'1','0');
-- Admin page
INSERT INTO `topology` (`topology_name`, `topology_parent`, `topology_page`, `topology_order`, `topology_group`, `topology_url`, `topology_url_opt`, `topology_popup`, `topology_modules`, `topology_show`, `topology_style_class`, `topology_style_id`, `topology_OnClick`, `readonly`, `is_react`) VALUES ('Nagvis', 5, 513, 11, 1, './modules/centreon-nagvis/nagvis-config.php', NULL, '0', '1', '1',NULL,NULL,NULL,'1','0');
INSERT INTO `topology` (`topology_name`, `topology_parent`, `topology_page`, `topology_order`, `topology_group`, `topology_url`, `topology_url_opt`, `topology_popup`, `topology_modules`, `topology_show`, `topology_style_class`, `topology_style_id`, `topology_OnClick`, `readonly`, `is_react`) VALUES ('Nagvis Configuration',513, 51301, 20, 1, './modules/centreon-nagvis/nagvis-config.php', NULL, '0', '1', '1',NULL,NULL,NULL,'1','0');


-- 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 942288
Stacks Image 942348
Pas d'affichage de carte ou carte tronquée
Depuis la version Centreon-Web 20.10.6, modifiez le fichier :
vi /usr/local/src/centreon-nagvis/www/modules/centreon-nagvis/nagvis.ihtml

Commentez le header et le footer comme ceci :
function resizeMap() {
var height = jQuery('html').height();
jQuery('#map').height(0);

/* lignes à commenter */
/* 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/www/modules/centreon-nagvis /usr/share/centreon/www/modules/

2.3 Modification de Nagvis

Plusieurs fonctions de NagVis version 1.9.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.12/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/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/CorePDOHandler.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
Stacks Image 942285
Attention en cas de mise à jour de Nagvis
Attention, pensez à renouveler cette opération en cas de mise à jour mineure de Nagvis. Cette opération est à reconsidérer en cas de mise à jour majeure;

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 du GitHub. Sélectionnez Administration / Extensions / Gestionnaire
Stacks Image 29144
1-Installation de l'extension
Sélectionnez le menu Administration / Extensions. Cliquez sur l'icône Action pour installer le module.
Stacks Image 29165
2-Installation de l'extension
Le module est installé

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
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
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
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
Affectation du rôle

4.2.b Configuration Centreon

Connectez-vous à l’interface de Centreon UI. Sélectionnez Administration / Nagvis / Nagvis configuration. 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
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
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
création des rôles central et poller
Modifiez les autorisations de chaque rôle.
Stacks Image 103627
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
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
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électionner, cliquez sur le menu déroulant en haut à gauche de la page.
 
Stacks Image 103669
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
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
Accès refusé pour l’utilisateur user3
Stacks Image 942294
Problème avec la worldmap interactive.
Voici une astuce fourni par DonKI Shoot, merci à lui, si vous avez des problèmes d'erreurs javascript pour une longitude ou une latitude vide "NaN". Il est conseillé de vider les tables objects. Voici les commandes :
sqlite3 worldmap.db
sqlite> .tables
objects version
sqlite> DELETE FROM version;
sqlite> DELETE FROM objects;
sqlite> VACUUM;
sqlite> SELECT * FROM version;
sqlite> SELECT * FROM objects;
sqlite> .quit

5.3 Modification pour lister les groupes d'hôtes.

Une erreur s'affiche lorsqu'on utilise les groupes d'hôtes comme ci-dessous.
Stacks Image 942324
Erreur avec un groupe d'hôtes
Pour y remédier, il faudra supprimer le champ hg.alias dans le fichier /usr/share/nagvis/share/server/core/classes/GlobalBackendcentreonbroker.php du connecteur Backend. Dans la fonction getHostgroupStateCounts, supprimez les lignes suivantes entourées en rouge :
Stacks Image 942329
Stacks Image 942332
Stacks Image 942343
Vous obtiendrez cette vue.
Stacks Image 942337
Le groupe d'hôtes s'affiche correctement

5.4 Modification pour lister les groupes de services.

Comme précédemment, une erreur s'affiche lorsqu'on utilise les groupes de services comme ci-dessous.
Stacks Image 942302
Erreur avec un groupe de services
Pour y remédier, il faudra supprimer le champ sg.alias dans le fichier /usr/share/nagvis/share/server/core/classes/GlobalBackendcentreonbroker.php du connecteur Backend. Dans la fonction getServicegroupStateCounts, supprimez les lignes suivantes entourées en rouge :
Stacks Image 942309
Stacks Image 942312
Vous obtiendrez cette vue.
Stacks Image 942317
Le groupe de services s'affiche correctement

Nous utilisons des cookies pour nous permettre de mieux comprendre comment le site est utilisé. En continuant à utiliser ce site, vous acceptez cette politique.