Table des matières

Intégrer Nagvis dans Centreon

Introduction

Une demande récurrente des SI souhaitant intégrer à la fois Centreon et Nagvis est la possibilité de posséder une console unique (et une authentification unique) pour ces deux outils. C’est l’objectif que remplit le module centreon-nagvis.

Centreon-nagvis n’est pas une alternative à la solution Centreon Maps de Merethis car il ne permet pas de gérer les ACL au niveau objet et ne propose pas l’ensemble des fonctionnalités de Centreon Maps. Il permet néanmoins d’intégrer Nagvis au sein de Centreon, de gérer les ACL au niveau carte et propose également un système d’authentification et d’autorisation unifié (une fois que vous êtes authentifié dans centreon vous l’êtes également dans nagvis).

Cette intégration a demandé le développement de :

Récupération des sources

Les sources du module sont disponible dans la forge monitoring-fr et bientôt dans la forge communautaire de centreon.

Dernière version : centreon-nagvis-2.2b disponible à cette url : http://forge.monitoring-fr.org/attachments/download/34/centreon-nagvis-2.2b.tar.gz

Prérequis

RedHat/Centos/Centreon Enterprise Server

yum install php-gd php-gettext php-mbstring php-session php-pdo sqlite php-mysql patch
ATTENTION : pour certaines versions de CentOS une erreur peut apparaitre
php53-common conflicts with php-common
<code>

Solution :
- Installation des EPEL et IUS
<code>
Avec les *** à remplacer selon votre cas (voir http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/)
rpm -Uvh http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/****/epel-release-***.noarch.rpm
rpm -Uvh http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/****/ius-release-***.ius.el5.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
rpm --import /etc/pki/rpm-gpg/IUS-COMMUNITY-GPG-KEY

- Remplacement de php par php53u

yum install yum-plugin-replace
yum replace php --replace-with php53u
yum install php-gd php-gettext php-mbstring php-session php-pdo sqlite php-mysql patch

- Installation des packages nécessaires (incluant graphviz)

yum install php53u-gd php53u-gettext php53u-mbstring php53u-session php53u-pdo sqlite php53u-mysql patch graphviz
# pour une version 5 en 64 bits ce sera : 
wget http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
rpm -Uvh epel-release-5-4.noarch.rpm

Installation

Introduction

Vous pouvez installer le module de deux manières :

Le script est nommé setup.sh (oui oui c’est pas très original). Il doit être lancé avec les privilèges root (ou équivalent avec sudo). il accepte trois paramètres différents :

Le fichier setup.conf doit être paramétré AVANT toute installation.

Fichiers de configuration déjà paramétré

Centreon Enterprise Server 2

Vous devez absolument positionner un mot de passe pour l’utilisateur root et le renseigner dans ce modèle de configuration (MYSQLPASSWD)
mysql> GRANT ALL privileges ON *.* TO 'root'@'localhost' IDENTIFIED BY 'monmotdepasse';
Query OK, 0 ROWS affected (0.10 sec)
 
mysql> FLUSH privileges;
Query OK, 0 ROWS affected (0.02 sec)
A partir de Centreon 2.3, il est nécessaire d’installer le broker NDO non patché et donc de reprendre l’officiel. Ou la version patchée disponible sur le SVN de Centreon.
#!/bin/bash
TMP="/tmp"
 
MODULE_NAME="nagvis"
 
LOCALMACHINE=$(hostname -s)
 
HTTPD_USER="apache"
HTTPD_GROUP="apache"
HTTPD_CONF="/etc/httpd/conf.d"
HTTPD_INIT="/etc/init.d/httpd"
 
CENTREON_WWW="/usr/share/centreon/www"
CENTREON_ETC="/etc/centreon"
NAGVIS_PATH="/opt/nagvis"
CENTREONURI="http://localhost/centreon"
CENTREONU="admin"
CENTREONP="centreon"
 
NAGVISBRANCH="1.5"
NAGVISVER="${NAGVISBRANCH}.9"
NAGVISDL="http://downloads.sourceforge.net/project/nagvis/NagVis%20$NAGVISBRANCH/nagvis-$NAGVISVER.tar.gz"
NAGVISPATH="/opt/nagvis"
NAGVISURI="/nagvis"
 
