Nuevos palabros: REST y SOA

Hace ya algún tiempo que oigo hablar de REST y tenía en mis marcadores un par de entradas al respecto pendientes de leer.

Para introducirnos, REST significa REpresentational State Transfer y se trata de un estilo de de hacer las cosas basado en el principio de que todo debe ser accesible vía una URI. Fundamentalmente este concepto se aplica a las entidades de un sistema, los datos.

Por otro lado ROA significa Resource Oriented Architecture y se aplica a aquellos sistemas cuya arquitectura sigue el concepto de REST.

Si deseais produndizar más en estos temas os recomiendo empezar por aquí:

hping2.pl. Script para monitorizar servicios remotos

Estos días ando metido en la puesta en marcha de un sistema de monitorización de servicios de red.

Para ello he seleccionado Cacti, que es una herramienta que ya conocía, madura y bastante potente.

El caso es que en esta ocasión me he encontrado con un pequeño problemilla. Necesitaba monitorizar el estado de servicios externos a nuestra red y a los cuales no podía acceder ni vía ping, ni vía SNMP. Después de hacer una pequeña investigación me encontre con hping, una herramienta que es como un ping superavanzado que permite enviar no solo paquetes ICMP (pings) sino componer y enviar paquetes a cualquier puerto destino. Por ejemplo, me permite hacer un ping (estrictamente hablando no es un ping) a un servidor al puerto de CVS, o de HTTP, o de cualquier otra cosa.

Después de investigar un buen rato comprobé que nadie (extrañamente) se había encontrado con el mismo problema y por lo tanto me he tenido que poner a integrar yo hping con Cacti. Esto se concreta en programar un script que ejecute el hping e imprima los resultados en un formato determinado que Cacti es capaz de interpretar.

El proceso es muy simple, me he limitado a copiar un script Perl que hacía algo parecido y adaptarlo para que use hping en vez de ping. Me animo a publicarlo por que no he encontrado ya uno hecho y por que he perdido más de 2 horas hasta que he averiguado que el comando hping2 se comporta de forma «peculiar» ya que parte de su salida la envía a STDOUT y otra parte a STDERR. Si alguno de vosotros se encuentra en la misma tesitura espero que mi experiencia os sirva para ahorraros esas dos horas. 🙂

Adjunto a continuación el scrip completo.


#!/usr/bin/perl -w## File     : hping2.pl
# Version  : 1.
# Date     : July 19th 2007
# Author   : Jorge Tomé Hernando <jorge@jorgetome.info>
#
# Based on : echoping.pl by Sébastien Desse <sdesse@euresys.fr>
#            SmokePing Like 1.0 for Cacti by drose12
#
# Description
# ===========
# This script uses the hping2 utility to check the availability
# and response times of remote services.
# I create this script to be able to monitor the availability of
# services on servers external to my network (behind a firewall) that
# i cannot ping neither access by SNMP.
#
# Syntax
# hping2.pl <number of tests> <destination port> <destination host>
#
# Where...
#   number of tests  : Numeric value. Greater than 0.
#   destination port : Numeric value. Any valid port.
#   destination host : IP address or host name
#
# The script prints a line to the STDOUT with this format:
#
# min:$min avg:$avg max:$max loss:$loss
#
# Where...
#   $min  : Numeric value. Minimum response time in milliseconds
#   $avg  : Numeric value. Average response time in milliseconds
#   $max  : Numeric value. Maximum response time in milliseconds
#   $loss : Numeric value. Percent of packets loss

## Configuration section ==============================================
$HPING2CMD    = "/usr/sbin/hping2";    # Location of the hping2 program
$HPING2PARAMS = "--numeric --quiet --syn"; # Parameters for hping2
# End of configuration section =======================================

# Check syntax
@ARGV == 3 or die "Syntax : hping2.pl <number of tests> <destination port> <destination host>n";

# Map arguments
my $count    = $ARGV[0];
my $destport = $ARGV[1];
my $host     = $ARGV[2];

# Initialize variables
my $min  = "err";
my $avg  = "err";
my $max  = "err";
my $loss = "err";

