Logs, Trazas y Métricas: ¿Qué son y en qué se diferencian?

En el ámbito de la ciberseguridad y las operaciones, contar con visibilidad total sobre lo que ocurre en los sistemas de la infraestructura es esencial para prevenir ataques y garantizar la estabilidad del servicio.

Elementos como los logs (logging), las trazas (tracing) y las métricas (metrics) ayudan a monitorizar el rendimiento y juegan un rol crítico en la detección temprana de anomalías y amenazas de seguridad.

Estos mecanismos permiten identificar comportamientos inusuales, rastrear incidentes en tiempo real y analizar eventos históricos para tomar decisiones informadas.

A continuación, se explica qué es cada una de estas técnicas y cómo se aplican en escenarios reales, tomando como base la imagen adjunta.

1. Logs: Captura de eventos relevantes

Los logs enfocan en la captura de eventos específicos generados por el sistema, como errores, advertencias y operaciones importantes.

Estos registros detallados permiten rastrear lo que ha sucedido en el pasado, facilitando la depuración y el análisis retrospectivo.

Un ejemplo común es cuando un servidor web, como Apache, genera registros para cada solicitud que procesa, almacenando información como la dirección IP del cliente, el tiempo de la solicitud, el código de respuesta HTTP, entre otros.

Esta información se puede centralizar en herramientas como Elasticsearch para análisis y visualización en tiempo real con Kibana.

En la imagen, podemos ver que herramientas como Logstash ayudan a recolectar, procesar y luego enviar estos logs hacia Elasticsearch, mientras Kibana permite analizarlos visualmente.

2. Trazas: Seguimiento de solicitudes distribuidas

Las trazas se encargan de rastrear el recorrido completo de una solicitud mientras pasa a través de múltiples servicios en una arquitectura distribuida.

Este enfoque permite analizar detalladamente cómo interactúan los diferentes componentes del sistema o de la infraestructura en tiempo real.

Gracias a las trazas, es posible identificar rápidamente problemas como cuellos de botella o demoras en servicios específicos.

Cada servicio por el que pasa una solicitud genera su propia traza, lo que permite reconstruir el camino completo que siguió la solicitud desde su inicio hasta su finalización.

Por ejemplo, en un sistema de microservicios, una sola solicitud de un usuario puede involucrar varios servicios para completarse, como el servicio de autenticación, el servicio de pagos y el servicio de notificaciones.

Si la solicitud se demora, las trazas permiten localizar con precisión qué servicio está causando el retraso y cuánto tiempo ha tardado en procesar su parte de la solicitud.

En la imagen, se destaca el uso de OpenTelemetry para recopilar las trazas de los diferentes servicios, que luego se pueden visualizar mediante herramientas como Jaeger o Honeycomb para obtener una visión clara del recorrido de cada solicitud.

3. Métricas: Datos agregados sobre el comportamiento

Las métricas son valores numéricos que describen el comportamiento del sistema, generalmente a nivel de rendimiento o capacidad.

Estos datos suelen ser agregados a lo largo del tiempo y ayudan a identificar tendencias o anomalías.

Las métricas pueden ser tan simples como el uso de CPU o la cantidad de solicitudes por segundo.

En un sistema real, servicios como Prometheus recolectan métricas de aplicaciones y herramientas como Grafana permiten visualizar esas métricas en forma de gráficos.

La imagen muestra cómo Prometheus recolecta datos y se combina con Grafana para monitorizar y visualizar métricas importantes.

Interacción entre los tres pilares

En la intersección de los logs, trazas y métricas se encuentra la capacidad de observar no solo qué sucede en un sistema, sino también por qué sucede. Los tres componentes se complementan:

  • Métricas: Proporcionan una vista general y agregada del rendimiento.

  • Trazas: Aportan la ruta detallada de una solicitud a lo largo de múltiples servicios.

  • Logs: Capturan los eventos individuales que ocurren en esos servicios.

Caso práctico real: Logs, Trazas y Métricas

1. Métricas:

Imagina que tu plataforma de comercio electrónico monitoriza métricas clave del servicio de pagos. Usan Prometheus para recolectar métricas como:

  • Número de transacciones por minuto.

  • Latencia promedio en el procesamiento de pagos.

  • Uso de CPU en el servicio de pagos.

Estas métricas se visualizan en Grafana, donde el equipo observa que la latencia en el servicio de pagos ha aumentado significativamente.

Gracias a las métricas, pueden identificar rápidamente un patrón de aumento en la latencia cuando se realizan más de 100 transacciones por minuto.

2. Trazas:

Para profundizar en el problema de la latencia del servicio de pagos, el equipo utiliza OpenTelemetry para recolectar trazas.

Pueden ver cómo una solicitud de pago viaja a través de los diferentes microservicios de la plataforma, desde el servicio de carrito hasta el servicio de notificaciones, pasando por el servicio de pagos.

Al revisar las trazas en Jaeger, descubren que la mayoría del tiempo en la solicitud de pago se gasta en la verificación de tarjetas de crédito, específicamente en la comunicación con un proveedor de pagos externo.

Este paso está tomando 3 segundos adicionales en cada solicitud.

3. Logs:

Finalmente, para entender por qué la verificación de tarjetas de crédito tarda tanto, revisan los logs del servicio de pagos, almacenados en Elasticsearch y visualizados a través de Kibana.

Los registros muestran múltiples errores de conexión con el proveedor de pagos externo durante los picos de tráfico.

El log indica que, durante esos picos, el proveedor externo está rechazando temporalmente las conexiones, lo que genera múltiples reintentos en el sistema, aumentando la latencia.

Conclusión del escenario real:

  • Métricas (Prometheus + Grafana) alertaron sobre la alta latencia.

  • Trazas (OpenTelemetry + Jaeger) mostraron que el retraso estaba en la verificación de tarjetas.

  • Logs (Elasticsearch + Kibana) revelaron que el problema era causado por fallos de conexión con el proveedor de pagos.