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.


14.5.13

Evolucion de un usuario Linux - Un poco mas de Linux vs Windows... ;)

este articulo fue escrito por James Baughn en 1999 y pasa a formar parte de mi pequeña coleccion de traducciones de textos clasicos de humor informatico. en su momento fue muy actual, pero de todas formas a pesar del tiempo que tiene (siglos en este tema), se puede ver que las cosas no cambiaron casi nada...


EVOLUCION DE UN USUARIO LINUX

durante el pasado año, los cientificos del Humorix's Vast Research Lab of Doom estudiaron el comportamiento y actitudes del tipico usuario de windows y linux. han descubierto que el usuario promedio de Linux pasa a traves de 10 fases de desarrollo desde un "Microsiervo" hasta un "Usuario Linux Iluminado". un undecimo estado "Consiguiendo una Vida", ha sido ademas observado, pero solamente en ocasiones extremadamente raras.

las 11 fases de evolucion se encuentran resumidas debajo. Notese, de todas formas, que este ciclo de vida no es universal. Muchos expertos, accionistas de microsoft y PHBs nunca avanzan mas alla de la Fase 0 ("Microsiervo"). Por otra parte muchos adictos a Slashdot estan atrapados entre las Fases 6 y 7 ("Fanatico de Linux") y nunca evolucionan a la Fase 9 ("Usuario Linux Iluminado"). Y, desafortunadamente, demasiada gente no es capaz de dejar la Fase 8 ("Vuelta a la Realidad") y alcanzar la autorealizacion geek debido a problemas fuera de su contol.


FASE 0. MICROSIERVO

sos miembro numero uno del club de fans de bill gates. tu vida gira en torno de computadoras x86 corriendo la ultima version de las soluciones microsoft: windows, office, internet explorer, visual basic, y hasta Bob. No tienes mas que odio para esos excentricos fanaticos de mac con sus interfaces click-y-baba y esos veteranos prehistoricos de Unix con sus arcaicas lineas de comando.

Frecuentemente envias furiosas cartas a tus representantes electos sobre la "libertad de innovacion" de microsoft. Crees que los abogados son malignos (menos los que defienden compañias innovadoras como microsoft). Posees una copia autografiada de un libro que fue escrito secretamente por bill gates. Tu sangre hierve cuando alguien te reenvia un asi-llamado "chiste" de microsoft por email.

En pocas palabras, sos un Microsiervo.


FASE 1. MIEDO, INCERTIDUMBRE, DUDA... DE MICROSOFT

tu mirada del mundo comienza a amargarse tan pronto como empezas a encontrar un creciente numero de contratiempos con productos microsoft. el numero de pantallas azules aumenta, de todas formas atribuis el problema (al principio) a conflictos con los drivers pobremente escritos que vienen con tus perifericos. Los iconos se mantienen saltando alrededor del escritorio impredeciblemente. un dia pasas 30 minutos buscando inutilmente una opcion de configuracion oculta en el panel de control.

lento pero seguro, empezas a tener dudas acerca de la calidad del soft de microsoft. entonces, la microsoft network, a la que te suscribiste obedientemente en 1995, comienza a duplicar la factura en tu tarjeta de credito. intentas solucionar el problema pero te encontras bloqueado por la creciente burocracia del dto de atencion al cliente de microsoft. el miedo se instala... te van a devolver tu dinero?

mientras tanto, algo llamado "linux" aparece en el borde de tu radar. Inmediatamente desechas la idea de una alternativa a microsoft viable y de calidad (linux esta basado en unix, entonces apesta. es tu conclusion). No obstante, deseas que se pudiera hacer algo con algunas de las molestias en windows. pero no haces nada sobre ello.


FASE 2. MIEDO, INCERTIDUMBRE, DUDA... DE LINUX

seguis escuchando sobre esto de linux, y codigo abierto, y apache, y freebsd tambien. uno de tus amigos instala linux y dice, "esta buenisimo". descubris que la seleccion de libros de windows en tu libreria local se mantiene igual mientras los de linux y unix se multiplican como conejos. argumentas, "bueno, eso significa que linux es una mierda... si hubiera una gran demanda de el, no habria tantos libros en los estantes."

sin embargo, a medida que pasa el tiempo y windows se vuelve mas fragil, la tentacion de probar linux se vuelve mas y mas irresistible. mientras estas en el supermegalocaldearticulosdeoficina de tu zona, agarras una version box de red hat en un impulso.

