22.5.13

NAGIOS - Monitoreo de servidores


la mayoria de la gente piensa q los admines no hacemos nada... y en parte es verdad, pero justamente el secreto del exito esta en q no haya nada q hacer, ya q esto quiere decir q todo funciona ok... pero para q todo funcione tenemos q estar siempre informados de lo q pasa con nuestros servers para poder ser los 1eros en enterarnos cuando hay un problema y solucionarlo antes de q escale a mayores proporciones... o alguien se de cuenta... xD

nagios es un sistema de monitoreo de servidores, apto para estructuras complejas, q cubre la mayoria de las necesidades de cualquier admin, avisandonos cuando hay una situacion fuera de lo normal en base a parametros q podemos configurar facilmente. podemos monitorear tanto servicios publicos (HTTP, SSH, FTP, MYSQL, etc) como internos (carga del micro, espacio en disco, procesos, etc).


INSTALACION


como siempre voy a describir la instalacion para debian/ubuntu, pero en el caso de los servers monitoreados voy a agregar la de centos ya que los archivos necesarios no estan en los repositorios standard y hay q hacer un par de modificaciones. lo primero que vamos a configurar es el server q va a cumplir la funcion de monitoreo de los demas (y x supuesto de si mismo). es requisito tener apache instalado ya que es usado para ingresar a la web de administracion del sistema, si todavia no lo hicieron... apt-get install apache2.

en este ejemplo vamos a llamar a este server "monitor" con la ip 192.168.1.1. una vez que esta todo listo en una consola con derechos de root (sudo para ubuntu) ingresar:

# apt-get install nagios3 nagios-plugins nagios-nrpe-plugin

durante la instalacion nos pide configurar workgroup para samba:



y despues ingresar password para administracion:



una vez terminado el proceso ya podemos loguear desde:

http://localhost/nagios3

con el usuario "nagiosadmin" y la password que configuramos antes. a la izquierda haciendo click en "hosts" podemos ver que el localhost ya esta siendo monitoreado y desde ahi entrar a la pagina de la informacion del estado gral y al detalle de los distintos servicios configurados.

...pero vamos a agregar servers para monitorear q es lo mas importante. vamos a llamar al 1ero "server1" corriendo en la ip 192.168.1.100. en este abrimos una consola con derechos de root e ingresamos:

# apt-get install nagios-nrpe-server nagios-plugins

durante la instalacion tambien pide configurar workgroup, cambiarlo si es necesario y sino dejarlo x default.

en la maquina monitor tenemos que crear un archivo de configuracion por cada server que agregamos. creamos entonces un archivo con el nombre correspondiente agregandole al final "nagios2.cfg" o sea "server1.nagios2.cfg" y lo ponemos en:

/etc/nagios3/conf.d

dentro definimos el host y los servicios a monitorear. en el siguiente ejemplo puse la carga del procesador solamente, el contenido del archivo quedaria asi:

define host{
        use             generic-host
        host_name       server1
        alias           server1
        address         192.168.1.100
}
define service{
        use                     generic-service
        host_name               server1
        service_description     Current Load
        check_command           check_nrpe_1arg!check_load
}

y reiniciamos el servicio con:

# service nagios3 restart

antes de poder ver la informacion tenemos que configurar server1 para que permita a la maquina monitor tomar los datos. esto lo hacemos desde nrpe.cfg q se encuentra en:

/etc/nagios/

buscamos la entrada "allowed_hosts" y cambiamos la ip por la del server "monitor", quedaria asi:

allowed_hosts=192.168.1.1

y reiniciamos el servicio:

# service nagios-nrpe-server restart

en el monitor ya deberia aparecer el nuevo server, del cual se puede ver la carga actual solamente (x ahora)... despues de checkear su funcionamiento podemos sumar otros servicios. todo esto se agrega al archivo de configuracion que encuentra en "monitor" (server1.nagios2.conf). algunos ejemplos son:

USUARIOS LOGUEADOS:

define service{
        use                     generic-service
        host_name               server1
        service_description     Current Users
        check_command           check_nrpe_1arg!check_users
}

ESPACIO EN DISCO:

define service{
        use                     generic-service
        host_name               server1
        service_description     Disk Space
        check_command           check_nrpe_1arg!check_hda1
}

CANTIDAD DE PROCESOS ACTIVOS:

define service{
        use                     generic-service
        host_name               server1
        service_description     Total Processes
        check_command           check_nrpe_1arg!check_total_procs
}

HTTP:

define service{
        use                     generic-service
        host_name               server1
        service_description     HTTP-Server
        check_command           check_http
}

FTP:

define service{

use generic-service
host_name remotehost
service_description FTP
check_command check_ftp
}

SSH:

define service{

use generic-service
host_name remotehost
service_description SSH
check_command check_ssh
}

SMTP:

define service{

use generic-service
host_name remotehost
service_description SMTP
check_command check_smtp
}

