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
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
Esos diarios son guardados en archivos con rutas especÃficas en nuestros servidores para poder entender el comportamiento de nuestras aplicaciones y/o servidores.
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
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:
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 🚀













