lunes, 6 de mayo de 2013

Instalación Nagios 3.5.0 sobre Debian 6



Instalamos librerías para compilación de Nagios


apt-get install make gcc g++ sudo


Además instalamos las últimas versiones (Debian SID para amd64) de los siguientes paquetes:


  • libjpeg-dev
  • libgd2-xpm
  •  libgd2-xpm-dev
  •  libpng12-dev
  • libgd-tools


mediante apt-get install nombre_paquete.


El siguiente paso va a consistir en instalar la librería gráfica GD (http://www.boutell.com/gd/) desde https://bitbucket.org/pierrejoye/gd-libgd/get/GD_2_0_33.tar.gz :


wget https://bitbucket.org/pierrejoye/gd-libgd/get/GD_2_0_33.tar.gz


y descomprimimos e instalamos:


tar -zxvf GD_2_0_33.tar.gz

cd pierrejoye-gd-libgd-5551f61978e3

cd src

./configure

make

make install





El siguiente paso consistirá en la creación de un usuario y un grupo a los que denominaremos “nagios” (tanto uno como otro) y al usuario lo incorporamos al grupo www-data (servidor web Apache):


adduser nagios

groupadd nagios

usermod -G nagios nagios

usermod -G www-data,nagios www-data



Creados el usuario y grupo, e instaladas las librerías básicas necesarias, procedemos a la instalación del core de Nagios, en su versión 3.5.0:



tar zvfx nagios-3.5.0.tar.gz

cd nagios

./configure -prefix=/usr/local/nagios -with-cgiurl=/nagios/cgi-bin -with-htmurl=/nagios/ -with-nagios-user=nagios -with-nagios-group=nagios -with-command-group=nagios

make all

make install

make install-init

make install-commandmode

ls make install-config


Una vez configurado el core, continuamos con los plugins:



tar -zxvf nagios-plugins-1.4.16.tar.gz

cd nagios-plugins-1.4.16

./configure

make


En este punto se produce un error de tipo check_http.c:312:9: error: 'ssl_version' undeclared (first use in this function)

Para lo cual instalamos la siguiente librería:


apt-get install libssl-dev


y volvemos a lanzar el configure / make  y a continuación 


make install


Si la instalación se ha realizado correctamente, podremos acceder a la ruta /usr/local/nagios/libexec/ y listar todos los plugins: 


ls /usr/local/nagios/libexec/



El siguiente paso va a consistir en añadir nagios al inicio del sistema:


ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios


y añadimos al fichero /etc/init.d/nagios , justo después de #!/bin/sh, las siguientes líneas:


### BEGIN INIT INFO

# Provides:          Nagios

# Required-Start:    $syslog

# Required-Stop:     $syslog

# Default-Start:     2 3 4 5 S

# Default-Stop:      0 1 6

# Short-Description: Nagios Boot Script

# Description:

#

### END INIT INFO


Una vez realizados estos pasos, vamos a añadir a nuestro servidor web Apache un nuevo sitio para Nagios. Vamos a crear el fichero nagios en la ruta /etc/apache2/sites-available :


mcedit /etc/apache2/sites-available/nagios


con las siguientes líneas:


ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin

<Directory “/usr/local/nagios/sbin”>

Options ExecCGI

AllowOverride None

Order allow,deny

Allow from all

AuthName “Nagios Access”

AuthType Basic

AuthUserFile /usr/local/nagios/etc/htpasswd.users

Require valid-user

</Directory>

Alias /nagios /usr/local/nagios/share

<Directory “/usr/local/nagios/share”>

Options None

AllowOverride None

Order allow,deny

Allow from all

AuthName “Nagios Access”

AuthType Basic

AuthUserFile /usr/local/nagios/etc/htpasswd.users

Require valid-user

</Directory>



Activamos nuestro nuevo sitio mediante el comando


a2ensite nagios


y definimos una contraseña para el usuario por defecto, nagiosadmin, utilizado para el acceso al panel de control web:


htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin


y comprobamos que el fichero /usr/local/nagios/etc/cgi.cfg contenga use_authentication=1 para que en el acceso se solicite.


Reiniciamos los servicios de apache y nagios 


service apache2 restart

service nagios restart


y comprobamos el correcto funcionamiento del sitio accediendo vía web.




Instalación de NDO y NAGVIS


Una vez instalado Nagios, procedemos a instalar la utilidad gráfica NagVis. Para ello, realizamos la instalación previa de los prerrequisitos. En primer lugar instalamos las utilidades snmp para los chequeos pertinentes:


apt-get install libsnmp-base libsnmp15 snmp snmpd


A continuación vamos a instalar RRD Tools, una BBDD  que maneja planificación de tipo Round Robin, necesaria para la instalación de pnp4nagios (http://www.mrtg.org/rrdtool/download.en.html):


apt-get install rrdtool


RRDTools permite generar logs y gráficas para datos seriales y temporales. 


Otra utilidad que vamos a instalar es MRTG (Multi Router Traffic Grapher). Se trata de una herramienta que nos permite monitorizar varias características de servidores (la carga del sistema, capacidad del disco duro, tráfico en las interfaces de red, etc.) , reportando información gráfica visible en HTML:


apt-get install mrtg


Durante la instalación se nos preguntará si deseamos que sólo el usuario “root” tenga acceso al fichero de configuración de MRTG. 





Indicamos que “”. A continuación lo configuramos:


mkdir /etc/mrtg

mv /etc/mrtg.cfg /etc/mrtg/

cfgmaker --global 'WorkDir:/var/www/mrtg' --global 'Options[_]: bits,growright' --output /etc/mrtg/mrtg.cfg public@10.x.x.x public@10.y.y.y

·

mkdir /var/www/mrtg

indexmaker --output=/var/www/mrtg/index.html /etc/mrtg/mrtg.cfg



También vamos a instalar Smokeping, una herramienta que nos va a permitir monitorizar la latencia de la red además de permitir almacenar las mediciones a largo plazo y presentarlas en gráficas vía web mostrando la carga de la conexión a red. 


En primer lugar agregamos los siguiente módulos CPAN:


apt-get install librrds-perl

apt-get install libnet-telnet-perl

apt-get install libnet-dns-perl

apt-get install libnet-ldap-perl

apt-get install libfcgi-perl

apt-get install libcgi-fast-perl

apt-get install libconfig-grammar-perl


Vamos a instalar también el módulo FastCGI para Apache


apt-get install libapache2-mod-fcgid php5-cgi

a2enmod actions

a2enmod fcgid

service apache2 restart


A continuación creamos un fichero /etc/apache2/conf.d/php.conf con el siguiente contenido:



<Directory /usr/share>  

AddHandler fcgid-script .php  

FCGIWrapper /usr/lib/cgi-bin/php5 .php  

Options ExecCGI FollowSymlinks Indexes

</Directory>  

<Files ~ (\.php)>  

AddHandler fcgid-script .php  

FCGIWrapper /usr/lib/cgi-bin/php5 .php  

Options +ExecCGI  

allow from all

</Files>



Y reiniciamos Apache


            service apache2 restart



Deberemos así mismo, instalar la utilidad fping, que nos permitirá hacer ping a un rango de IPs. De esta forma se puede enumerar una red en muy poco tiempo.



tar -zxvf fping-3.4.tar.gz

cd fping-3.4

./configure

make

make install



una vez instalado fping, instalamos Smokeping:



tar xvfz smokeping-2.6.9.tar.gz

cd smokeping-2.6.9

./configure


Observamos que la variable de entorno PERL5LIB no está configurada, así que hacemos los siguiente:


perl -e 'print join "\n", @INC;'





Y exportamos a las rutas configuradas, la nueva del smokeping:


export PERL5LIB=/home/nagios/nagiosFile/smokeping-2.6.9/lib"${PERL5LIB:+:$PERL5LIB}"

env|grep -i perl (comprobamos que se ha añadido).



Y lanzamos las instalación de la aplicación:


make

make install


El siguiente paso consistirá en instalar y configurar NRPE. Instalamos la librería libssl-dev y el servicio xinetd como requisitos previos:


apt-get install libssl-dev

apt-get install xinetd


y descargamos la última version disponible de NRPE:



tar xvfz nrpe-2.14.tar.gz

cd nrpe-2.14

./configure --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/x86_64-linux-gnu

make all

make install-plugin

make install-daemon

make install-daemon-config

make install-xinetd



El siguiente paso consiste en configurar NRPE, para lo cual editamos el fichero /etc/xinetd.d/nrpe


nano /etc/xinetd.d/nrpe 


y añadimos a la etiqueta "only_from=" la dirección IP de nuestro servidor Nagios


only_from = 127.0.0.1 172.16.18.38


A continuación añadimos la siguiente entrada para el daemon de NRPE en el fichero /etc/services:


echo "nrpe 5666/tcp #NRPE" >> /etc/services


y reiniciamos el servicio NRPE con


/etc/init.d/xinetd restart


Podemos probar si NRPE se encuentra escuchando con el comando:


netstat -l | grep nrpe


y para comprobar que el daemon funciona correctamente podemos ejecutar el plugin check_nrpe


/usr/local/nagios/libexec/check_nrpe -H localhost


A continuación vamos a instalar la BBDD mySQL (versión 5.5 actualmente):


apt-get install mysql-server php-mysql mysql-devel


y creamos una base de datos “nagios” y un usuario “nagios” para acceder a la misma:


create database nagios;

create user 'nagios';

grant usage on *.* to nagios identified by 'nagios';

grant all privileges on nagios.* to nagios;





A continuación vamos a configurar el servidor de correo Exim4, que viene por defecto en  Debian. Para ello lanzaremos el comando:


dpkg-reconfigure exim4-config


que nos lanzará un asistente que nos ayudará a configurar nuestro servidor de correo.



Aceptaremos la mayoría de las opciones por defecto, modificando las siguientes:


1.      En la configuración general de correo, indicaremos que “se envía mediante un smarthost, se recibe a través de SMTP”:





2.      Deberemos indicar el nombre de nuestro equipo (en este caso concreto, nagios.dominio.corp), desde el cual se va a realizar los envíos de correo:





Y por último, deberemos indicar el nombre del “smarthost”, indicando así mismo el puerto utilizado si no es el puerto por defecto SMTP:






Llegado a este punto, podemos realizar unas pruebas, añadiendo una serie de ficheros de configuración a nuestro nagios. La ruta de estos ficheros es /usr/local/nagios/etc.


Podemos indicar en el fichero “nagios.cfg” un directorio donde almacenaremos los ficheros de los hosts que queremos monitorizar. Esto se hace añadiendo la línea:


cfg_dir=/usr/local/nagios/etc/dir_cfg_hosts (en mi caso es ‘servers’)


También podemos agrupar nuestros equipos, añadiendo a “nagios.cfg” la línea


            cfg_file=/usr/local/nagios/etc/objects/hostgroup.cfg


y creando en este fichero los grupos que deseemos. P.ej.


            define hostgroup{

                                     hostgroup_name         windows-servers

                                     alias                             Windows Servers

                                     members                    servidor1, servidor2, servidor3

                        }


En http://nagios.sourceforge.net/docs/3_0/objectdefinitions.html podemos encontrar la sintaxis de este tipo de objetos.


También es importante definir los contactos en el fichero /usr/local/nagios/etc/objects/contacts , siguiendo el patrón:


define contact{

            contact_name             vpena

            use                               generic-contact

            alias                             Victor Pena

            email                           vpena@dominio.corp

           }


Estos contactos (a través del “contact_name”) son los que se utilizan en el los ficheros de configuración de los servidores, a través del parámetro “contacts” en la definición de los servicios. 
P.ej., fichero /usr/local/nagios/etc/servers/coreup.cfg :


define host{

            use                   generic-switch

            host_name      coreup

            alias                 coreup

            address            172.x.y.z

            }



define service{

            use                               local-service

            host_name                   coreup

            service_description     PING

            check_command                     check_ping!100.0,20%!500.0,60%

            contacts                       nombre_usuario1, nombre_usuario2, vpena

            }


Mediante estos ficheros de configuración, podemos realizar una prueba del funcionamiento de Nagios. En primer lugar probamos que los servicios de mysql, ndo2db y nagios están en funcionamiento:


ps -ef | grep mysql

ps -ef | grep ndo2db

ps -ef | grep nagios


y probamos que la nueva configuración de nagios es correcta:


/usr/local/nagios/bin/ndo2db -v /usr/local/nagios/etc/ndo2db.cfg

Si todo es correcto, podemos detener/iniciar ndo y reiniciar nagios:


/etc/init.d/ndo2db stop

/usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg

/etc/init.d/nagios restart

 En /usr/local/nagios/var/nagios.log podemos ver los eventos generados (p.ej. mediante tail -f /usr/local/nagios/var/nagios.log


Accedemos a la web de nagios (en mi caso http://172.16.18.38/nagios/ ):





Una vez realizados estos pasos, el siguiente va a consistir en la instalación de NagVis, un sistema gráfico para la visualización de datos de Nagios.


Se va a realizar la instalación de la última versión disponible de Nagvis en el momento de la creación de este manual, la 1.7.8. Se puede realizar la descarga desde la web oficial de esta herramienta: http://www.nagvis.org/
 

Los pasos a seguir son los siguientes:

1.      MKLivestatus:


b.      tar xzf check_mk-1.2.0p4.tar.gz

c.       cd check_mk-1.2.0p4

d.      ./setup.sh






Además, se debe añadir a nagios.cfg la línea (en una única línea): 


broker_module=/usr/lib/check_mk/livestatus.o /usr/local/nagios/var/rw/live


2.      Se Instalan los siguientes paquetes:

    • php5-gd
    • php5-gettext *
    •  php5-mbstring (à php5-imap )
    • php5-session / php5-json  (àphp-common)
    • php5-pdo (añadir a /etc/php5/apache2/php.ini : extension=pdo.so y extension=pdo_mysql.so)
    • pdo-sqlite
    • php-net-socket
    • php5-mysql
    • graphviz
    • rsync
    • sqlite3

Los paquetes que aparecen con el * han sido descargados de forma manual e instalados mediante dpkg: 




3.      Se descarga e instala Nagvis. Se va a realizar la instalación de la última versión disponible en el momento de la redacción de este articulo (v.1.7.8):




4.      Se deben cambiar los siguientes permisos y propietarios:


  •   chown nagios:nagios /usr/local/nagvis -R
  •   chmod 664 /usr/local/nagvis/etc/nagvis.ini.php
  •   chmod 775 /usr/local/nagvis/etc/maps
  •   chmod 664 /usr/local/nagvis/etc/maps/*
  •   chmod 775 /usr/local/nagvis/etc/geomap
  •   chmod 664 /usr/local/nagvis/etc/geomap/*
  •   chmod 775 /usr/local/nagvis/share/userfiles/images/maps
  •   chmod 664 /usr/local/nagvis/share/userfiles/images/maps/*
  •   chmod 775 /usr/local/nagvis/var
  •   chmod 664 /usr/local/nagvis/var/*
  •   chmod 775 /usr/local/nagvis/var/tmpl/cache
  •   chmod 664 /usr/local/nagvis/var/tmpl/cache/*
  •   chown www-data.www-data /usr/local/nagvis/var/tmpl –R



5.      Modificamos el fichero usr/local/nagios/share/side.php y sustituimos la línea 
  <li><a href="<?php echo $cfg["cgi_base_url"];?>/statusmap.cgi?host=all" target="<?php echo $link_target;?>">Map</a></li> 
      por el enlace al mapa de Nagvis.



6.      Se pueden añadir usuarios mediante el comando htpasswd htpasswd.users nuevo_usuario (lanzado desde /usr/local/nagios/etc ). Posteriormente se concederán los permisos de acceso en el fichero /usr/local/nagios/etc/cgi.cfg.





Con estos pasos se habrá instalado y se encontrará en funcionamiento Nagvis. Por último se van a ver los pasos a seguir para realizar la instalación de PNP4Nagios y NagiosGrapher. PNP4Nagios es un complemento para Nagios que analiza los datos de rendimiento obtenidos por los plugins y los almacena automáticamente en bases de datos Round Robin (RDD). Mientras tanto NagiosGrapher genera automáticamente gráficas de rendimiento asignando servicios a varias fuentes de datos (RRD).



Se realiza la descarga desde http://sourceforge.net/projects/pnp4nagios/ y se instala siguiendo los pasos habituales:




2. tar xzf pnp4nagios-0.6.21.tar.gz

3. cd pnp4nagios-0.6.21

4. ./configure --with-nagios-user=nagios --with-nagios-group=nagios

5. make all

6. make install ,y siguiendo las indicaciones del instalador:

7. make install-webconf

8. make install-config

9. make install-init



Se puede consultar la documentación http://docs.pnp4nagios.org/es/pnp-0.6/start para obtener más información.



A continuación se va a describir los pasos a seguir para realizar la instalación de NagiosGrapher. En primer lugar instalaremos los siguientes paquetes:



apt-get install autoconf rrdtool perl perl-base perl-modules libcalendar-simple-perl libgd-gd2-perl perlmagick librrds-perl liburi-perl


Nos descargamos la versión 1.7.1, la descomprimimos e instalamos:


1.      wget -c http://downloads.sourceforge.net/project/nagiosgrapher/nagiosgrapher/NagiosGrapher-1.7.1/NagiosGrapher-1.7.1.tar.gz

2.      tar xfvz NagiosGrapher-1.7.1.tar.gz

3.      cd NagiosGrapher-1.7.1

4.      autoconf

5.      ./configure

6.      make testdeps  (se chequea las librerias perl-libs, requeridas).

7.      make install



Para la configuración de Nagios Grapher tendremos añadir las siguientes líneas en los siguientes ficheros siguientes:


1.      Fichero de configuración de nagios (/usr/local/nagios/etc/nagios.cfg):

cfg_dir=/usr/local/nagios/etc/serviceext
process_performance_data=1
service_perfdata_file=/usr/local/nagios/var/service-perfdata
service_perfdata_file_template=$HOSTNAME$\t$SERVICEDESC$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$\t$TIMET$\n
service_perfdata_file_mode=a
service_perfdata_file_processing_interval=30
service_perfdata_file_processing_command=process-service-perfdata-file
 

2.      Fichero de configuración de nagiosGrapher (/usr/local/nagios/etc/ngraph.ncfg):

perffile_path  /usr/local/nagios/var
 

3.      Fichero de definición de comandos de nagios (/usr/local/nagios/etc/objects/commands.cfg):


define command {
          command_name process-service-perfdata-file
          command_line mv /usr/local/nagios/var/service-perfdata /usr/local/nagios/var/service-perfdata.$TIMET$
}



 

Enviar notificaciones html por correo


Para el envío de correo formados mediante HTML se va a emplear el script pnp4n_send_service_main.pl (http://nagios.frank4dd.com/howto/manual/pnp4n_send_service_mail.htm ).


Este plugin, después de recibir la información del estado del servicio de Nagios, compone un correo electrónico de acuerdo con varios flags y envía la notificación a través de un servidor SMTP. Entre la información que se puede enviar destaca la posibilidad de enviar gráficos de rendimiento de un determinado servicio a través del paquete PNP4Nagios.


El script depende de los siguientes paquetes (Perl CPAN):


  •        Mail::Sendmail
  •        Getopt::Long
  •        Digest::MD5
  •        LWP
  •        MIME::Base64
  •        File::Temp


Así como los paquetes netpbm y libnetpbm (para la conversión PNG-to-JPG). 

No hay comentarios:

Publicar un comentario