El día del aprecio al administrador de sistemas

icono de bofhs Hoy, como todos los últimos viernes de julio desde hace ya ocho años, se celebra el SysAdmin Day, el día del aprecio al administrador de sistemas. No te olvides de tener un detalle con el tuyo si quieres que tu copia de seguridad esté ahí cuando la necesites… 😉

Cervezas para tu administrador de sistemas

P.D.: Durante el día de hoy y en homenaje a tan magno evento se ridiculizarán todos los comentarios que sean escritos desde una máquina con cualquier versión de windows. Que lo sepais…

AsteriskNOW paso a paso

icono de asteriskHacía un par de años que no tenía la ocasión de montar un servidor con Asterisk y, ahora que vuelvo a tener esa oportunidad, estoy valorando si hacerlo desde cero y sobre una Debian (modo clásico, digamos) o probar AsteriskNOW, una distribución específica de la gente de Digium que, aunque aún en fase beta, promete una instalación limpia, fácil y operativa en 30 minutos.

He hecho una primera prueba sobre una máquina virtual con vmware y he de decir que el procedimiento de instalación express (posee una opción custom más compleja y que permite una mayor personalización) es aún más sencillo que instalar una Ubuntu. Prometo que no hay ni una sóla pantalla más que las 11 que aparecen aquí abajo (pulsa sobre ellas con el ratón para verlas ampliadas) y en todas las opciones son absolutamente triviales incluso para quien jamás haya instalado un Linux en su vida.

Asterisk now install Asterisk now install Asterisk now install Asterisk now install Asterisk now install Asterisk now install Asterisk now install Asterisk now install Asterisk now install Asterisk now install Asterisk now install

Después de la instalación y tras el primer rearranque aparece un menú con opciones de administración y se nos facilita la IP para acceder de forma remota y vía web al GUI de configuración.

Asterisk final

La primera vez que accedemos al GUI se nos redirige a un asistente que, a través de siete pantallas, nos va a permitir configurar nuestro asterisk de forma guiada. Es evidente que para esta fase ya si que necesitamos algunos conocimientos de como funciona un Asterisk y que es lo que queremos hacer con el. Asterisk: the future of Telephony es un excelente libro de la editorial O’Really licenciado bajo Creative Commons y que puedes descargarte desde el enlace anterior en formato PDF. Si te apetece algo más práctico y liviano puedes rebuscar entre los tutoriales y howto’s que hay en la sección correspondiente de la wiki de VoIP-info.

Y ya después de ver el aspecto del GUI de administración creo que acabo por decidirme. Si funciona bien y es estable, claro. Pero eso lo dejo ya para finales del mes que viene y a la vuelta de las vacaciones. Prometo un paso a paso más interesante con la configuración y puesta en marcha para entonces.

Asterisk GUI

Configurando Nagios 3.x (y III)

icono de herramientasContinuamos donde lo dejamos. Una de las cosas que tenemos pendiente es hacer que nagios nos notifique las alertas que detecta, porque si tenemos que estar pendientes de las pantallas de estado en todo momento la cosa, después de las primeras horas, no tiene tanta gracia ¿verdad? Para ello lo único que tenemos que hacer es editar el fichero /usr/local/nagios/etc/objects/contacts.cfg y modificar la dirección de correo del contacto que trae por defecto por la nuestra:

define contact{
     contact_name nagiosadmin ; Short name of user
     use generic-contact ; Inherit default values from generic-contact template (defined above)
     alias Nagios Admin ; Full name of user
     email alertas.nagios@midominio.es ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******      }

Si lo del aviso por correo electrónico se nos queda corto existen al menos una solución comercial que permite que nagios nos alerte a través de SMS. Referencias aquí.

Ahora vamos a añadir algunos plugins que requieran de alguna configuración adicional para que veais que también es muy sencillo. Empezamos por uno que nos compruebe el estado de un servidor de mysql. El plugin necesario (check_mysql) viene con nagios aunque no está configurado para su uso. Lo primero que tenemos que hacer es abrir un shell, irnos al directorio de plugins y ver que entrada necesita:

nagios:/usr/lib/nagios/plugins# ./check_mysql -h
check_mysql (nagios-plugins 1.4.8) 1.35
Copyright (c) 1999-2006 Nagios Plugin Development Team

This program tests connections to a mysql server

Usage:check_mysql [-d database] [-H host] [-P port] [-u user] [-p password] [-S]

Parece evidente ¿no? Creamos un usuario con privilegios mínimos en nuestro servidor de mysql (el mismo que aloja la intranet en este ejemplo) y probamos:

nagios:/usr/lib/nagios/plugins# ./check_mysql -H 192.168.0.3 -u nagios-test -p nagios-test-pass
Uptime: 17940713 Threads: 1 Questions: 796357 Slow queries: 0 Opens: 33 Flush tables: 1 Open tables: 27 Queries per second avg: 0.044

Funciona. Con esta información hacemos una plantilla para este servicio en el archivo commands.cfg:

define command{
     command_name mycheck_mysql
     # check_mysql [-d database] [-H host] [-P port] [-u user] [-p password] [-S]
     command_line /usr/lib/nagios/plugins/check_mysql -H $HOSTADDRESS$ -u nagios-test -p nagios-test-pass
     }

Y, finalmente, en el archivo mired.cfg definimos el servicio listando los hosts que queremos que se comprueben con el:

define service{
     use generic-service
     host_name intranet
     service_description MYSQL
     check_command mycheck_mysql
     }

Ha sido fácil ¿verdad? Un par más y acabamos. Ahora necesitamos comprobar la carga de CPU y ocupación de memoria de nuestros controladores de dominio de windows. Nagios trae plugins para hacerlo pero requieren instalar un servicio específico en los servidores a monitorizar y a mi, existiendo SNMP, esto no me parece necesario. Así que nos damos una vuelta por el directorio de plugins de Nagios Exchange hasta encontrar algo que nos venga bien. Allí encontramos dos plugins escritos en perl que pueden servirnos: check_winmen y win_check_cpuload. Los descargamos, descomprimimos, emplazamos en el directorio de plugins de nagios y repetimos el mismo procedimiento de antes. Primero comprobar la entrada que necesitan desde la línea de comandos:

nagios:/usr/lib/nagios/plugins# perl check_win_snmp_cpuload.pl

######## check_win_snmp_process.pl ########
# Version : 1.0
# Date : Dec 20 2005
# Author : Benjamin Jakubowski
# Help : http://www.xenux.net
# Licence : GPL - http://www.fsf.org/licenses/gpl.txt
####################################
check_win_snmp_cpuload.pl IP COMMUNITY PORT warning critical

nagios:/usr/lib/nagios/plugins# perl check_winmen.pl

######## check_winmem ########
# Version : 1.0
# Date : Apr 11 2006
# Author : Peter Stimpel
# Thanks to Benjamin Jakubowski for the idea to walk through snmp
# Help : http://www.peters-webcorner.de/nagios/
# Licence : GPL - http://www.fsf.org/licenses/gpl.txt
####################################
check_winmem IP COMMUNITY warnlevel criticallevel

check_winmem -v for version info

Al igual que en otras ocasiones, vemos que este tipo de plugins requiere que le definamos los niveles que vamos a considerar como warning o crítico. Aunque aquí no aparece especificado en la documentación que acompaña a los plugins nos dice que han de expresarse en porcentajes. Por cierto: no voy a pararme a explicaros como definir y configurar el servicio de SNMP en un servidor windows pero es evidente que hay que hacerlo, además de autorizar en el mismo a nuestro servidor nagios para que pueda recoger estos datos.

Seguimos. Al igual que hicimos antes probamos primero sobre línea de comandos:

nagios:/usr/lib/nagios/plugins# perl check_winmen.pl 192.168.0.4 mi_comunidad_snmp 75 95
OK MEM: usage 20.59 perc - 209064 KBytes of 1015248 KBytes -w 75 -c 95

