DEV Community

Cover image for Métricas, Logs y Trazas: los 3 pilares de la Observabilidad explicados sin jerga
Jeison Arenales
Jeison Arenales

Posted on

Métricas, Logs y Trazas: los 3 pilares de la Observabilidad explicados sin jerga

Este post es la continuación de nuestra serie dedicada a entender qué es la Observabilidad en ingeniería de sistemas. Por si no lo recuerdas, en el episodio anterior cubrimos el concepto de Observabilidad y lo explicamos de manera sencilla usando una analogía de un restaurante.

El día de hoy aprenderemos cuáles son los 3 pilares o señales de la observabilidad y cómo estas nos permiten comprender el estado o la condición interna de un sistema complejo.

¿Qué es una Señal en Ingeniería de Sistemas? Las señales son salidas del sistema que describen la actividad subyacente del sistema operativo y de las aplicaciones que se ejecutan en una plataforma. Opentelemetry

La primera señal que vamos a aprender son las Métricas (Metrics). Estas pueden resultar bastante familiares, ya que nos indican un valor (unidad de medida) en un tiempo de ejecución. Por ejemplo, en el tablero de un vehículo podemos ver varias métricas que nos dan información referente al estado del vehículo, como lo son:

  • Velocidad actual medida en Km/h
  • Cantidad de combustible disponible, medida en porcentaje (0% - 100%)
  • Temperatura actual del motor, medida generalmente entre Frío y Caliente
  • Revoluciones por minuto o RPM
  • Promedio de kilómetros que se pueden recorrer con nuestro depósito de combustible actual
  • Total de kilómetros recorridos por nuestro vehículo

Tablero de un vehículo mostrando métricas

Todas estas son métricas que nuestro vehículo reporta, y el tablero del vehículo puede mostrarlas para tener un entendimiento del estado actual. Esto es exactamente lo mismo en la ingeniería de sistemas: las métricas nos ayudan a entender:

  • Cantidad de requests por segundo en un servidor web
  • Porcentaje de uso de CPU en nuestro servidor
  • Porcentaje de memoria usada en nuestro servidor
  • Cantidad de errores registrados en nuestro servidor web
  • Uptime: cantidad de tiempo durante el cual nuestro servidor ha estado corriendo sin interrupciones

Con esto entendemos de manera general qué son las métricas y cómo funcionan en nuestros sistemas informáticos.

La segunda señal que vamos a entender son los registros (Logs). Para entender esta señal, imaginemos por un momento que nuestros servidores son amantes de escribir en diarios, diarios en los cuales registran todo tipo de eventos y el momento exacto (timestamp) en que ocurrieron, por ejemplo:

- 2025-05-16 10:42 Inicio sesión Samuel
- 2025-05-16 11:00 Samuel creó su primer archivo
- 2025-05-16 14:00 Samuel ejecutó el servicio web de nginx
- 2025-05-16 14:02 Nginx atendió una petición en nuestro servicio web
Enter fullscreen mode Exit fullscreen mode

Esos diarios son guardados en archivos con rutas específicas en nuestros servidores para poder entender el comportamiento de nuestras aplicaciones y/o servidores.

Computador escribiendo logs

En resumen: un registro es una línea de texto con fecha y hora que nuestras aplicaciones y/o servidores escriben para informar de los eventos sucedidos.

Por último, pero no menos importante, vamos a hablar de las trazas (Traces), que se componen de 2 elementos: la traza y los tramos (Spans).

Las trazas nos ofrecen una visión general de lo que ocurre cuando se envía una solicitud a una aplicación. Opentelemtry

Un tramo representa una unidad de trabajo u operación. Opentelemtry

Para entender mejor esta señal usaremos una analogía de algo que nos gusta hacer a todos: comprar en línea. Cuando hacemos una compra en línea, por lo general seguimos una serie de pasos:

1. Navegamos en nuestra página de compras online favorita
2. Iniciamos sesión con nuestra cuenta
3. Buscamos el producto que queremos
4. Comparamos con diferentes proveedores
5. Agregamos el producto a nuestro carrito de compras
6. Completamos todos los datos para el envío
7. Realizamos el pago
Enter fullscreen mode Exit fullscreen mode

En esta analogía, nuestro objetivo, "Comprar un producto online", es nuestra traza, y cada uno de los pasos ejecutados son nuestros tramos. Entonces podemos entender que una traza es el período de tiempo que nos toma ejecutar una tarea específica, y los tramos son todos los pasos que debemos completar dentro de esa tarea.

Ahora bien, hay algo importante que vale la pena aclarar: un tramo puede a su vez dividirse en tramos más pequeños. Es decir, un paso que a simple vista parece una sola acción, en realidad puede esconder varias operaciones internas, cada una con su propio tiempo de ejecución.

Tomemos el paso 2 de nuestro ejemplo, "iniciar sesión". Aunque para nosotros como usuarios es un solo clic, por dentro el sistema en realidad ejecuta varias operaciones más pequeñas para completar ese paso:

Tramos anidados

Aquí, "Iniciar Sesión" sigue siendo un tramo dentro de nuestra traza general de "Comprar un producto online", pero al mismo tiempo funciona como el contenedor de otros tramos más pequeños (validar usuario, comprobar contraseña, cargar datos, mostrar perfil). A esto se le llama anidación de tramos, y es lo que nos permite bajar de nivel: no solo saber que "iniciar sesión" tomó 10 ms, sino exactamente en qué parte de ese proceso se fueron esos 10 ms.

Esta información nos permite entender realmente el funcionamiento de nuestras aplicaciones y nos ayuda a incorporar mejoras y ajustes en donde fuese necesario.

En ingeniería de sistemas, las trazas y los tramos nos permiten entender cuánto tiempo toma nuestra aplicación en cada uno de los sub-procesos y así descubrir cuellos de botella o fallos específicos.

Ahora que hemos entendido de manera general cómo funcionan los 3 pilares de la observabilidad, podemos responder muchas preguntas sobre el estado real de nuestras aplicaciones. Por ejemplo, digamos que recibimos una alerta diciendo que nuestro sitio web está cargando muy lento para los usuarios. Con nuestro sistema de observabilidad pudiéramos:

  • Ver cuál es el porcentaje de carga en CPU y memoria de nuestro servidor
  • Qué información está reportando nuestro servicio web
  • Cuánto tiempo está tomando la aplicación en responder una petición

Esto nos da una imagen mucho más profunda y detallada de toda la aplicación, y nos permite entender rápidamente dónde está el fallo.

En el próximo capítulo vamos a monitorear las métricas de un servidor real usando Grafana y Prometheus.

Coméntame si conocías todas estas señales y si puedes describir otras analogías para explicarlas. Cuéntamela en los comentarios 👇

Sígueme aquí en dev.to para no perderte los próximos artículos de la serie; voy publicando uno a la vez, sin relleno.

Happy Learning 🚀

Top comments (0)