cdanielpy.github.io

Mi repositorio de publicaciones personales para el resto del mundo

Follow me on GitHub

Logging Centralizado

Parte 1: Preparar el RabbitMQ

Presentación

Continuando con el desarrollo de nuestro proyecto de centralización de eventos de logging, debemos comenzar a preparar el entorno, empezando por el que hará el transporte de los datos.

Nos saltaremos la instalación y configuración del RabbitMQ y del MongoDB, cuyos sitios web contienen suficiente información acerca de dichos procesos.

Configuración de requerimientos en el RabbitMQ

Necesitamos crear las configuraciones necesarias para que la pueda recibir los datos enviados por nuestra aplicación:

Un exchange exclusivo, para no interferir con los procesos del exchange “principal”.

Un binding de los mensajes entrantes al exchange hacia una queue de mensajes, y

Una queue de destino de los mensajes.

El “exchange” receptor

Estando en la seccion [Add a new exchange], de la pestaña [Exchanges] del RabbitMQ seguimos los pasos siguientes:

  1. El host virtual lo dejamos en ”/”, que es el host por defecto (salvo otras preferencias).
  2. Ingresamos el nombre “logger.exchange” (puede ser cualquiera).
  3. Debe ser de tipo “direct”.
  4. Los demás valores los dejamos en su configuración por defecto.
  5. Click en el botón [Add exchange].
new exchange exchange list


La “queue” de destino

Estando en la seccion [Add a new queue], de la pestaña [Queues] del RabbitMQ seguimos los pasos siguientes:

  1. El host virtual lo dejamos en ”/”, que es el host por defecto (salvo otras preferencias).

  2. Ingresamos el nombre “logger_input_queue” (también puede ser cualquiera).

  3. Los demás valores los dejamos en su configuración por defecto.

  4. Click en el botón [Add queue].

new queue

El “binding” de los mensajes

Ahora, debemos indicar al exchange cómo direccionar a la queue de salida los mensajes que recibe. Devuelta en la pestaña [Exchanges] del RabbitMQ seguimos los pasos siguientes:

Click en el exchange “logger.exchange”, que nos abriá la página de administración del mismo.

En la sección [Bindings], específicamente en la sub sección [Add binding from this exchange]:

Indicamos que los mensajes deben direccionarse a la queue ( [To queue] ) “logger_input_queue”, y

La [Routing key] será “mensaje_de_log”

Click en el botón [Bind].

new bingind bindings list

Con este paso, lo que hacemos es indicar al RabbitMQ, que los mensajes que lleguen al exchange “logger.exchange” y tengan la routing key “mensaje_de_log” serán derivados a la queue “logger_input_queue”.

Los mensajes que no tengan esa clave de ruteo, serán directamente eliminados, así que mucho cuidado con esto.

Prueba del circuito en el RabbitMQ

Para probar que lo realizado en los pasos anteriores funciona, podemos publicar un mensaje de pruebas en nuestro nuevo exchange y verificar que esté llegando a la queue correctamente.

Estando en la sección [Publish message], dentro de la página de propiedades del exchange “logger.exchange” seguimos estos pasos:

En el campo [Routing key], ingresamos nuestra clave de ruteo del mensaje “mensaje_de_log”.

En el campo [Payload], escribimos nuestro mensaje de pruebas “Hola logger!”, y

Click en el botón [Publish message].

Si todo está correctmanete configurado, tendriamos que ver que hay un mensaje listo en la queue “logger_input_queue”.

Si no es así, debemos de revisar qué es lo que se nos pasó por alto de los pasos anteriores.

new bingind message message ready

Paso 2: El Publicador de Eventos