nagios:/usr/lib/nagios/plugins# perl check_win_snmp_cpuload.pl 192.168.0.4 mi_comunidad_snmp 161 75 90
OK : CPU load HOST-RESOURCES-MIB::hrProcessorLoad.2 = INTEGER: 0 %

Luego con estos datos creamos las plantillas en commands.cfg (observad que, al igual que en línea de comandos, necesitamos ejecutarlos a través del intérprete de perl):

define command{
     command_name check_winmen
     # perl check_winmen.pl IP COMMUNITY warnlevel criticallevel
     command_line /usr/bin/perl /usr/lib/nagios/plugins/check_winmen.pl $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$
     
}

define command{
     command_name check_cpuload
     # perl check_snmp_cpuload.pl IP COMMUNITY PORT warnlevel criticallevel
     command_line /usr/bin/perl /usr/lib/nagios/plugins/check_win_snmp_cpuload.pl $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$ $ARG4$
     }

Y, finalmente, la definición de los servicios en mired.cfg:

define service{
     use generic-service
     host_name windows#1, windows#2
     service_description Ocupacion de memoria
     check_command check_winmen!ietcc!75!95
     normal_check_interval 5
     retry_check_interval 1
     
}

define service{
     use generic-service
     host_name windows#1, windows#2
     service_description CPU Load
     check_command check_cpuload!ietcc!161!75!90
     normal_check_interval 5
     retry_check_interval 1
     }

Monitorizando la salida a internet con nagiosPara acabar un último truco que suelo usar en las instalaciones. Para comprobar que la salida a internet es correcta suelo elegir un par de servidores públicos y añadirlos en mi configuración colgando de nuestro router de salida a internet. De esta forma ya no sólo comprobamos que nuestro router está encendido y responde a los pings sino que está operativo y nuestro proveedor de servicios no está fallando. Nos quedaría por comprobar que nuestros DNS resuelven correctamente (aquí la comprobación la estamos haciendo por IP) pero eso os lo dejo a vosotros como ejercicio ¿vale? El plugin que necesitais para ello se llama check_dns y acompaña a la distribución estándar de nagios. No tiene pérdida. Ah, lo de usar los servidores de microsoft y terra no es porque me fie especialmente de ellos sino porque siempre prefiero hacerle un ping a intervalos regulares a alguien que no me caiga bien 😉

Y bueno... Con esto concluyo el tema que me tengo que ir de vacaciones. Mi intención era demostrar que configurar un sistema con Nagios y dejarlo operativo y funcional es bien sencillo. Pero la cosa no acaba aquí. Nagios permite mucho más de lo que hemos visto. La librería de plugins disponibles es enorme y si aun así ninguno cumple lo que necesitamos para una necesidad muy específica podemos seguir esta guía de desarrollo para hacernos uno a medida en C, perl, python, shell script o practicamente lo que nos de la gana. Para entornos muy críticos, aparte de la notificaciòn por SMS que hemos apuntado antes existen dispositivos hardware que nos permiten controlar la temperatura, humedad relativa, iluminación, estabilidad de la tensión, presencia de líquidos, intrusiones, vibraciones, etc.

Y si estás haciendo una propuesta técnica en tu departamente y tienes dudas de que tus superiores te autoricen a usar una solución open source échale un vistazo al directorio de empresas y organismos que usan nagios y elige las que crees que van a impresionarle más. Seguro que las encuentras...

Polanco ha muerto

