Autentia

Blog

Monitorización: métricas de sistema, decisiones de negocio

Por definición, la monitorización es un proceso en tiempo real que abarca recolección, procesamiento y análisis de datos cuantificables de un sistema. Involucra muchas aristas y dependiendo de las necesidades y ambiciones de quién lo requiera, puede contemplar desde conocer el estado de infraestructura y servicios, hasta tener un sistema complejo, resiliente y capaz de anticipar eventos. La monitorización ha dejado de ser algo puramente técnico para convertirse en una manera de obtener información valiosa que apoya la toma de decisiones y contribuye a mejorar las condiciones de nuestros clientes, disminuir costes, evolucionar nuestros productos e incluso crear nuevos. En este sentido, el objetivo de un sistema de monitorización es poder conocer nuestro sistema y su comportamiento ante las interacciones con nuestro cliente.

Al momento de afrontar la construcción de un sistema de monitorización es importante tener en cuenta cuál es el objetivo que perseguimos y quiénes usarán la información. Una vez identificado esto, podemos definir las métricas y herramientas que nos ayuden a recaudar datos en cada parte de la arquitectura de nuestro producto.

La recolección de métricas

En este proceso, una de las principales tareas es la identificación de métricas. Cuando hablamos de métricas nos referimos a datos que son obtenidos de la fuente y no han sido tratados (número de solicitudes, espacio disponible en disco, cantidad de conexiones, etc.). A su vez, las métricas pueden ser absolutas o relativas. Las absolutas son aquellas sobre las que no existe un valor de referencia previo, por ejemplo el número de transacciones realizadas, cantidad de usuarios conectados, etc.; y las relativas hacen referencia a las que están basadas en un valor previo y que tienen un valor en un momento dado, por ejemplo la disponibilidad del 45% de memoria. Los indicadores, en cambio, son el resultado de manipular las métricas (capacidad de atención = número de solicitudes/cantidad de conexiones) para obtener información sobre el comportamiento basado en diferentes variables. De los indicadores se debe tener presente relacionar y medir aspectos similares. Tanto las métricas como los indicadores nos puedan dar información para tomar decisiones de negocio relacionadas con las funcionalidades del producto o la plataforma donde se encuentra.

Beats-Modules

Las métricas de rendimiento nos dan información sobre el funcionamiento de los componentes de nuestro sistema (infraestructura, dispositivos, redes), por ejemplo el uso del CPU, la cantidad de memoria consumida, la capacidad disponible en disco, el número de procesos y dispositivos activos, la cantidad de fallos en el sistema, la cantidad de redes disponibles, el estado de la comunicación entre los dispositivos, etc. Estos valores nos permiten tener una visión clara sobre el uso de los recursos y apoyan las tareas del equipo de operaciones. Su simple lectura nos orienta en la gestión de la capacidad de la plataforma para obtener mejores resultados en coste o rendimiento en un determinado momento. Las primeras herramientas de monitorización estaban enfocadas en obtener  estos datos, era importante controlar la disponibilidad del sistema y garantizar su actividad: buena o mala.

Luego, con la evolución tecnológica, la cantidad de información empieza a crecer y se obtienen más datos por lo cual, se hace necesario medir otros aspectos relacionados con la aplicación y la interacción con el usuario: los servicios que están disponibles, la cantidad de usuarios que usan una aplicación, la cantidad de solicitudes que podemos soportar simultáneamente, el tiempo de respuesta, la cantidad de errores y su tipo, el tiempo que demoramos en recuperarnos y muchos otros. Se adquiere información en diferentes niveles de la arquitectura del sistema, en la capa más baja mediante protocolos de comunicación y a nivel de aplicaciones mediante el logging y la propia información de servidores de aplicación. Aunque estas métricas siguen dando información de bajo nivel, ayudan a entender el comportamiento del sistema y su interacción. Si analizamos estos datos tendremos información que sigue apoyando la gestión operativa e involucra a los equipos de desarrollo quienes empiezan a conocer cuándo y cómo el usuario está usando su aplicación.

