Usando Nagios

== ¿Por qué usar Nagios? ==
Nagios es un sistema open source de monitoreo de redes ampliamente utilizado, que vigila los equipos (hardware) y servicios (software) que se especifiquen, alertando cuando el comportamiento de los mismos no sea el deseado. 
== Configurar el servidor de monitoreo ==
=== Requisitos ===
* Servidor Web (Este manual asume que se usará Apache)
* Php (Para la interface web)
* Gcc 
* Libgd (es una librería gráfica necesaria para mostrar el statusmap)
* Perl
* Servidor de correo (Opcional. Para enviar las alertas por correo)
=== Instalación (como usuario root) ===
==== Crear un usuario nagios ====
 useradd -m nagios
 passwd nagios
==== Instalar nagios ====
 wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.0.6.tar.gz
 gunzip -dc nagios-3.0.6.tar.gz | tar xvf -
 cd nagios-3.0.6
 ./configure --with-command-group=nagios
 make all
 make install
 make install-init
 make install-config
 make install-commandmode
=== Configuración ===
==== Editar el archivo /usr/local/nagios/etc/objects/contacts.cfg ====
Este cambio es para indicar a que correo se notificarán las alertas configuradas.
 reemplazar “nagios@localhost” por el correo del administrador
==== Configurar la interfase web ====
 make install-webconf
 htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
 chown nagios.nagios /usr/local/nagios/etc/htpasswd.users
 chmod 664 /usr/local/nagios/etc/htpasswd.users
 service httpd restart
=== Instalar los plugins de Nagios ===
El plugin para PostgreSQL lo instalaremos luego manualmente, estos es por dos motivos: 
#Para instalar la última versión y 
#Para no tener problemas de dependencias en caso de que en el servidor de monitoreo no tengamos instalado PostgreSQL
 cd ..
 wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.13.tar.gz
 gunzip -dc nagios-plugins-1.4.13.tar.gz | tar xvf -
 cd nagios-plugins-1.4.13
 ./configure --with-nagios-user=nagios --with-nagios-group=nagios --without-pgsql
 make
 make install
=== Iniciar Nagios ===
 cd /etc/init.d
 chkconfig --add nagios
 chkconfig nagios on
Para comprobar que todo esta bien
 /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
 
Finalmente
 service nagios start
En este momento ya es posible ingresar a Nagios, abriendo el navegador de internet y poniendo como dirección: http://localhost/nagios 
Ingrese como usuario nagiosadmin y como clave la que indico cuando configuraba la interfase web. 
Si instalo en la misma máquina que va a ser monitoreada pasar a la instalación del plugin para 	PostgreSQL, de lo contrario continúe con la siguiente sección.
== Configurar la máquina que sera monitoreada ==
=== Requisitos ===
* PostgreSQL (Las instrucciones en este manual se probaron usando la versión 8.3.7)
* Xinetd 
* Gcc
* Perl
=== Crear un usuario Nagios ===
 useradd -m nagios
 passwd nagios
=== Instalar los plugins de Nagios ===
El plugin para PostgreSQL lo instalaremos luego manualmente para asegurarnos de usar la última versión.
 wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.13.tar.gz
 gunzip -dc nagios-plugins-1.4.13.tar.gz | tar xvf -
 cd nagios-plugins-1.4.13
 ./configure --with-nagios-user=nagios --with-nagios-group=nagios --without-pgsql
 make
 make install
 chown -R nagios.nagios /usr/local/nagios
=== Instalar el modulo nrpe de Nagios ===
 wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz
 gunzip -dc nrpe-2.12.tar.gz | tar xvf -
 cd nrpe-2.12
 ./configure
 make all
 make install-plugin 
 make install-daemon 
 make install-daemon-config 
 make install-xinetd
=== Configurar el modulo nrpe ===
==== Modificar el archivo /etc/xinet.d/nrpe ====
 modificar el valor del campo “only_from” por la ip del servidor que se va a monitorear
==== Modificar el archivo /etc/services ====
 agregar la siguiente linea “nrpe		5666/tcp	#NRPE”
== Configurar el servidor de monitoreo para que chequee los servicios en la máquina remota ==
=== Instalar el modulo nrpe de Nagios ===
 wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz
 gunzip -dc nrpe-2.12.tar.gz | tar xvf -
 cd nrpe-2.12
 ./configure
 make all
 make install-plugin
=== Probar el modulo nrpe ===
 /usr/local/nagios/libexec/check_nrpe -H <ip servidor monitoreado>
=== Editar el archivo /usr/local/nagios/etc/objects/commands.cfg ===
Agregar las siguientes lineas al final del archivo
 define command{ 
 command_name check_nrpe 
 command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ 
 }
Debemos indicarle a Nagios que vamos a monitorear otra maquina editando el archivo /usr/local/nagios/etc/nagios.cfg
Agregar la siguiente linea en la seccion “OBJECT CONFIGURATION FILE(S)”:
 cfg_file = /usr/local/nagios/etc/objects/dbhost.cfg
Crear la definicion del host en un archivo dbhost.cfg
 define host{
 use			linux-server
 host_name		dbserver
 alias			pgsql 8.3
 address			IP.del.servidor.PostgreSQL
 }
 service nagios restart
=== Instalar plugin para monitorear PostgreSQL (en el servidor que se va a monitorear) ===
 Descargar el archivo check_postgres.tar.gz desde http://bucardo.org/check_postgres
 gunzip -dc check_postgres.tar.gz | tar xvf -
 cd check_postgres
 cp check_postgres.pl /usr/local/nagios/libexec/.
 perl /usr/local/nagios/libexec/check_postgres.pl –symlinks
Para instalar chequeos se debe crear una entrada por cada servicio que vayamos a monitorear en el archivo /usr/local/nagios/etc/nrpe.cfg similar a (deben agregados en la seccion “COMMAND DEFINITIONS”):
 command[check_postgres_locks]=/usr/local/nagios/libexec/check_postgres_locks -w 2 -c 3
Donde los comandos pueden tomarse de http://bucardo.org/check_postgres/check_postgres.pl.html 
Luego debemos indicar los servicios a monitorear, creando entradas como las siguientes en el archivo /usr/local/nagios/etc/objects/dbhost.cfg en el servidor de monitoreo:
 define service { 
 use generic-service 
 host_name dbserver 
 service_description PGSQL locks
 check_command check_nrpe!check_postgres_locks
 }
 define service{
 use			generic-service
 host_name		dbserver
 service_description	CPU Load
 check_command		check_nrpe!check_load
 }
 define service{
 use			generic-service
 host_name		dbserver
 service_description	Current users
 check_command		check_nrpe!check_users
 }
 define service{
 use			generic-service
 host_name		dbserver
 service_description	Total Processes
 check_command		check_nrpe!check_total_procs
 }
 define service{
 use			generic-service
 host_name		dbserver
 service_description	Zombie Processes
 check_command		check_nrpe!check_zombie_procs
 }
Category:Español