icono de cosas de la prensa y los medios“Y este es el hombre que hace que todos los días salgamos a la calle”. Fue la frase con la que Soledad Gallego, por aquellos entonces delegada de El País en Andalucía, me presentó a Jesús de Polanco allá por finales de 1993 durante la inauguración de la nueva delegación en Sevilla. Mi corazón debía de estar al borde de la taquicardia (comprendedlo: tenía sólo 24 años). Polanco me dio la mano sin mirarme siquiera a la cara mientras que pasaba de largo. Fue una mano blanda y sin fuerzas detrás de un hombre bajito, gris y que yo, si no supiera quien era, habría identificado con el eterno camarero de una taberna de viejos que sigue abierta sólo porque su dueño no tiene otra cosa que hacer más que ir allí todos los días. No había nada detrás de esa mano (nada que se pudiera percibir en quince segundos) que reflejara el poder que realmente existía detrás de ese apretón desganado y sin personalidad.

Y sin embargo lo había. Detrás de esa mano estaba el poder del mayor imperio de los medios que jamás ha existido en nuestro país. Un poder que abarca desde la educación que reciben nuestros hijos (Santillana), hasta la mayor parte de la información que recibimos los españoles por tierra, mar o aire (prensa, televisión y radio) durante las 24 horas del día y gran cantidad de los libros, películas y series de televisión de nuestros tiempos de ocio (Taurus, Aguilar, Sogecable, etc.). Demasiado poder detrás de una sola persona que, por mucho que quieran vendernos ahora en las esquelas y mementos, no ha sido nunca independiente. Los medios ya no los dirigen periodistas sino empresarios y Polanco eligió en su día una opción política, la apoyó en todo momento y su imperio creció a la sombra de la misma al mismo tiempo que ayudaba a darle estabilidad y credibilidad. Una simbiosis como tantas otras pero, a mi juicio, algo indeseable en cualquier sistema político democrático que debería de poseer los mecanismos necesarios para limitar este tipo de cosas.

No creo que haya sido un hombre malo, pero tampoco el hombre honesto, “referente de libertad”, “canonizador de demócratas” o “paladín de la independencia” que tratan de vendernos ahora. Al margen de estas valoraciones, a mi Polanco y su “imperio” me dieron la oportunidad de disfrutar de uno de los mejores trabajos que he tenido en la vida y de conocer a personas maravillosas en el. Desde aquí se lo agradezco profundamente y espero que haya disfrutado de su vida. Porque ya no le queda otra cosa.

“Nuestra” Corona pierde el sentido del humor

icono de El JuevesAnonadado me quedo. La Audiencia Nacional ha ordenado el secuestro de la última edición de la revista El Jueves por un supuesto delito de injurias a la Corona y se ha requerido al director del semanario para que identifique a los autores de la caricatura objetivo del supuesto delito “que podrían haber incurrido en los delitos contra la Corona previstos en los artículos 490.3 y 491 del Código Penal, que prevén penas de hasta 2 años de prisión a quien cometiera calumnias o injurias contra el Rey o sus descendientes.” ¿Estamos locos o que?

Tocando los borbonesEl servidor web de El Jueves (que, por cierto, parece que funciona con IIS… no, si al final se lo tienen merecido) está ahora mismo tan saturado que es imposible ver la portada objeto de las furias de nuestros monarcas pero me extrañaría mucho que superase los contenidos que se incluyen en el libro recopilatorio Tocando los Borbones que lleva en la calle desde hace tres años y que os recomiendo encarecidamente… ¡Y luego todavía nos echamos las manos a la cabeza cuando los musulmanes se ofenden por las caricaturas de Mahoma!

ACTUALIZACI?N: A través del 20 minutos he podido acceder a la portada de marras (el pixelado en las partes más reconocibles de los caricaturizados es mío). Juzgad por vosotros mismos:

Portada de El Jueves secuestrado

ACTUALIZACI?N (Y II): Nota de la editorial de El Jueves en la portada de su web:

Escribimos esta nota el viernes, 20 de Julio de 2007, a las 19h. Tenemos la redacción llena de medios de comunicación que nos preguntan el por qué del secuestro de la revista. No sabemos qué responderles. El Jueves ha publicado decenas, cientos de dibujos sobre la familia real ( y sobre políticos, famosos, la ETA y todo lo que se mueve). Incluso hemos publicado un libro, TOCANDO LOS BORBONES, un tomazo de 350 páginas que recopilaba los dibujos más divertidos.

