11 mayo 2015

Instalación de Nagmap

Nagmap es un es una adaptación en PHP de googlemaps para Nagios. En resumen se trata de una pagina que presenta un mapa de Googlemaps en el cual se pueden colocar los servicios y hosts que se quieran por medio de un marker, cambiando el mismo de color de acuerdo al estado del servicio o host:

Consideraciones Iniciales

En esta guía se supone instalado Nagios. No se explicaran configuraciones de servicios o hosts ni respecto a plugins. Nagmap requiere de un web server como Apache para funcionar y también de tener paquetes de php instalados, dado a que esto también es necesario para Nagios no se explicara como instalarlos.

La guía esta realizada pensando en Debian/Ubuntu con capacidad de hacer comando como super usuario con sudo. Esta probada en Ubuntu 14.04 LTS.
Instalación

A continuación se describen los pasos para la instalación de Nagmap, al final se darán guías útiles respecto a la modificación del mapa o la instalación de varios mapas distintos.
Código Fuente

Para descargar codigo fuente puede ingresarse a la pagina de Nagmap en Nagios Exchange:

http://exchange.nagios.org/directory/Addons/Maps-and-Diagrams/nagmap/details

El código fuente de Nagmap se mantiene en Github en la siguiente pagina:

https://github.com/hecko/nagmap/

Y la descarga directa de la rama principal de código es la siguiente:

https://github.com/hecko/nagmap/archive/master.zip

De forma que para descargar el código en un servidor se puede hacer:

cd /tmp/

wget https://github.com/hecko/nagmap/archive/master.zip

Como el código viene comprimido con ZIP se puede descomprimir con el comando UNZIP, hay que instalarlo en caso de que no este ya instalado en el sistema.

sudo apt-get install unzip
unzip master.zip
creating: nagmap-master/
extracting: nagmap-master/.gitignore
inflating: nagmap-master/CHANGELOG
inflating: nagmap-master/INSTALL
inflating: nagmap-master/README
inflating: nagmap-master/config.php.example
inflating: nagmap-master/favicon.ico
inflating: nagmap-master/functions.php
inflating: nagmap-master/index.php
inflating: nagmap-master/marker.php
inflating: nagmap-master/style.css

De esa forma se crea el directorio nagmap-master/ dentro del cual se encuentra el código de nagmap.


Instalación

Para la instalación de Nagmap solo es necesario mover el directorio a la raiz para la cual el Servidor Web esta configurado. En el caso de Apache esto puede verse así:

cat /etc/apache2/sites-available/000-default.conf | grep DocumentRoot

DocumentRoot /var/www/html

En este caso la raíz para el web server es /var/www/html/ entonces podemos copiar aquí los archivos de nagmap.

sudo mv nagmap-master/ /var/www/html/

Configuración Nagmap
Luego de esto es necesario configurar a Nagmap para indicarle de donde obtener el estado de los servicios y hosts. Esto es hace en el archivo de configuración de Nagmap. Nagmap ya trae un archivo de configuración de ejemplo, vamos a conservarlo como respaldo y trabajar en uno nuevo. Copiamos config.php.example al mismo directorio pero con el nombre config.php.

sudo cp /var/www/html/nagmap-master/config.php.example /var/www/html/nagmap-master/config.php

Config.php se ve algo así:


// set these two lines – they are very important

// in linux run `updatedb` and `locate nagios.cfg` and `locate status.dat` to find these files

// they are usually placed in /usr/local/nagios/etc/nagios.cfg and /usr/local/nagios/var/status.dat

$nagios_cfg_file = “/usr/local/nagios/etc/nagios.cfg”;

$nagios_status_dat_file = “/usr/local/nagios/var/status.dat”;

// hostgroup filter – only show hosts from this hotgroup

// leave empty for not filtering

$nagmap_filter_hostgroup = ”;

// set to the centre of your map

$nagmap_map_centre = ’66.17,-15.21′;

// default zoom level of the map

$nagmap_map_zoom = 14;

// show sidebar with hosts and their statuses? 1=yes, 0=no

$nagmap_sidebar = 1;

// which google maps type to use?

$nagmap_map_type = ‘SATELLITE’; //you can use any of these: ROADMAP or SATELLITE or HYBRID or TERRAIN

// use this only to generate extra information for support – this will add a lot of information into the rendered index file

$nagmap_debug = 0;

$nagmap_bubble_extra = ‘https://github.com/hecko/nagmap”>NagMap on GitHub
’;

$nagmap_sidebar_top_extra = ‘
’;

?>


A continuación se explicará cada variable de config.php y como obtenerlas, :
 $nagios_cfg_file

Se trata de la configuración de Nagios: nagios.cfg. Esta se encuentra dentro del directorio de Nagios. La ubicación de este archivo cambia dependiendo de la distribución de Linux y del método de instalación. Ubicaciones comunes de este archivo son:

    /etc/nagios3/nagios.cfg (Instalación en Ubuntu por repositorios).
    /usr/local/nagios/etc/nagios.cfg (Instalación por código fuente).

