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.