Pasamos de estar centrados en lo técnico a enfocarnos en el usuario y su interacción con el sistema. Ahora, tratamos de ir más allá, queremos obtener métricas que nos permitan tener visión global de nuestro negocio, en la cual podamos obtener información del ecosistema y las necesidades que están siendo satisfechas: queremos centrarnos en el cliente, hacer que su experiencia sea natural, que los sistemas formen parte de su vida y no sean una traba. Para ello, necesitamos garantizar que nuestros productos reaccionan correctamente en todo momento y es aquí donde los sistemas de monitorización juegan un papel importante.

Los indicadores de negocio

app-browser-chartEl reto actual es convertir datos crudos en indicadores de negocio que nos permitan conocer a nuestros clientes, controlar y medir los recursos eficientemente, poder anticiparnos al mercado y optimizar el esfuerzo en el desarrollo de productos. Debemos ser capaces de hacer seguimiento de nuestro producto desde que nos lo imaginamos. Cuando nos referimos a monitorización, soñamos con visualizar en una pantalla el estado de nuestro producto, identificar las fallas y celebrar cuando hemos superado objetivos; ver qué es lo que está bien y qué no; que seamos capaces de adaptarnos rápidamente ante cualquier evento y sobretodo poder dar a nuestros clientes información sobre lo que está pasando cuando lo requieran.

La monitorización apoya arquitecturas modernas y metodologías que promueven procesos de integración y entrega continua. Este tipo de sistemas, aunque complejos, dan valor en cada etapa del ciclo de vida de un producto:

  1. durante la conceptualización nos proveen información sobre las necesidades del mercado y contribuyen a enriquecer la experiencia del usuario;
  2. durante el desarrollo, estas herramientas contribuyen a generar productos de mayor calidad, promueven la instrumentación como mecanismo para comunicar su estado y mejora el proceso de pruebas, lo cual disminuye fallos y garantiza tiempos de entrega más cortos;
  3. durante la validación y puesta en producción nos ayudan a tener indicadores de negocio en tiempo real, lo cual apoya la toma de decisión.

 

Según, SRE Book (Google) debemos poner atención en cuatro métricas, que llaman las cuatro reglas de oro: la latencia, el tráfico, la saturación y los errores. La pregunta entonces sería, ¿es posible que estas métricas nos den información de negocio? La respuesta es sí, estas métricas nos pueden informar cómo está nuestro negocio y en base a su comportamiento podemos tomar acciones. Por ejemplo: Imaginemos el tráfico como un indicador de negocio y que en nuestro contexto controlamos la demanda de un producto, cuando conocemos el comportamiento de esta métrica podemos decidir sobre el precio del producto para controlar la demanda y garantizar márgenes esperados. Otra aplicación puede ser la latencia que hace referencia al tiempo que toma una petición en ser servida, esta métrica en un contexto de producción de dispositivos indica la cantidad de productos que somos capaces de fabricar y cuando esperamos fabricar 1000 dispositivos y solo estamos entregando 600 es porque algo está fallando en algún lugar del sistema. Como éstas,  muchas otras ramas de la monitorización empiezan a ser necesarias para determinar la causa de un evento cuando ya ha ocurrido.

Analizar las métricas desde la perspectiva de negocio es de gran importancia, debido a que aunque el sistema este funcionando dentro de los umbrales esperados, el indicador de desempeño puede no cumplirse y esto implica que se deben tomar acciones en el producto que estén alineados a la estrategia y en consecuencia, que apalanquen el logro de objetivos. Por tanto, al pensar en un sistema de monitorización necesitamos identificar KPI’s con los cuales podamos guiar nuestras decisiones y una vez se detecte un error, se generen alertas y se realice la investigación que determine qué partes en el producto pueden estar fallando.

Las herramientas del mercado

kibana-machine-learning

En el mercado existen muchas herramientas de monitorización. A continuación se describen algunas de ellas clasificadas en tres grupos: arquitecturas distribuidas aquellas basadas en virtualización y alta disponibilidad; arquitecturas modernas cuyo principal norte son los microservicios; y arquitecturas híbridas que hacen referencia a plataformas con arquitecturas distribuidas y modernas al mismo tiempo.

