Instalación de Nagvis y su integración al sistema de Monitoreo Centreon 2.8 en Debian 8

Nagvis es una aplicación que nos permite crear de forma muy sencilla páginas web en nuestro servidor Nagios, con imágenes de fondo e iconos de Servicios o hosts del Nagios. Viene configurado por defecto para usar con Nagios, pero vamos a ver que mediante un conector especifico es compatible con Centreon.
Instalamos las dependencias necesarias

apt-get install php5-sqlite graphviz sqlite3 rsync -y

Descargamos Nagvis.

cd /usr/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

Procederemos ahora a su instalación, tener en cuenta que no seleccionaremos ningún backend, ya que luego agregaremos el backend de centreon:

./install.sh

+---------------------------------------------------------------------------
| Welcome to NagVis Installer 1.8.5                                            
+------------------------------------------------------------------------------
| This script is built to facilitate the NagVis installation and update        
| procedure for you. The installer has been tested on the following systems:   
| - Debian, since Etch (4.0)                                                   
| - Ubuntu, since Hardy (8.04)                                                 
| - SuSE Linux Enterprise Server 10 and 11                                     
|                                                                              
| Similar distributions to the ones mentioned above should work as well.       
| That (hopefully) includes RedHat, Fedora, CentOS, OpenSuSE                   
|                                                                              
| If you experience any problems using these or other distributions, please    
| report that to the NagVis team.                                              
+------------------------------------------------------------------------------
| Do you want to proceed? [y]: y
+------------------------------------------------------------------------------
| Starting installation of NagVis 1.8.5                                        
+------------------------------------------------------------------------------
| OS  : Debian GNU/Linux 8                                                     
|                                                                              
+--- Checking for tools -------------------------------------------------------
| Using packet manager /usr/bin/dpkg                                     found 
|                                                                              
+--- Checking paths -----------------------------------------------------------
| Please enter the path to the nagios base directory [/usr/local/nagios]: /etc/centreon-engine/
|   nagios path /etc/centreon-engine/                              found 
| Please enter the path to NagVis base [/usr/local/nagvis]: /usr/share/nagvis
|                                                                              
+--- Checking prerequisites ---------------------------------------------------
| PHP 5.4                                                                found 
|   PHP Module: gd 5.3                                                   found 
|   PHP Module: mbstring compiled_in                                     found 
|   PHP Module: gettext compiled_in                                      found 
|   PHP Module: session compiled_in                                      found 
|   PHP Module: xml compiled_in                                          found 
|   PHP Module: pdo compiled_in                                          found 
|   Apache mod_php                                                       found 
| Checking Backends. (Available: mklivestatus,ndo2db,ido2db,merlinmy)          
| Do you want to use backend mklivestatus? [y]: n
| Do you want to use backend ndo2db? [n]: n
| Do you want to use backend ido2db? [n]: n
| Do you want to use backend merlinmy? [n]: n
| NO (valid) backend(s) specified                                      MISSING 
| Graphviz 2.26                                                          found 
|   Graphviz Module dot 2.26.3                                           found 
|   Graphviz Module neato 2.26.3                                         found 
|   Graphviz Module twopi 2.26.3                                         found 
|   Graphviz Module circo 2.26.3                                         found 
|   Graphviz Module fdp 2.26.3                                           found 
| SQLite 3.7                                                             found                                                                               |
+--- Trying to detect Apache settings -----------------------------------------
| Please enter the web path to NagVis [/nagvis]:
| Please enter the name of the web-server user [www-data]:
| Please enter the name of the web-server group [www-data]:
| create Apache config file [y]:
+--- Checking for existing NagVis ---------------------------------------------
|                                                                              
+------------------------------------------------------------------------------
| Summary                                                                      
+------------------------------------------------------------------------------
| NagVis home will be:           /usr/share/nagvis                             
| Owner of NagVis files will be: www-data                                      
| Group of NagVis files will be: www-data                                      
| Path to Apache config dir is:  /etc/apache2/conf.d                           
| Apache config will be created: yes                                           
|                                                                              
| Installation mode:             install                                       
|                                                                              
| Do you really want to continue? [y]: y
+------------------------------------------------------------------------------
| Creating directory /usr/share/nagvis...                                done  
| Creating directory /usr/share/nagvis/var...                            done  
| Creating directory /usr/share/nagvis/var/tmpl/cache...                 done  
| Creating directory /usr/share/nagvis/var/tmpl/compile...               done  
| Creating directory /usr/share/nagvis/share/var...                      done  
| Copying files to /usr/share/nagvis...                                  done  
| Creating directory /usr/share/nagvis/etc/profiles...                   done  
| Creating main configuration file...                                    done  
|   Adding webserver group to file_group...                              done  
| Creating web configuration file...                                     done  
| Setting permissions for web configuration file...                      done  
|                                                                              
|                                                                              
|                                                                              
+--- Setting permissions... ---------------------------------------------------
| /usr/share/nagvis/etc/nagvis.ini.php-sample                            done  
| /usr/share/nagvis/etc                                                  done  
| /usr/share/nagvis/etc/maps                                             done  
| /usr/share/nagvis/etc/maps/*                                           done  
| /usr/share/nagvis/etc/geomap                                           done  
| /usr/share/nagvis/etc/geomap/*                                         done  
| /usr/share/nagvis/etc/profiles                                         done  
| /usr/share/nagvis/share/userfiles/images/maps                          done  
| /usr/share/nagvis/share/userfiles/images/maps/*                        done  
| /usr/share/nagvis/share/userfiles/images/shapes                        done  
| /usr/share/nagvis/share/userfiles/images/shapes/*                      done  
| /usr/share/nagvis/var                                                  done  
| /usr/share/nagvis/var/*                                                done  
| /usr/share/nagvis/var/tmpl                                             done  
| /usr/share/nagvis/var/tmpl/cache                                       done  
| /usr/share/nagvis/var/tmpl/compile                                     done  
| /usr/share/nagvis/share/var                                            done  
|                                                                              
+------------------------------------------------------------------------------
| Installation complete                                                        
|                                                                              
| You can safely remove this source directory.                                 
|                                                                              
| For later update/upgrade you may use this command to have a faster update:   
| ./install.sh -n /etc/centreon-engine -p /usr/share/nagvis -u www-data -g www-data -w /etc/apache2/conf.d -a y
|                                                                              
| What to do next?                                                             
| - Read the documentation                                                     
| - Maybe you want to edit the main configuration file?                        
|   Its location is: /usr/share/nagvis/etc/nagvis.ini.php                      
| - Configure NagVis via browser                                               
|                                          
| - Initial admin credentials:                                                 
|     Username: admin                                                          
|     Password: admin                                                          
+------------------------------------------------------------------------------

Reiniciamos el servicio de apache.

service apache2 reload

Movemos la configuración del nagvis para apache para /etc/apache2/conf-available/.

mv /etc/apache2/nagvis.conf /etc/apache2/conf-available/

Teniendo en cuenta la configuración la agregamos a apache y reiniciamos el servicio de apache.

a2enconf nagvis.conf
service apache2 reload

Hasta aqui la instalación ya podemos acceder a la web de Nagvis http://ip_servidor/nagvis con las credenciales por defecto.

Seguidamente vamos a integrarlo al centreon previamente instalado en el artículo anterior.
Descargamos el backend desarrollado por centreon

cd /usr/src
git clone https://github.com/centreon/centreon-nagvis-backend.git

Copiar el archivo en el archivo de configuración Nagvis con los derechos apropiados

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

Entramos a la web de centreon y seleccionamos Options/Manage Backend añadiendo el nuevo backend e introducimos los datos del backend.

Ponemos este backend por defecto en nuestro sistema.

Ahora nos queda establecer las url de los equipos, servicios, grupo de equipos y grupo de servicios para que se enlacen con la web de centreon. Vamos a Options/General Configuration/Objetcs defaults y modificamos los campos que mostramos a continuación

Queremos permanecer en la interfaz Centreon cuando se va a instalar el módulo Centreon-Nagvis (que más adelante describiremos), por lo que muestra la información en la misma página.

urltarget="_parent"

Enlace para los huéspedes dos soluciones:
1- La visualización solamente del equipo en detalle

hosturl="[htmlcgi]/main.php?p=20102&o=hd&host_name=[host_name]"

2- La visualización del equipo y sus servicios asociados

hosturl="[htmlcgi]/main.php?p=20201&o=svc&host_search=[host_name]&search=&poller=&hostgroup=&output_search="

Enlace a los servicios:

serviceurl="[htmlcgi]/main.php?p=20201&o=svcd&host_name=[host_name]&service_description=[service_description]"

Enlace a grupos de servicio existen dos variantes:
1- Detalles

servicegroupurl="[htmlcgi]/main.php?p=20212&o=svcOVSG"

2- Resumen

servicegroupurl="[htmlcgi]/main.php?p=20213&o=svcSumSG"

Enlace a grupos de equipos existen dos variantes:
1- Detalles

hostgroupurl="[htmlcgi]/main.php?p=20209&o=svcOVHG"

2- Resumen

hostgroupurl="[htmlcgi]/main.php?p=20210&o=svcSumHG"

Sientase libre de elegir la variante en cada uno de los casos que se adapte a sus necesidades.
Hasta aquí ya tenemos instalado y configurado Nagvis con el backend de centreon y ya pueden usarlo sin ningún tipo, empezar a dibujar su mapa agregando equipos y servicios.
Por ejemplo vamos a crear nuestro primer mapa. Options/Manage Maps

Y automáticamente caemos en el para empezar agregar objetos

Agreguemos el propio equipo servidor centreon a nuestro mapa. Edit Mapa/Add Icon/Equipo.

He aqui nuestro primer equipo dibujado en Nagvis. Tambien podemos agregar servicios, grupo de hosts, grupos de servicios, etc.

 

Si damos click encima del equipo podemos ver que nos remite a la web de centreon y veremos también los servicios.

A partir de ahora todo es opcional si lo desean lo pueden implementar y vamos a integrar la web de Nagvis dentro de la de Centreon y es a través de un módulo que brinda centreon.
Procederemos a descargar el módulo

cd /usr/src
wget https://s3-eu-west-1.amazonaws.com/centreon-download/public/Modules/centreon-nagvis/centreon-nagvis-1.1.1.tar.gz
tar xzf centreon-nagvis-1.1.1.tar.gz

Ahora lo movemos para /usr/share/centreon/www/modules/

mv centreon-nagvis-1.1.1/www/modules/centreon-nagvis /usr/share/centreon/www/modules/

Antes de instalar este modulo vamos a hacer algunas correcciones necesarias.

Modificamos el fichero install.sql en la diguiente ruta /usr/share/centreon/www/modules/centreon-nagvis/sql y lo modificamos para que quede de la siguiente forma.

-- 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');

Otra de las correcciones es el problema de la obsolescencia de la función preg_replace (). Hay que cambiar el archivo Smarty_Compiler.class.php en /usr/share/centreon/GPL_LIB/Smarty/libs. Editar las líneas 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);

por:

$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);

Ahora procederemos a instalar el modulo centreon-nagvis por la interface web de centreon. Administration/Extentions

Dar click debajo de Actions para instalar el modulo.

Click en el boton Module Install

Y damos click en el boton Back. Veremos que ya en la administración esta el acceso a Nagvis. Administration/Nagvis para configurarlo.

Cambiamos el camino de Nagvis (Nagvis Path) a /usr/share/nagvis/share/ y el usuario podemos poner el propio admin.
Seguiremos haciendo correcciones ahora hay que cambiar los requisitos de autenticación para Centreon UI. Edite el archivo de /usr/share/nagvis/share/server/core/defines/global.php y remplace la siguente linea.

// NagVis session name
define('SESSION_NAME', 'nagvis_session');

por:

// NagVis session name
define('SESSION_NAME', 'PHPSESSID');

Ahora debemos cambiar el nombre de las siguientes funciones Nagvis

get_error()
debug()
microtime_float()

por:

get_error_nagvis()
debug_nagvis()
microtime_float_nagvis()

Nos movemos a a la carpeta de Nagvis y allí procederemos con el comando sed a cambiar dichos nombres:

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

Seguidamente modificamos nagvis.ihtml modificar el archivo en la carpeta Centreon-NagVis. Este esta propio modulo centreon-nagvis. Hay que comentar unas lineas.

function resizeMap() {
  var height = jQuery('html').height();
  jQuery('#map').height(0);

  /* Header */
  height = height - jQuery('#header').height() - jQuery('#forMenuAjax').height();

  /* Footer */
  height = height - jQuery('#footer').height() - 10;
  height = height - jQuery('#contener').height();
  jQuery('#map').height(height);
}

a:

function resizeMap() {
  var height = jQuery('html').height();
  jQuery('#map').height(0);

  /* Header */
  height = height - jQuery('#header').height() - jQuery('#forMenuAjax').height();

 /* Footer */ 
 /* lineas a comentar /
  height = height - jQuery('#footer').height() - 10;
  height = height - jQuery('#contener').height();*/
  jQuery('#map').height(height);
}

Ahora ya veremos en nuestro centreon y el mapa1 que agregamos al inicio.

Acá les dejo un mapa de mi insfraestructura

Espero que les sirva de utilidad. En próximos artículos veremos las notificaciones de centreon en Telegram.

1 Trackback / Pingback

  1. Sistema de monitoreo Centreon 2.8.x en Debian 8 | | Sysadmins de cuba

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*