# Execute hping2
# Important!!. I lost more than 2 hours until i discovered that
# hping2 sends the result to STDERR instead of STDOUT, this is
# the reason for the "2>&1" in the command invocation.
open (HPING, "$HPING2CMD $HPING2PARAMS --count $count --destport $destport $host 2>&1 | ");

# Analyze the result
while (<HPING>) {
/(d+)% packet loss/ && ($loss = $1);
/= (.+)/(.+)/(.+) ms/ && (($min,$avg,$max) = ($1,$2,$3));
}

close(HPING);

# Print the results
print "min:$min avg:$avg max:$max loss:$loss";

## End of script

Mi escritorio

Tenía en mi lista de pendientes publicar una entrada en la que presentaros mi puesto de trabajo, pues aquí está. para que es simpiox

Hace casi 6 meses que los integrantes de la división de Factorías de Software de Matchmind nos hemos mudado a nuestra nueva ubicación en Madrid, entre Embajadores y Legazpi. ivermectin apple flavored horse paste

Las primeras semanas fueron complicadas por que la planta estaba como un solar y prácticamente hubo que montarla al mismo tiempo que nos íbamos mudando, pero el resultado final creo que está bastante bien.

Mi puesto de trabajo es como podéis ver en la foto, no me puedo quejar, excepto de que está dentro de un pequeño (no tan pequeño) despacho que comparto con otros 6 compañeros pero que nos mantiene separados del resto, que es lo que peor llevo. ivermectina gotas para que se usa

El equipamiento es muy bueno, cuento con un portátil Dell D520 con 2 GB de memoria, 80 GB de disco y doble procesador y también cuento con un Mac Mini con procesador Intel Core Duo, 512 MB de memoria y otros 80 GB de disco, que utilizamos para pruebas de usabilidad de las aplicaciones en Mac OS X.

Por cierto, el Mac Mini es mi primera experiencia Apple y tengo que decir que aunque reconozco la tremenda calidad del producto no me ha convertido en un maquero irredento :-). La experiencia con Mac OS X ha sido estupenda, es un sistema operativo excelente pero no ha pasado ni un mes y ya le he instalado Ubuntu Linux 7.04 para «hacer cosas serias» ;-). El Mac OS X me parece un sistema operativo excelente para usuarios «estándar» pero a mi, después de la novedad inicial, me hacía sentir muy encorsetado y limitado. Ubuntu, en su versión 7.04, soporta directamente todo el hardware del Mac Mini: tarjeta gráfica, Wifi, Bluetooth, sonido, etc.. Todo ha funcionado a la primera y la sensación es que Ubuntu va bastante más ligero que Mac OS X sobre el mismo hardware.

Google Desktop disponible para Linux

Acabo de leer en Lifehacker que Google Desktop está disponible para Linux.

Google Desktop es una aplicación que he echado de menos desde que hace ya más de 6 meses me pasé definitivamente en el trabajo a Ubuntu. Desde entonces solo he arrancado MS Windows XP en una o dos ocasiones. ????? ???? ??????

Ubuntu incluye Beagle al que, he de ser sincero, no he dado muchas oportunidades. ???? ??????? ????? No recuerdo haberlo usado nunca y cuando he visto cómo se usa no me parece tan sencillo y potente como Google Desktop. Además cuando monitorizo cómo se está utilizando la CPU de mi portátil Beagle siempre aparece muy arriba en la lista.

Voy a bajarme Google Desktop para Linux y darle una oportunidad, a poco bien que lo haga sustituirá a Beagle en mi escritorio. Ya os contaré.

Actualización. Ya me lo he bajado e instalado y ya está funcionando en mi escritorio. ?????? ??? ???????? La instalación (me he bajado el deb) no ha supuesto ningún problema e inmediatamente tenía disponible en la barra de menú el icono de Google Desktop. Igual que en MS Windows pulsando dos veces la tecla Ctrl aparece el cuadro de búsqueda.

Mis enlaces en del.icio.us del 1 de Junio de 2007

Estos son mis enlaces en del.icio.us del 1 de Junio de 2007: