Por qué hay que vigilar su interoperabilidad

Compartir por correo electrónico

BL MOM y RabbitMQ

La interoperabilidad es uno de los principales retos de la ingeniería de sistemas de información empresarial. La falta de interoperabilidad entre las aplicaciones y sus subsistemas es un problema crítico que puede afectar a la calidad global del servicio. La interoperabilidad de los datos se realiza a través de los sistemas de transporte e intercambio de datos, que deben ser fiables y seguros para garantizar un alto nivel de interoperabilidad.

BL MOM (Message Oriented Middleware) es una API desarrollada por Berger Levrault como uno de los medios para establecer intercambios de datos entre las aplicaciones comunicantes de BL y con las externas. BL MOM es una API basada en la mensajería, lo que significa que los datos se transmiten en forma de mensajes. El envío y la recepción de mensajes se gestionan estableciendo un patrón de comunicación de publicación/suscripción que permite que las aplicaciones estén débilmente acopladas. BL MOM lo hace mediante el uso de Protocolo AMQP con el apoyo de RabbitMQ que implementa los conceptos de este protocolo:

  • Intercambio: una entidad con nombre que recibe mensajes de los editores y los dirige a las colas
  • Cola: entidad con nombre que mantiene los mensajes hasta que se consumen
  • Clave de enrutamiento: una dirección virtual que una central puede utilizar para enrutar los mensajes hacia las colas
  • Vinculación: proporciona el enlace entre las centrales y las colas, implementa una estrategia de enrutamiento
  • Editor: una aplicación cliente que publica mensajes en los intercambios
  • Consumidor: una aplicación cliente que se suscribe a los intercambios y obtiene mensajes de las colas
  • Mensaje: un mensaje se compone de una cabecera y un cuerpo. La cabecera contiene las propiedades del mensaje presentadas en un tipo de formato específico. El cuerpo o carga útil son los datos de la aplicación en tránsito presentados también en un tipo de formato específico.

Existen varios tipos de intercambios. BL MOM utiliza intercambios de temas, en modo fanout. Esto crea una red de editores y consumidores que comparten y acceden a los datos sobre un tema común. Esta distribución permite que las aplicaciones se ejecuten mientras dependen de los datos de otras aplicaciones, estén donde estén e independientemente de su modo de despliegue (en las instalaciones / en la nube).

RabbitMQ es por lo tanto utilizado por BL MOM como la infraestructura subyacente que transporta y maneja el enrutamiento de mensajes. RabbitMQ es un broker fiable que proporciona un alto rendimiento y una alta disponibilidad. Permite establecer interacciones robustas y maneja arquitecturas de interoperabilidad escalables y configurables en un entorno en constante cambio con múltiples interacciones.

Necesidad de medios de control

La interoperabilidad es un obstáculo que hay que tener en cuenta durante el diseño y el desarrollo de los sistemas de comunicación y que los sistemas de información modernos tienen que verificar. Los métodos de evaluación de la interoperabilidad tienen en cuenta las barreras que dificultan la interoperabilidad de las empresas y los sistemas. Sin embargo, aunque se superen esas barreras y se establezcan los medios de interoperabilidad, los sistemas están en constante evolución: los procesos y las interfaces pueden cambiar, por lo que la forma de realizar la interoperabilidad puede verse afectada. Para el caso de nuestro uso de RabbitMQ, las propiedades que se han establecido para realizar la publicación y el consumo de mensajes (esquemas de mensajes, credenciales de autenticación...etc.) pueden alterarse, provocando la interrupción de los canales de comunicación. Por eso es importante llevar un control de los intercambios y proporcionar medios de monitorización y alerta para facilitar el mantenimiento del sistema de intercambio de datos.

On puede querer confiar en la consola de gestión de RabbitMQ, ya que proporciona información sobre la estructura del sistema de mensajería y el estado de los mensajes. Presenta listas de recursos existentes (canales, intercambios, colas, etc.), sus características y un conjunto de estadísticas. Es posible, por ejemplo, comprobar si hay mensajes pendientes en una cola. Sin embargo, la consola sólo puede utilizarse para comprobar la situación actual del broker, sin historial de eventos precedentes ni sistema de alertas. Tampoco permite realizar consultas y filtros avanzados sobre los recursos, especialmente necesarios en caso de múltiples intercambios de interoperabilidad con varias colas. Esto hace que el mantenimiento de las interacciones de interoperabilidad sea cada vez más pesado y que el análisis de las disfunciones sea difícil para los administradores, que tienen que comprobar varios archivos de registro para analizar la situación y que preferirían ser notificados antes de que la disfunción afecte a los clientes. En consecuencia, trabajamos en proporcionar medios de supervisión que no ofrece la consola de gestión de RabbitMQ. Nuestro objetivo es supervisar RabbitMQ: recoger información sobre el sistema de intercambio de datos existente y ofrecer indicadores, consultas y visualizaciones.