$nagios_status_dat_file

Este es el archivo que utiliza Nagios para guardar estado de los servicios, downtime y comentarios. Este archivo es procesado por Nagmap para conocer el estado y colocar los servicios en el mapa. Igual que nagios.cfg depende de la instalación, lugares comunes son:

    /var/cache/nagios3/status.dat (Instalación en Ubuntu por repositorios).
    /usr/local/nagios/var/status.dat (Instalación por código fuente)

$nagmap_filter_hostgroup

Se trata de un filtro del hostgroup de Nagios. Si se quieren mostrar solo equipos de cierto hostgroup en el mapa entonces se puede insertar aquí dicho hostgroup.

$nagmap_map_centre

Esta variable define en donde se va a centrar el mapa por defecto. En la configuración viene un ejemplo de la sintaxis esperada. La misma es de forma ‘latitud, longitud’. La posición latitud/longitud se puede encontrar en Google Earth o puede tomarse facilmente de googlemaps en páginas como:

http://universimmedia.pagesperso-orange.fr/geo/loc.htm

$nagmap_map_zoom

Luego de centrar el mapa se puede especificar el nivel de zoom sobre el mapa por defecto. La configuración viene con un valor de 14, para llegar a un nivel deseado es mejor probar con diferentes niveles de zoom hasta conseguir el que se ajuste mejor a nuestras necesidades.

$nagmap_sidebar

Nagmap tiene una barra a la derecha donde se presentan todos los hosts y sus estados. Esta barra se puede desactivar con esta variable colocando un ’0′ o actival colocando un ’1′.

$nagmap_map_type

Esta variable indica el tipo de vista de googlemaps, puede ser por satelite colocando ‘SATELLITE’ o de calles con ‘ROADMAP’.
$nagmap_debug

Si esta modificando algo en el código de nagmap podría querer ver información de errores y alertas en PHP, para eso puede activar el debug colocando un ’1′ en esta variable. De otra forma dejelo desactivado con un ’0′ aquí.

$nagmap_bubble_extra

En esta variable se puede ingresar información extra en la burbuja que se abre al dar click en un marcador del mapa. La información se ingresa en html y entre comillas simples. De ejemplo se tiene:

$nagmap_bubble_extra = ‘https://github.com/hecko/nagmap”>NagMap on GitHub
’;

Esto da la oportunidad de ingresar imagenes estaticas, notas al pie de la burbuja, entre otros.
 $nagmap_sidebar_top_extra

Esta variable también contiene código en HTML pero este código se colocaría adentro de la barra del lado. En el ejemplo se coloca una imagen que esta dentro del mismo servidor.

$nagmap_sidebar_top_extra = ‘
’;

Una vez realizado esto podemos entrar a nuestro server y ver el mapa de nagmap en la dirección: http://IPDELSERVER/nagmap-master. Para este momento ya se vería el mapa pero aún no se ve ningún marcador. Para esto es necesario configurar los equipos de Nagios que se desean en el mapa.

Configuración Nagios
Para configurar Nagios y usarlo con Nagmap es muy sencillo. La configuración se realiza en la definición de cualquier Host. Hay dos variables que se utilizan.

    notes: En notes se coloca la ubicación geográfica de un nodo escribiendola de la siguiente forma: notes latlng: 9.71, -82.83.
    parents: Al colocar un equipo como parent de otro se creará una línea entre ambos que cambiara de color de acuerdo a el estado de los hosts.

Un ejemplo sería:

define host{

use linux-server

host_name Server-02

alias Servidor de Base de Datos

address 10.0.0.2

notes latlng: 9.91, -83.66

parents Switch-01

}

En el ejemplo se observa la variable notes incluyendo la ubicación.

Múltiples Mapas
Hasta ahora si entramos a la siguiente página vemos nuestro mapa:

http://IPDELSERVER/nagmap-master

Sin embargo podríamos crear varios mapas o cambiar la dirección de este. Para eso basta con copias la carpeta entera a un nuevo directorio.

sudo cp -r /var/www/html/nagmap-master/ /var/www/html/servidores

Entrando ahora podemos ver el mapa también en:

http://IPDELSERVER/servidores

Podríamos crear otro mapa solamente de enrutadores

sudo cp -r /var/www/html/nagmap-master/ /var/www/html/enrutadores

Y para definir que se trata solo de enrutadores se puede crear un hostgroup de enrutadores en nagios y luego filtrarlo en config.php del nuevo mapa que creamos.

Integración con Nagios
Nuestros mapas ahora funcionan en nuestro servidor. Para poder integrarlos en nagios podemos editar el archivo html que define la barra de la izquierda en Nagios. Los lugares donde comúnmente esta este archivo son:

    /usr/local/nagios/share/side.php
    /usr/share/nagios3/htdocs/side.php

Tomado de: http://www.nagios-do.org/?p=609