You are using an outdated browser. For a faster, safer browsing experience, upgrade for free today.

Observabilidad: protege la salud de tus sistemas e infraestructura

Cuando se piensa en todos los diferentes servicios y aplicaciones que se ejecutan en un centro de datos, probablemente se considera el rendimiento de cada uno de ellos. Puede que incluso se supervisen esas estadísticas de rendimiento de forma individual. ¿Pero qué pasaría si pudiéramos ver todo como un solo sistema?

Ahí es donde entra la observabilidad. Con la creciente adopción de microservicios y aplicaciones en contenedores, se hace más difícil entender lo que está sucediendo dentro de toda una arquitectura de software.

Estos sistemas suelen estar muy distribuidos, lo que significa que cuando algo va mal, puede ser muy difícil localizar el problema y depurarlo de manera eficiente. En este blog explicaremos por qué la observabilidad es importante dentro de las aplicaciones e infraestructura, para que se puedan identificar los problemas antes de que tengan la oportunidad de afectar a los usuarios.

¿Qué es la observabilidad?

La observabilidad es la capacidad de inspeccionar y comprender el estado de un sistema o aplicación. En otras palabras, es la capacidad de supervisar y medir cosas como el rendimiento de la aplicación y la utilización de los recursos.

Pero la observabilidad es mucho más que una simple monitorización. Imagina que tienes una aplicación distribuida con microservicios que se ejecutan en contenedores a través de múltiples hosts. La monitorización por sí sola no es suficiente para ayudarte a entender lo que está sucediendo dentro de tu arquitectura de software. Ahí es donde entra la observabilidad.

En producción, un software tiene tres componentes principales:

No hay texto alternativo para esta imagen

Por qué es importante la observabilidad

Si no se puede ver lo que está ocurriendo con la aplicación, no se pueden solucionar los problemas antes de que afecten a los usuarios. Desarrollar y ejecutar software es un proceso iterativo, en el que se prueban nuevas características y se mejora continuamente lo que se ha construido. Pero sin capacidad de observación, la capacidad de iterar rápidamente se verá seriamente limitada.

Digamos que una nueva característica introduce un problema inesperado. Sin observabilidad, no se tendrá ni idea de que esto ha ocurrido y los usuarios serán los primeros en enterarse cuando vean un mensaje de error. Con la observabilidad se puede identificar rápidamente el problema y solucionarlo antes de que tenga la oportunidad de afectar a tus usuarios finales.

La observabilidad también ayuda a identificar más fácilmente los problemas y errores dentro del entorno de la aplicación, como la contención de recursos y los problemas de rendimiento. De este modo, es más fácil solucionar los problemas y resolverlos, para que se pueda volver a lo que realmente importa: la innovación.

Monitorización y observabilidad no son lo mismo

No hay texto alternativo para esta imagen

Mucha gente confunde la monitorización y la observabilidad, pero en realidad son diferentes. La monitorización es el acto de registrar estadísticas sobre tu aplicación para hacer un seguimiento de cosas como el rendimiento y la utilización de recursos.

Mientras que la observabilidad ayuda a visualizar y entender el estado de tu aplicación, la monitorización registra esas estadísticas y proporciona una forma de verlas más tarde.

Es importante tener en cuenta que la monitorización no es lo mismo que analizar, responder o actuar sobre los datos.

Para lograr una mayor observabilidad en software, queremos encontrar formas de visualizar los datos. Puedes hacer esto instalando métricas y software de registro en cada host individual de la aplicación, o se puede utilizar una solución de monitorización centralizada que visualice los datos en toda la arquitectura.

Herramientas de monitorización

Estas son algunas de las herramientas que se pueden utilizar para realizar monitoreos:

Nagios. Es un software de propósito general y de código abierto con versiones gratuitas y licencias pagas. Principalmente, es utilizado para monitorizar sistemas e infraestructuras de red.

Zabbix. Es de propósito general, open source y gratuito. Muy parecido a Nagios.

Prometheus. Es una herramienta muy popular, open source, de nueva generación. Se basa en la recopilación de datos mediante comprobaciones activas.