Monitorización con Prometheus y Grafana

La solución propuesta se basa en dos destacadas herramientas de código abierto: Prometheus y Grafana. Prometheus es un conjunto de herramientas de monitorización que cuenta con una base de datos de series temporales integrada para almacenar los datos recogidos. Estos últimos pueden representarse como una lista de métricas con sello de tiempo y nombre, cada una de las cuales consta de un conjunto de etiquetas (pares clave/valor) que especifican las propiedades de las variables supervisadas.
Por ejemplo, el número de mensajes totales publicados a un intercambio dado dentro de un cluster determinado y el host virtual se formatea en la siguiente métrica:

  • exchange_messages_published_in_total{cluster="rabbit@CSLSAASRBS1″, vhost="/",exchange="consoleSaasClientContract"} 45

Prometheus también ofrece un sencillo lenguaje de consulta: PromQL y algunos medios básicos para visualizar los datos. Para una visualización más avanzada utilizamos Grafana. Se trata de un sistema de visualización de métricas y alertas ampliamente empleado que admite Prometheus y su lenguaje de consulta, junto con varias otras fuentes de datos como InfluxDB, ElasticSearch y otras.

Prometheus es un sistema basado en la extracción que extrae activamente los valores de las métricas de un punto final que cumple con su formato. Esto significa que para supervisar un sistema tenemos que proporcionar un punto final HTTP que exponga las métricas supervisadas. A continuación, Prometheus rastrea periódicamente el punto final. Desde que trabajamos por primera vez en Monitorización de RabbitMQ, Rabbitmq ha lanzado en octubre de 2019 una mejora de sus posibilidades de monitorización con soporte incorporado para Prometheus. Así, ahora proporciona un punto final con un conjunto de métricas de Prometheus.

Estas métricas cubren un conjunto de información muy útil que satisface algunas de nuestras necesidades de seguimiento, como:

  • Uso de disco y memoria del nodo RabbitMQ y la salud de los nodos del cluster RabbitMQ
  • Indicadores globales sobre el número de recursos existentes, mensajes y sus tipos
  • Contadores sobre algunos eventos como cuando se crean o eliminan recursos.

Sin embargo, estos eventos no son específicos de los recursos. No podemos, por ejemplo, saber qué cola ha sido eliminada y por qué usuario. Además de esto, no hay soporte para eventos relacionados con usuarios, permisos, vhosts y otros elementos de la estructura de RabbitMQ. En consecuencia, hemos emprendido el desarrollo de un exportador de Prometheus para cubrir más necesidades de monitorización.

Nuestro exportador RabbitMQ Prometheus aprovecha el plugin de intercambio de eventos que empuja varios eventos: creación y eliminación de recursos, hosts virtuales, usuarios y permisos; creación y cierre de conexiones y canales, intentos de autenticación de usuarios, etc. El exportador es un consumidor RabbitMQ que está suscrito a estos eventos. Define un conjunto de métricas de Prometheus y las incrementa cada vez que se produce un evento. Una vez desplegado, el exportador proporciona un nuevo punto final de Prometheus con un conjunto de nuevas métricas. Las métricas se proporcionan con toda la información disponible para ayudar a los administradores durante las actividades de mantenimiento.

Para explotar estas métricas y proporcionar un único punto de control sobre los clusters RabbitMQ existentes, hemos creado un panel de control Grafana. Grafana utiliza un servidor Prometheus que raspa ambos puntos finales de RabbitMQ Prometheus, el nativo y el expuesto por nuestro exportador. Hemos utilizado un panel de control de Grafana proporcionado por RabbitMQ y lo hemos ampliado con nuestro conjunto de métricas, visualización y alertas.
Alertamos a los administradores con notificaciones en tiempo real sobre:

  • Operaciones fallidas (por ejemplo, mensajes no reconocidos)
  • Tasas que superan los umbrales aceptados
  • La ocurrencia de eventos no deseados como: eliminación de un recurso, eliminación de un usuario, fallo de autenticación de usuario... etc.

Además, como Grafana soporta PromQL, es posible que los administradores consulten las métricas para analizar una situación de forma más detallada. En el siguiente ejemplo, es posible saber exactamente cuándo se han eliminado los consumidores de las colas cuyo nombre contiene una subcadena específica.

Este panel de control de RabbitMQ es útil para cualquier equipo que utilice BL MOM o RabbitMQ. Ofrece una visión general del comportamiento del sistema de intercambio; facilita el mantenimiento de los enlaces de interoperabilidad existentes y la realización de acciones correctivas cuando sea necesario. Además, aumenta la fiabilidad del sistema de intercambio, mejorando así el nivel general de servicio de los sistemas implicados.

Más ...

Ir arriba