hay muchos otros servicios monitoreables pero son demasiados para incluirlos todos, googleando un poco se puede encontrar facilmente info al respecto. simplemente se agrega el que se necesita al archivo de configuracion, reiniciar el servicio y ya esta funcionando.


NRPE-SERVER EN CENTOS


nrpe se encarga del monitoreo de los servicios internos (carga de cpu, usuarios, disco, etc), ya que los publicos se checkean normalmente sin necesidad de acceso al servidor. como habiamos dicho antes, centos no tiene a nagios en sus repositorios por defecto asi que tenemos q descargar e instalar un par de paquetes para poder usarlo.

ya q los paquetes dependen del sistema en q se instala no puedo poner links q sirvan para todos. el 1ero es epel que se puede descargar de aca:

http://dl.fedoraproject.org/pub/epel/

y el otro es remi:

http://rpms.famillecollet.com/enterprise/

dependiendo de la version bajamos el rpm correspondiente. pongo como ejemplo los archivos de instalacion en centos6 x64:

http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

los bajamos e instalamos con rpm o sino directamente hacemos:

# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

una vez instalados ya podemos usar yum:

# yum install nagios nagios-plugins-all nrpe

y configuramos el servicio para q arranque automaticamente:

# chkconfig nrpe on

otro paso necesario en centos es configurar iptables para q permita el acceso al monitor q necesita abierto el puerto 5666:

# iptables -N NRPE
# iptables -I INPUT -s 0/0 -p tcp --dport 5666 -j NRPE
# iptables -I NRPE -s ipdelservermonitor -j ACCEPT
# iptables -A NRPE -s 0/0 -j DROP
# /etc/init.d/iptables save

solo falta arrancar el servicio:

# service nrpe start

el resto de los pasos de configuracion en nrpe.cfg son los mismos q en debian.


MODIFICAR ALERTAS DE LOS SERVICIOS


podemos establecer los porcentajes q necesitemos en cada caso para las alertas del sistema. los defaults estan bastante bien pero siempre es necesario "tocar" algo en alguno.

el 1er problema q nos encontramos normalmente es q el sistema no puede conectar al disco de sistema para checkear el espacio. esto se debe a q viene definido como "hda1", lo cual no coincide en la mayor parte de los sistemas modernos. esto se modifica tambien desde el archivo nrpe.cfg en "server1". buscamos la linea:

command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/hda1

y la cambiamos por el q corresponda q lo podemos ver haciendo un df en la consola. desde ahi tambien modificamos los porcentajes de las alertas, en la de arriba podemos ver el del espacio en disco que envia un alerta "warning" cuando queda 20% libre y un "critical" al 10%.

para modificar la alerta de procesos modificamos:

command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 200 

siendo como en el caso anterior 150 el warning y 200 el critical.


CONFIGURANDO LAS ALERTAS DE CORREO


hasta ahora todo muy lindo pero no podemos estar todo el dia mirando si hay algun problema, lo q necesitamos es q nagios nos avise cuando se da un estado de alerta. para esto lo mas usado es el envio de correo.

para usar esta caracteristica tenemos q tener postfix (o el smtp prefieran) configurado y funcionando. basicamente para instalarlo hacemos:

# apt-get install postfix

durante el proceso pide datos sobre el tipo de correo q configuramos, seleccionar "internet site". acto seguido pregunta por el dominio que es el q sale en los correos enviados. una vez finalizado editar:

/etc/postfix/main.cf

y en "myhostname" agregar el nombre del host. x ej:

myhostname= nagios.locvtvs.com

si usan un relay configurarlo en "relayhost". y reiniciar el servicio:

service postfix restart

con postfix corriendo vamos a configurar en nagios el destinatario de los correos de alerta. modificamos el archivo:

/etc/nagios3/conf.d/contacts_nagios2.cfg

q contiene algo asi:

define contact{
        contact_name                    root
        alias                           Root
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r
        host_notification_options       d,r
        service_notification_commands   notify-service-by-email
        host_notification_commands      notify-host-by-email
        email                           admin@domain.com
        }

define contactgroup{
        contactgroup_name       admins
        alias                   Nagios Administrators
        members                 root
        }

simplemente cambiamos la direccion en "email" por la q necesitamos. para agregar otro contacto hay q repetir todo el bloque "define contact" con la direccion nueva y agregar el contact_name en el bloque de abajo (define contactgroup) separado por comas:

members root,otrousuario,otromas

con todo corriendo solo falta esperar (o provocar) alguna alerta para checkear el funcionamiento. personalmente lo tengo configurado para que me mande correo (q me suena en el celu) y desde ahi mismo puedo tambien levantar la web de administracion y tener mas detalles de lo q pasa. al normalizarse el servicio el sistema envia otro correo informando el nuevo estado.


1 comentario:

DEM dijo...

Gracias por tu publicación. Voy a probarlo. Sdos.