Arquitecturas distribuidas

  • Centreon

Una solución de monitorización robusta y madura que soporta una variedad de arquitecturas orientadas a la escalabilidad, alta disponibilidad, resiliencia y redes distribuidas. Centreon está basado en Nagios y mejora la manera en que se monitorizan entornos con múltiples nodos. Hace posible monitorizar muchos entornos con particularidades mediante el uso de plugins (Centreon packs): servidores, UPS, aplicaciones, sitios web, equipos de red, etc. 

Permite la monitorización de la actividad del negocio mediante Centreon Broker 2.8, un módulo, en conjunto con Centreon BAM, que permite el cálculo en tiempo real de la actividad del negocio y provee más información que los sistemas de computación antiguos.

  • Icinga 2

Sistema de monitorización open-source que verifica la disponibilidad de los recursos de red, realiza notificaciones de fallos eléctricos y genera datos de rendimiento para reportes. Puede monitorizar ambientes grandes y complejos en múltiples ubicaciones, es escalable y extensible. Puede ser usado para monitorizar la disponibilidad y estado de hosts y servicios virtuales o locales (HTTP, SMTP, SNMP, SSH, impresoras, switches, routers, sensores de temperatura, otros servicios de acceso local o remoto) en entornos simples o complejos con alta disponibilidad, clusters y redundancia.

Permite visualizar y monitorizar la jerarquía del proceso de negocio basada en ninguno o todos los objetos monitorizados por Icinga 2 (Icinga Web 2 business process module).

Arquitecturas modernas

  • Prometheus

Sistema de monitorización y alerta open-source construido originalmente por SoundCloud en 2012. Ha sido adoptado por muchas organizaciones y tiene una comunidad activa de desarrolladores y usuarios. Es un proyecto standalone, mantenido independientemente por cada compañía. Funciona bien para registrar cualquier serie de tiempo puramente numérica (time series data), tanto monitorización centrada en la máquina como monitorización de arquitecturas dinámicas basadas en servicios. En el mundo de los microservicios, soporta colecciones de datos multidimensionales y la consulta de esta información.

Provee un modelo de datos multidimensional y un poderoso lenguaje de consulta (PromQL).
Soporta autodetección para cualquier dispositivo de la infraestructura. Recolecta información de más de 5000 métricas automáticamente, con cero configuración, cero dependencias y cero mantenimiento. Las librerías de Prometheus ofrecen cuatro tipos de métricas: contador (counter), calibrador (gauge), histograma (histogram) y resumen (summary).

  • Sysdig Monitoring

Sysdig open-source provee de una manera poderosa, conocer y observar el comportamiento de tu sistema, resolver el rendimiento de tu aplicación y dar seguridad a plataformas de contenedores (como Kubernetes y Cloud Foundry).

Combina métricas de contenedores, monitorización de Kubernetes y Docker y monitorización a nivel de negocio para una mejor visibilidad, generación de alertas y resolución de problemas. Es el primer monitor unificado y contenedor seguro a lo largo del ciclo de vida de un software.

Las métricas por defecto incluyen varios tipos de metadata los cuales son conocidos automaticamente por Sysdig Monitor como etiquetas, segmentos y pantalla. Por ejemplo:
 – Métricas de sistema por host, contenedores y procesos (CPU used, etc.).
 – Métricas de orquestador (recogidas de Kubernetes y Mesos).
 – Métricas de redes (trafico de red).
 – Métricas de plataforma.
El orquestador de métricas y eventos permite ver y consultar los tiempos de respuesta, métricas de rendimiento de una aplicación, métricas de Prometheus y métricas propias, métricas de contenedores, Kubernetes y redes. Además, permite concentrar la información en un solo lugar a partir de la instrumentación por host. Las métricas pueden ser integradas con Sysdig Monitor desde un gran número de plataformas, incluyendo Kubernetes, JMX, Statsd, Prometheus y desde un amplio número de aplicaciones. Muchas métricas son recolectadas por defecto y se pueden extender o crear nuevas métricas.