Somos humoristas gráficos y trabajamos conscientes de que nuestra obligación, lo que nos piden los lectores, es que exploremos el límite de la libertad de expresión. Podemos aceptar que, incluso, en alguna ocasión, lo podamos traspasar . Gajes del oficio. Si nos pasamos para eso están los tribunales pero…¿un secuestro? ¿ la policía recorriendo los quioscos de todo el país retirando nuestra revista? ¿ De verdad escribimos esto el 20 de Julio del 2007?

Tarta de queso

icono distintivo de los textos de recetas de cocinaY para hoy un postre. Esta receta me la enseñó y preparó por primera vez mi amiga Virgina Murcia hace ya tantos años que casi me da verguenza acordarme de aquellos tiempos… Va por ella.

Tarta de queso de Virginia

  • 1 tarrina de 250 grs. de queso Philadelphia, San Millán o similar.
  • 12-13 galletas maría dorada.
  • 3 cucharadas de mantequilla.
  • 3 huevos.
  • 1 brick de 150 ml. de nata líquida.
  • 6 cucharadas de azucar.
  • Mermelada de frambuesa.

Se desmigajan las galletas y se echan en un plato sopero. Se calienta la mantequilla y cuando está bien derretida (pero ojo con que no llegue a quemarse) se vierte sobre el plato con las migas de galletas y se mezcla todo muy bien hasta hacer una pasta que se vierte sobre un molde para tartas (yo uso uno de 30 mm.) y se extiende de forma uniforme por su fondo hasta cubrirlo por completo y usando el envés de una cuchara (o una herramienta similar) para aplanarlo bien.

El queso, la nata, los huevos y el azucar se baten bien hasta que la mezcla presente un aspecto homogeneo y sin grumos, se vierte sobre el molde (muy lentamente para no desbaratar el fondo de galletas) y se introduce en el horno precalentado previamente a 200 grados aproximadamente. No tengo bien medido el tiempo que necesita en el horno (15 o 20 minutos tal vez) pero es bien sencillo de calcular por pura observación: cuando la tarta empieza a subir conecto el gril para que se queme ligeramente en la parte superior. A partir de aquí calculo el momento de sacarla mediante el viejo truco de introducir un cuchillo y comprobar que sale completamente seco.

Cuando la tarta empieza a enfriarse se saca del molde y listo. Combina muy bien con mermelada de frambuesa pero conviene añadirla al gusto en el momento de servirla y no antes.

Pon fin a la ejecución de menores en Irán

icono de amnistía internacional En las próximas horas Sina Paymard puede morir ejecutado en Irán por un delito que cometió cuando tenía 16 años y era drogadicto. Ahora ya sólo la presión internacional puede evitarlo.

Tienes información acerca de este y otros casos similares de condenas de ejecución a menores en Irán en esta página pero, por favor, no pierdas demasiado el tiempo ahora porque a Sina le quedan muy pocas horas. Envía inmediatamente un fax o correo electrónico a la Embajada de Irán en España exigiendo que no se lo ejecute.

Pon fin a la ejecución de menores en Irán

Embajada de Irán en España:
Excmo. Sr. Seyed Davoud MOHSENI SALEHI MONFARED
Fax: 91 345 11 90
E-mail: embiran@hotmail.com

(Off the record: que fuerte que la dirección de correo electrónico de una embajada sea una cuenta de hotmail…)

Configurando Nagios 3.x (y II)

icono de herramientas La semana pasada dejamos nuestro nagios funcionando pero un tanto soso. El mapa de estado (tal vez la pantalla más vistosa de la herramienta) queda bastante pobre sin logos identificativos para cada máquina y tan sólo comprobábamos que las máquinas respondieran a un ping sin monitorizar servicio alguno.

Nagios a medio configurar...

