EL RETO

Un cliente quería incorporar un sistema de recogida de métricas para monitorizar los acuerdos de nivel de servicios (SLAs) establecidos con el proveedor de su software de Plataforma (de alto rendimiento y complejidad).

LA SOLUCION

La solución se dividió en:

  • Analisis de métricas requeridas e Identificación de los puntos del Flujo de Negocio en los que se debían recoger.
  • Volcado de Métricas desde los puntos identificados a una Base de Datos.
  • Optimización y Modelado de Métricas Estadísticas (agregaciones, cálculos, transformaciones, etc.)
  • Visualización de Métricas a través del interfaz adecuado.

SOLUCION TECNOLOGICA

La Plataforma constituye un sistema complejo en el que se ejecutan un alto volumen de operaciones en las que se basan las métricas a registrar. Por ello se decidió emplear InfluxDB.

InfluxDB es una Base de Datos basada en series de tiempo que maneja de forma muy eficiente esas series, y se caracteriza por su capacidad para recoger miles de datos por segundo, pudiendo hacer cálculos y agregar información de manera óptima (medias, máximos, búsquedas en el tiempo, etc.), y todo ello en tiempo real, lo que puede derivar en una ventaja competitiva para las empresas que la emplean en este tipo de contextos de monitorización.

La Plataforma (implementada en Java) va volcando todas las métricas requeridas a través de la API que proporciona InfluxDB.

Mediante el lenguaje de consulta Flux e diseña cómo se va a explotar la información, qué campos se van a generar, qué cálculos y agregaciones son necesarios.

Se ha optado por este lenguaje de consulta porque ofrece las características frente a otros de:

  • Usabilidad: Fácil de aprender y usar, enfocado a la productividad.
  • Legibilidad: Fácil de leer, seguir y comprender y por lo tanto de mantener.
  • Modularidad: Posibilidad de crear funciones y librerías propias.
  • Comprobable: Las consultas son código y deberían poder ser probadas y controladas a través de controlador de versiones. Incluso debería ser posible poder probar partes concretas y diferenciadas de una consulta compleja compuesta.
  • Abierto a la contribución y facilidad para compartir funciones y librerías con otros desarrolladores, aumentando la eficiencia en el desarrollo.
  • También ofrece la posibilidad de compartir consultas comunes y casos habituales para evitar “reinventar” determinadas queries en InfluxDB

Finalmente, para la visualización de datos se optó por Grafana por su idoneidad para representar los datos estadísticos, y por su integración con InfluxDB y Flux, haciendo posible la creación de los Dashboards que se adaptaban a las necesidades del cliente.