Arquitecturas híbridas

  • Elastic Stack

Los productos Elastic Stack están diseñados para trabajar juntos y se realizan despliegues sincronizados para simplificar la instalación y actualización. La pila completa está formada por: Beats 6.6, Elasticsearch 6.6, Kibana 6.6 y Logstash 6.6.

Elasticsearch es un motor de búsqueda y análisis que permite almacenar, buscar y analizar grandes volúmenes de datos de forma rápida y casi en tiempo real. Permite analizar KPIs, métricas y objetivos de negocio. Posee un API Restful HTTP y JSON para realizar integraciones con cualquier sistema.

Logstash es un procesador de datos que ingiere datos de múltiples fuentes simultáneamente, los transforma y los envía a un stash como Elasticsearch. Kibana permite a los usuarios visualizar datos con gráficos en Elasticksearch. Elastic Stack es la evolución ELK Stack.

  • NetData

Recolecta miles de datos por servidor por segundo con solo el 1% de consumo de una CPU simple, pocos MB de RAM y sin operaciones de I/O en disco. Permite ver en tiempo real toda la información posible dispuesta en dashboards. Netdata forma parte del Cloud Native Computing Foundation (CNCF).

Netdata soporta el protocolo STATSD, las librerías clientes pueden ser usadas para la recolección de métricas: calibradoras (gauges), contadoras y medidoras (counters and meters), temporizadores e histogramas (timers and histograms) y conjuntos (sets).

No posee métricas de negocio predefinidas. Sin embargo, deja abierta la posibilidad para hacerlo y motiva a los usuarios a ver cómo cada métrica recogida impacta en el negocio más allá de hacer detección de fallos y planificación de la capacidad de uso.

  • Datadog

Sistema moderno de monitorización y análisis. Encuentra información dentro de cualquier pila, aplicación, a cualquier escala y donde sea. Su propuesta es concentrar en un solo lugar la información sobre tu producto, independiente de la ubicación: entornos en la nube, servidores locales, métricas, aplicaciones y equipos en un solo sitio.

Datadog está diseñado para dar visibilidad al equipo de las métricas y eventos de sistema, compartir lo que ves, escribes y haces. Cuestiona el contexto con datos de producción, registra cambios y hace notificaciones.

Es una herramienta completa que provee instrumentación para las aplicaciones y nuevas integraciones. Incluye un API con acceso a la observabilidad de todas las aplicaciones e infraestructura. Captura eventos y métricas desde las aplicaciones usando librerías clientes. Etiqueta servidores y métricas, genera y carga dashboards en formato JSON y usa acceso a datos mediante una API Restful HTTP.

Conclusiones

Debemos saber que una buena monitorización debe ser fácil y simple. A pesar de que la cantidad de datos que se pueden recoger es infinita, si no existe una forma de entenderlos serán un desperdicio. Identificar eso que queremos analizar nos ahorrará recursos y esfuerzo en la recolección de datos. Tener una perspectiva de negocio, realizar un seguimiento de indicadores, tener presente los síntomas y ser lógicos en la correlación de las causas, garantizará que este proceso apoye la gestión operativa, la creación y evolución del producto y sobretodo optimice el uso de recursos generando ganancias al reducir costes y esfuerzos. Adicionalmente, tener presente el comportamiento del sistema y las interacciones con nuestro cliente, nos dará indicios oportunos sobre la escalabilidad de nuestro sistema.

En Autentia, hemos dedicado esfuerzos a conocer los sistemas de monitorización como mecanismo para conocer las necesidades del cliente, mejorar el producto, ser ágiles y como parte fundamental del ciclo de integración. Poseemos un entendimiento de este proceso y amplia experiencia en herramientas como Elastic Stack. Te invitamos a que nos contactes si tienes alguna duda o quieres ayudarnos a entender y conocer y más sobre este  tema.

 

Conoce nuestro servicio de acompañamiento agile

VER
Por Jeselys Elena Hernández 13 Feb 2019

¿Cómo podemos ayudarte?

VER