Usando Nagios

From PostgreSQL wiki

Revision as of 23:01, 27 May 2010 by Jcasanov (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Contents

¿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:

  1. Para instalar la última versión y
  2. 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
       }
Personal tools