con mucho orgullo, ignoras completamente la documentacion y tratas de instalar el sistema de la manera que se te ocurre. la instalacion falla, linux simplemente no funciona con el winmodem, la placa de sonido windows, el controlador IDE windows, la winimpresora, el winmonitor y la windram que vino con tu maquina "lista para windows98" desde compussr. de todas formas no te das cuenta de esto, ya que no leiste las FAQs y los HOWTOs. inmediatamente le echas la culpa a linux y te rendis. te deshaces de tu copia de red hat vendiendola en ebay.

despues del fracaso en la instalacion, quedas temeroso, inseguro y lleno de dudas con respecto a este sistema operativo "alternativo". puede que windows tenga sus problemas, pero microsoft los arreglara en la proxima actualizacion, te parece.


FASE 3. MICROSIERVO RENACIDO

"linux es una mierda" es tu nueva actitud ante la vida. windows, considerandolo todo, no es tan malo. decidis convertirte en mejor cliente de microsoft participando en la red de desarrolladores de microsoft y en la red de diseñadores de sitios. compras un monton de "guias de estudio" para pasar el examen MCSE.

creas un sitio de defensa de windows en algun proveedor de espacio web malo, utilizando las ultimas innovaciones en vbscript, activex, y otras caracteristicas especificas de IE. en lugar de acechar, ahora participas activamente atacando linux y macintosh en varios grupos de usenet. cuando descubris slashdot, asumis el rol de Cobarde Bastardo Anonimo Del Infierno posteando incontables flames sobre lo cool que es microsoft y como "linuxmierda" (como lo llamas) es una porqueria de sistema.

orgullosamente te pones una remera de "todos saludamos al presidente bill" y mostras numerosos stickers pro-microsoft ("toca la bocina si odias las leyes anti-trust") en tu auto. nunca dejas tu casa sin tu palm basada en windows cd. haces una peregrinacion hasta redmond para maravillarte en la gloria del campus de microsoft.


FASE 4. USUARIO CONTRARIADO

tu camino de microsiervo llega a un abrupto final cuando todo sale mal. perdes un documento vital del trabajo en un cuelgue de windows. perdes tu trabajo como consecuencia indirecta. descubris que conseguir un trabajo es dificil... todos quieren tu curriculum en la ultima version de word, pero vos tenes una version vieja que tiene un formato incompatible.

perdes mas y mas tiempo retocando windows y otros programas de microsoft para mantenerlos funcionando. encontras serios problemas con tu windows, pero tus llamadas al soporte tecnico solo obtienen la temida respuesta, "reinstale el sistema".

despues de mucho pesar finalmente conseguis otro trabajo en una empresa de software, solo para descubrir un mes despues que microsoft anuncia un producto competidos que sera "integrado" con la siguiente version de windows. pronto perdes tu trabajo.

no podes soportarlo mucho mas. sos oficialmente un usuario contrariado, y estas listo para cualquier forma de escapar de las entrañas del infierno microsoft. estas listo para cualquier cosa en absoluto... hasta una primitiva, arcaica, dificil-de-instalar, una alternativa cargada de dolor como linux.


FASE 5. UNA EXPERIENCIA RELIGIOSA

te decidis a instalar linux ahora, de verdad. tus amigos dicen "ya era hora", y te dicen que RTFM esta vez. despues de perderte en la documentacion por varios dias, te das cuenta porque tu encuentro previo con linux fue un desastre: necesitas hardware de verdad no winbasura.

con una nueva computadora en tu escritorio, y un cd de red hat en la mano, te embarcas en el viaje de descubrimiento de la tierra de linux. tu vida cambia para siempre, las palabras no pueden describir la adrenalina que sentis la 1era vez que te logueas como "root" despues de una instalacion exitosa. miras fijamente la pantalla con asombro, no sos capaz de emitir una palabra, incapaz de pensar otra cosa que "SANTA MIERDA, ESTO ESTA BUENISIMO!!!"

pasas horas, y despues dias, explorando las profundidades del sistema linux: un sistema de archivos que tiene sentido (no la basura de "Mis Documentos"), una linea de comandos tan poderosa que hace que ms-dos parezca la tecnologia de la edad de piedra que es... y lo mejor de todo, no hay pantallazos azules!

"porque desperdicie mi vida con microsoft? jamas voy a volver!" exclamas salvajemente. te liberaste del yugo de opresion de redmond.


FASE 6. CONVERSO LINUX

aun tenes una copia de windows por ahi, pero te encontras a vos mismo booteando en linux mas y mas. la escasa cantidad de espacio en disco que usaste para tu 1er instalacion de linux disminuye, decidis comprar un segundo disco rigido exclusivamente para linux.

