Usando Nagios

From PostgreSQL wiki
Jump to navigationJump to search

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