Hoy vamos a empezar por ponerlo bonito. Lo primero que necesitamos son logotipos. En el apartado correspondiente de Nagios Exchange tenemos varias colecciones para elegir. Yo uso habitualmente dos de ellas: Base Images para los ordenadores y Cook Images para la electrónica de red. Los descargamos, los descomprimimos y los copiamos en el directorio /usr/local/nagios/share/images/logos. Cada icono suele venir en cuatro formatos diferentes: gif, jpg, png y gd2.

Ahora tenemos que indicar en las definiciones de nuestros hosts los iconos que queremos usar para representarlos. Como ya os he dicho en otras ocasiones soy un poco torpe para los formatos así que suelo hacer caso a las recomendaciones que leí en algún momento (no recuerdo donde) y escojo el .gif como icono general y el .gd2 para el mapa de estado. No voy a poneros de nuevo la definición de todos los hosts con las líneas que hay que incluir para ello. La sintaxis es tan simple que, creo, basta con uno como ejemplo (lo añadido en negrita):

define host{
     use linux-server
     host_name nagios
     alias Nagios Server
     icon_image debian.gif
     statusmap_image debian.gd2

     address 127.0.0.1
     }

Los iconos elegidos para el resto de los hosts han sido network_switch.gif, router.gif, linux40.gif, win40.gif y sus respectivos .gd2 para el mapa de estado. Reiniciamos el servicio y ahora ya se ve mejor ¿verdad?

Nagios con iconos bonitos

Añadamos ahora algunos sevicios adicionales. Para ello vamos a volver a echarle un vistazo al fichero /usr/local/nagios/etc/objects/commands.cfg. En el apartado SAMPLE SERVICE CHECK COMMANDS tenemos los que vienen preconfigurados y listos para usar pero ojo con algunos de ellos: los que comienzan con check_local sólo sirven para monitorizar servicios en la propia máquina en la que está instalado nagios. Advertido esto, vamos a añadir los siguientes servicios:

  • Número de usuarios, número de procesos y carga de cpu para la máquina que alberga a nagios.
  • Servicios SSH y HTTP en ambas máquinas con Linux.
  • Servicios SMTP y POP3 en la máquina que alberga la intranet y que, para este ejemplo, también hace las veces de servidor de correo.
  • Servicio DHCP en el servidor secundario de dominio de windows.

Para ello añadimos lo siguiente al final de nuestro fichero mired.cfg y volvemos a reiniciar el servicio que ejecuta nagios:

define service{
     use generic-service
     host_name nagios
     service_description Current Users
     check_command check_local_users!20!50
     }

define service{
     use generic-service
     host_name nagios
     service_description Total Processes
     check_command check_local_procs!250!400!RSZDT
     }

define service{
     use generic-service
     host_name nagios
     service_description Current Load
     check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
     }

define service{
     use generic-service
     host_name nagios, intranet
     service_description SSH
     check_command check_ssh
     }

define service{
     use generic-service
     host_name nagios, intranet
     service_description HTTP
     check_command check_http
     }

define service{
     use generic-service
     host_name intranet
     service_description SMTP Response Check
     check_command check_smtp!-t 5 -e “midominio.es”
     }

define service{
     use generic-service
     host_name intranet
     service_description POP3 Response Check
     check_command check_pop!-t 5 -e “midominio.es”
     }

define service{
     use generic-service
     host_name windows#2
     service_description DHCP
     check_command check_dhcp
     }

La única personalización que requiere para adecuarlo a vuestra red es cambiar “midominio.es” en los servicios SMTP y POP3 por los que maneje vuestro servidor de correo.

Ahora la vista del grid de servicios de nuestra red queda bastante mejor (notad que he bajado a propósito el servicio POP3 de la máquina correspondiente para que no todo parezca tan idílico):

Nagios grid de servicios

¿Sigue diciendo alguien por ahí que la configuración de nagios es complicada?

Y aquí lo dejamos por hoy. En la próxima entrega veremos como añadir nuevos servicios a los que vienen por defecto en el fichero commands.cfg