AWS CloudWatch. Ofrecida por Amazon Web Services, provee monitores a nivel de infraestructura.

Google Operations. Forma parte de Google Cloud Platform y ofrece una monitorización completa basada en API.

Azure Monitor. Es una plataforma de monitorización completa ofrecida por Microsoft y es muy similar a Google Operations.

Cómo lograr una mayor observabilidad en tú software

Si estás construyendo una nueva aplicación, deberías considerar diseñarla teniendo en cuenta la observabilidad. Esto podría incluir la selección de un sistema de registro adecuado. También deberías considerar la posibilidad de supervisar el estado y la disponibilidad de tu aplicación desde el principio. Esto puede ser tan simple como ejecutar algunas pruebas de ping contra sus servidores.

Si ya estás ejecutando una aplicación, todavía hay cosas que puedes hacer para lograr una mayor observabilidad. Por ejemplo, puedes añadir más registros y monitorización a tus sistemas existentes. Esto puede ayudarte a identificar y rastrear los problemas que están afectando a tu aplicación.

3 razones para no llevar un software a producción sin monitorearlo

Técnicamente, el monitoreo no forma parte esencial de un software que se ejecute en producción, pues este puede ejecutarse sin necesidad de que se despliegue una herramienta de monitorización. Sin embargo, llevar un software a producción sin monitorearlo es mala idea porque:

  • Un problema en producción repercute directamente en los clientes y, por ende, en la continuidad del negocio. Esto suele conllevar un coste financiero.
  •  
  • El tiempo de inactividad no programado para arreglar esos problemas deja una mala impresión en los usuarios sobre el servicio.
  •  
  • El tiempo de inactividad y la presión de los clientes crean un caos a nivel organizacional, ya que la clasificación y resolución de estos problemas suelen ser estresantes y costosas para los implicados.

 

Una de las medidas de mitigación para problemas en producción es añadir monitoreo, puesto que esto permite detectar y comunicar el problema al equipo correspondiente.

Terminología de monitoreo y procesos

  • Host: usualmente el dispositivo con una dirección IP.
  • Agente: es el servicio que se ejecuta junto con el software de la aplicación para realizar el monitoreo.
  • Métricas: es la medición en un tiempo determinado que permita conocer el funcionamiento del software. Ej. Espacio en disco, memoria libre, up/down, etc.
  • Umbral: es un valor fijo en un rango de valores posible para una métrica. Ej. El nivel de uso de una CPU puede ser entre 0% y 100%, y podría definirse el umbral en 60%, como indicativo de un alto consumo de la CPU.
  • Monitor: es el lugar donde se observan los datos de las métricas recolectadas en un intervalo de tiempo.
  • Alerta: es producida por un monitor cuando el valor de una métrica cruza el umbral. La alerta generalmente es enviada a los usuarios interesados.
  • Nivel de severidad: las alertas se clasifican en función de la gravedad del problema, suelen ser informativas, de alerta y críticas.
  • Incidente: se denomina a un evento que afecta negativamente un proceso.
  • On call: las alertas críticas son enviadas al equipo que está on-call, estos suelen hacer guardias, ya que deben estar disponibles 24/7 para atender cualquier incidente.

Aprende a medir, visualizar y resolver rápidamente los problemas de software

Cuando se trata de construir y ejecutar software, es importante recordar que no se tiene una segunda oportunidad para causar una primera impresión. Si los usuarios ven un error, es probable que simplemente se vayan a otro sitio web. Si la aplicación tiene problemas inesperados, no es probable que se queden para ver si las cosas mejoran.

Para construir un software realmente bueno, es necesario poder ver lo que está sucediendo dentro del sistema en todo momento. Esto significa medir, supervisar y visualizar las métricas de la aplicación para poder identificar y resolver rápidamente los problemas. Y esto no significa que se tiene que hacer todo esto desde cero. Hay servicios disponibles que pueden ayudar a conseguir una mayor observabilidad dentro de los softwares.

Si te gustaría conocer más sobre Observabilidad escríbenos tus dudas en https://netjernetworks.odoo.com/contactus y nos pondremos en contácto contigo. Escribe en los comentarios ¿qué otras herramientas de monitorización conoces?