NAGVISBACKENDS="ndo2db"
NAGVISNDO="/usr/sbin/ndo2db"
NAGVISLIVE=""
 
ENGINE="Nagios"
ENGINEPATH="/usr/lib/nagios"
ENGINEBIN="/usr/sbin/nagios"
GRAPHVIZBIN="/usr/bin"
 
MYSQLUSER="root"
MYSQLPASSWD="manager"
MYSQLHOST="localhost"
MYSQLPORT="3306"
CENTREONDB="centreon"
CENTREONUSER="centreon"
CENTREONPASSWD=$(cat $CENTREON_ETC/conf.pm | grep "mysql_passwd" | awk -F = '{print $2}' | sed -e "s/^ //g" -e "s/\"//g" -e "s/;$//g")
CENTSTATUSDB="centstatus"
NAGVISDB="nagvis"
NAGVISUSER="nagvis"
NAGVISPASS="$CENTREONPASSWD"
INSTANCE="Central"
 
 
 
# DO NOT MODIFY HERE !
 
sqlmoduleconf="USE $CENTREONDB;
INSERT INTO options (\`key\`,\`value\`) VALUES ('centreon-nagvis-db-password','$NAGVISPASS');
INSERT INTO options (\`key\`,\`value\`) VALUES ('centreon-nagvis-db-user','$NAGVISUSER');
INSERT INTO options (\`key\`,\`value\`) VALUES ('centreon-nagvis-db-name','$NAGVISDB');
INSERT INTO options (\`key\`,\`value\`) VALUES ('centreon-nagvis-db-port','$MYSQLPORT');
INSERT INTO options (\`key\`,\`value\`) VALUES ('centreon-nagvis-db-host','$MYSQLHOST');"
 
sqlclean="DROP TABLE IF EXISTS $CENTREONDB.centreonnagvis; DROP DATABASE IF EXISTS $NAGVISDB;"
 
sqlcentreon="use $CENTREONDB; CREATE TABLE  centreonnagvis  ( acl_group_id  int(10) NOT NULL, roleId  int(10) NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=latin1;"
 
sqlacl="GRANT SELECT on $CENTREONDB.centreonnagvis to '$NAGVISUSER'@'$LOCALMACHINE';
GRANT ALL PRIVILEGES ON \`$NAGVISDB\`.* to '$NAGVISUSER'@'$LOCALMACHINE' identified by '$NAGVISPASS';
GRANT SELECT on $CENTREONDB.acl_groups to '$NAGVISUSER'@'$LOCALMACHINE';
GRANT SELECT on $CENTREONDB.session to '$NAGVISUSER'@'$LOCALMACHINE';
GRANT SELECT on $CENTREONDB.acl_group_contacts_relations to '$NAGVISUSER'@'$LOCALMACHINE';
GRANT SELECT on $CENTREONDB.contact to '$NAGVISUSER'@'$LOCALMACHINE';
GRANT SELECT on \`$NAGVISDB\`.roles to '$CENTREONUSER'@'$LOCALMACHINE';
FLUSH PRIVILEGES;"
 
sqlnagvisdb="CREATE DATABASE IF NOT EXISTS $NAGVISDB  DEFAULT CHARACTER SET latin1 ;
USE  $NAGVISDB ;
DROP TABLE IF EXISTS  perms ;
CREATE TABLE  perms  (
   permId  int(10) NOT NULL AUTO_INCREMENT,
   \`mod\`  varchar(100) DEFAULT NULL,
   \`act\`  varchar(100) DEFAULT NULL,
   \`obj\`  varchar(100) DEFAULT NULL,
  PRIMARY KEY ( permId ),
  UNIQUE KEY  permId  ( \`mod\` , \`act\` , \`obj\` )
) ENGINE=MyISAM AUTO_INCREMENT=150 DEFAULT CHARSET=latin1;
 
DROP TABLE IF EXISTS  roles ;
CREATE TABLE  roles  (
   roleId  int(10) NOT NULL AUTO_INCREMENT,
   name  varchar(100) DEFAULT NULL,
  PRIMARY KEY ( roleId ),
  UNIQUE KEY  roleId  ( name )
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;
 
DROP TABLE IF EXISTS  roles2perms ;
CREATE TABLE  roles2perms  (
   roleId  int(10) DEFAULT NULL,
   permId  int(10) DEFAULT NULL,
  UNIQUE KEY  roleId  ( roleId , permId )
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 
DROP TABLE IF EXISTS  users ;
CREATE TABLE  users  (
   userId  int(10) NOT NULL AUTO_INCREMENT,
   name  varchar(100) DEFAULT NULL,
   password  varchar(40) DEFAULT NULL,
  PRIMARY KEY ( userId ),
  UNIQUE KEY  userId  ( name )
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
 
DROP TABLE IF EXISTS  users2roles ;
CREATE TABLE  users2roles  (
   userId  int(10) DEFAULT NULL,
   roleId  int(10) DEFAULT NULL,
  UNIQUE KEY  userId  ( userId , roleId )
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 
DROP TABLE IF EXISTS  version ;
CREATE TABLE  version  (
   version  varchar(100) NOT NULL DEFAULT '',
  PRIMARY KEY ( version )
) ENGINE=MyISAM DEFAULT CHARSET=latin1;"

Paramètres de configuration

PARAMÈTRECOMMENTAIRE
HTTPD_USERUtilisateur apache (peut être httpd sous redhat)
HTTPD_GROUPgroupe apache (peut être httpd sous redhat)
HTTPD_CONFChemin d’accés aux fichier de configuration pour le vhost par défaut de apache (sous redhat /etc/httpd/conf.d)
HTTPD_INITScript de démarage de apache (sous redhat c’est /etc/init.d/httpd)
CENTREON_BASErépertoire d’installation de centreon (peut être également /usr/local/centreon)
CENTREONUUtilisateur admin de centreon
CENTREONPMot de passe de l’utilisateur admin de centreon
NAGVISPATHChemin d’installation de nagvis
MYSQLUSERutilisateur root mysql
MYSQLPASSWDmot de passe de l’utilisateur root
MYSQLHOSTServeur mysql
MYSQLPORTPort TCP d’accès au serveur mysql
CENTREONUSERUtilisateur mysql pour les bases centreon, centstatus et centstorage
CENTREONPASSWDMot de passe de CENTREONUSER
NAGVISUSERUtilisateur pour la base mysql nagvis
NAGVISPASSmot de passe $NAGVISUSER

* Vous ne devriez pas avoir besoin de toucher à cela :

PARAMÈTRECOMMENTAIRE
TMPUn repertoire temporaire ou seront extraite les archives
MODULE_NAMENom du modules
LOCALMACHINENom de l’hôte local (eventuellement vous pouvez le modifier manuellement par localhost si votre serveur mysql n’est pas distant
CENTREONURIUrl d’accès a centreon (du point de vue du serveur centreon)
CENTREON_WWWrépertoire correspondant à l’application web centreon
CENTREON_ETCrépertoire ou sont stockés les fichiers de configuration de centreon
NAGVISBRANCHBranche nagvis sur sourceforge
NAGVISVERrelease de la branche nagvis
NAGVISDLurl de téléchargement de nagvis
NAGVISURI
NAGVISBACKENDS
NAGVISNDO
ENGINE
ENGINEPATH
ENGINEBIN
GRAPHVIZBIN
INSTANCE
CENTREONDBBase de donnée centreon
CENTSTATUSDB
NAGVISDB

Après installation

le module centreon nagvis s’appuie sur un couplage entre les groupe d’ACL centreon et les rôles nagvis. On peut ainsi avoir une limitation des cartes visibles par un utilisateur Centreon.

A l’installation rien n’est paramétré. Nous allons voir comment paramétrer centreon et nagvis afin d’obtenir les ACL nécessaires à la consultation des cartes. A terme il sera possible de donner accès à nagvis simplement en affectant un contact centreon à un groupe de contacts spécifique.

Dans centreon :

Dans cet exemple l’utilisateur n’a accès qu’aux cartes Nagvis et rien d’autre. Il faudra combiner cela avec le reste des droits à positionner pour obtenir un affichage complet de centreon.
L’accès à nagvis seul se fait avec les utilisateur et mots de passe par défaut (nagiosadmin/nagiosadmin). Pensez à les modifier !