reinstalas todo, incluyendo el kitchen sink (Emacs). una vez que finalmente tenes PPP funcionando (fue un desafio desagradable, pero estas tan enamorado de linux que casi no te diste cuenta), te das un atracon descargando e instalando cada pedazo de software free que se te cruza.


FASE 7. FANATICO LINUX

tu entusiasmo por linux es ilimitado. haces cualquier cosa por defender linux a pesar de tu antiguo amo, microsoft. usenet, slashdor y linuxtoday son tus lugares preferidos. tenes una fuerte opinion sobre el GNU GPL y no tenes miedo de compartirla.

la dominacion mundial por parte de linux es la nueva ambicion de tu vida, pones tu carrera, riquezas y citas en 2do plano. participas en festivales de flames contra esos cerebros-muertos lusers de windows (atrapados en FASE 3) que habitan en usenet y zdnet. compras todo tipo de merchandise vulgar de linux hecho-en-taiwan (remeras, pads de mouse, pinguinos de peluche, etc.) para demostrar tu apoyo.

reacomodas los libros en una libreria para que los tomos de linux esten mas a la vista. te metes en problemas con tu jefe porque te pasas todo el tiempo navegando por slashdot en el trabajo. haces una peticion a tu gobierno para que migren sus sistemas informaticos a software libre. te mudas solo para poder decir que vivis en la calle Apache.

en lugar de una novela, lees el codigo fuente del kernel de linux por placer. estableces tu propio grupo regional de usuarios linux con la esperanza de poder traer un orador invitado en el futuro y tener su autografo. aprendes perl con el objetivo de automatizar tareas comunes, pero perdes mas tiempo retocando "solo un script mas de perl" que consiguiendo algo ya hecho.


FASE 8. DE VUELTA A LA REALIDAD

tu fanatismo disminuye a medida que sos forzado a re-entrar al mundo real. tu jefe pide que envies los documentos en el ultimo formato de word, nada mas lo hara. algunos de tus sitios favoritos se vuelven dificiles de usar porque siguen incorporando caracteristicas mejoradas para windows y IE. el nuevo periferico que compraste de la compañia GranPropietarioMaligno no funciona con linux y probablemente nunca lo hara.

tu ISP es adquirido por otra compañia, una compañia muy amigable con microsoft, para ser exactos. ellos "actualizan" el sistema; de todas formas, el unico cambio que notas es que linux y PPP no funcionan mas sin un hackeo extensivo. entonces, citando "demandas de los usuarios", tu ISP hace mas "actualizaciones", y linux ya no funciona para nada. llamar a su soporte tecnico es un ejercicio de inutilidad, ellos simplemente dicen, "linux? que es eso? lo que sea no le damos soporte, y nunca lo haremos. use windows como todos los demas."

la realidad toma forma: estas forzado a usar windows mas y mas. tu presion sanguinea se eleva, tenes mas dolores de cabeza, perdes horas y horas por culpa de "asuntos" de windows, pero no tenes mas opcion.


FASE 9. USUARIO ILUMINADO DE LINUX

entonces tenes una inspiracion: tenes una chance, podes hackear tus propios drivers para tu hardware, podes encontrar otro ISP, podes conseguir otro trabajo. todo se pone en foco, te convertiste en un guru de linux.

creas drivers para tu hardware "windows-compatible". finalmente (despues de mucho buscar) encontras un ISP local manejado por geeks competentes, no MCSEs y PHBs. encontras un nuevo, mejor trabajo en una compañia amigable con linux.

en tu tiempo libre, trabajas en varios proyectos de codigo abierto. te creas una reputacion y recibis "la carta" para participar en la IPO de un negocio linux. te subis al tren y creas tu propio portal de linux.

estas en el pinaculo de la evolucion de un usuario de linux. con extremo placer te convertis en 100% libre de microsoft. te deshaces de tu particion de windows y quemas todos los discos y manuales de windows que tenes.


FASE 10. CONSEGUIRSE UNA VIDA

te aburris de linux, y las computadoras en general. todavia sos un gran geek, por supuesto, pero te preguntas si no hay algo mejor que podrias estar haciendo. te mandaron a "conseguirte una vida" incontado numero de veces durante tu existencia en la tierra, pero ahora te preguntas si tal vez deberias haber hecho caso a ese consejo.

inesperadamente, un conglomerado de medios (por ej andover, ziff-davis, internet.com, etc.) ofrece comprar tu portal de linux y nombre de dominio por un precio obsceno que contiene un significante numero de digitos. sin dudarlo aceptas; este golpe de suerte, combinado con tus ganancias de stocks de linux, es suficiente para retirarte.

y eso es exactamente lo que haces. te mudas a una pequeña isla tropical y te conseguis una vida.