Marcio Cunha

Observabilidad Distribuida con OpenTelemetry, Prometheus y Almacenamiento a Largo Plazo Thanos

Aprenda a diseñar un ecosistema completo de observabilidad escalable utilizando OpenTelemetry para telemetría unificada, Prometheus para recolección local y Thanos para almacenamiento histórico a largo plazo.

Marcio Cunha•6 min
También disponible en:EnglishPortuguês
Resumen
  • OpenTelemetry estandariza la generación de métricas, registros y trazas distribuidas en una única capa unificada.
  • Prometheus actúa como el recolector local de alto rendimiento optimizado para escrituras rápidas en memoria y disco.
  • Thanos supera las limitaciones nativas de retención de Prometheus descargando bloques históricos a almacenamiento de objetos en la nube.
  • La capa de consulta global de Thanos permite consultar múltiples instancias de Prometheus simultáneamente sin puntos únicos de fallo.
  • Una cuidadosa planificación de capacidad y estrategias de muestreo evitan costos excesivos de almacenamiento en la nube a gran escala.

El Desafío de la Visibilidad en Sistemas Distribuidos

Cuando una aplicación deja de ser un bloque monolítico en un único servidor y se transforma en decenas de microservicios interconectados, entender qué sucedió ante un fallo se convierte en un rompecabezas complejo. En la práctica, esto significa que un simple clic de un usuario en un botón de compra puede desencadenar llamadas a través de doce servicios diferentes, atravesando redes inestables y colas de mensajes. Sin una estrategia clara de monitorización, identificar qué paso se rompió se convierte en una tarea de prueba y error, desperdiciando valiosas horas de ingeniería.

La observabilidad moderna va mucho más allá de saber si un servidor está encendido o apagado; exige la capacidad de inferir el estado interno de un sistema complejo analizando únicamente sus salidas externas. Para lograr este nivel de claridad, los equipos deben recopilar tres pilares fundamentales: métricas, que muestran números agregados como uso de CPU; registros, que documentan eventos de texto aislados; y trazas distribuidas, que mapean la ruta exacta de una solicitud de punta a punta. El gran problema histórico era que cada herramienta utilizaba un formato propietario diferente, creando silos de información que dificultaban la correlación de datos.

Estandarización Universal con OpenTelemetry

OpenTelemetry surge como un proyecto de código abierto unificado para resolver el caos de herramientas propietarias de telemetría que poblaban el mercado. En la práctica, funciona como un traductor universal y un conjunto de bibliotecas que se instalan en el código de la aplicación para generar datos estandarizados de métricas, registros y trazas. En lugar de depender de un proveedor de nube específico, la aplicación pasa a hablar un idioma estándar que puede enviarse a cualquier sistema de backend compatible sin modificaciones complejas en el código fuente.

La arquitectura de OpenTelemetry divide el trabajo en tres frentes: las API que definen cómo se recopilan los datos, los SDK que procesan y exportan esos datos de forma asíncrona, y el Colector de OpenTelemetry. El Colector actúa como un intermediario inteligente que recibe los datos de la aplicación, filtra información sensible, aplica reglas de muestreo para reducir el volumen de tráfico y despacha todo hacia los almacenamientos finales. Esto desacopla por completo la aplicación del sistema de monitorización, permitiendo cambiar de herramienta de backend sin recompilar ni alterar el código de producción.

Recolección Eficiente de Métricas con Prometheus

Una vez que los datos están estandarizados, se requiere un motor robusto para recopilar y almacenar estas métricas en tiempo real. Prometheus se ha consolidado como el estándar de la industria para esta tarea, operando mediante un modelo de recolección activa basado en sondeos periódicos conocidos como scraping. En la práctica, Prometheus contacta a las aplicaciones a intervalos regulares (por ejemplo, cada quince segundos), consulta sus puntos de enlace de telemetría y extrae todas las métricas disponibles en ese momento hacia su base de datos local.

La gran ventaja de Prometheus es su base de datos de series temporales optimizada, diseñada para escribir grandes volúmenes de datos numéricos con extrema rapidez en discos locales. Sin embargo, este enfoque de rendimiento local tiene un talón de Aquiles: el almacenamiento está limitado por el tamaño del disco de la máquina donde se ejecuta, y Prometheus nativo no fue concebido para retener datos durante años. Además, si el hardware físico falla, se corre el riesgo de perder el historial reciente de monitorización a menos que exista una estrategia robusta de replicación y persistencia externa.

Expandiendo Horizontes con el Almacenamiento a Largo Plazo de Thanos

Para superar las barreras de retención y escalabilidad de Prometheus sin perder sus ventajas de recolección en tiempo real, la comunidad desarrolló Thanos. Thanos es un conjunto de componentes que se integran con los ecosistemas Prometheus existentes para transformarlos en un sistema de monitorización global e ilimitado. En la práctica, funciona como una capa inteligente que toma los datos registrados localmente por Prometheus, los comprime de forma segura y los envía a un almacenamiento de objetos en la nube como Amazon S3 o Google Cloud Storage.

La magia de Thanos ocurre mediante componentes especializados, como el Thanos Sidecar que se ejecuta junto a Prometheus para enviar bloques de datos históricos a la nube, y el Thanos Querier, que unifica consultas de múltiples instancias de Prometheus en una interfaz única. Cuando un ingeniero busca una métrica de hace tres meses, el Thanos Querier sabe exactamente dónde buscar, combinando datos en tiempo real de la memoria de Prometheus con datos históricos guardados en la nube. Esto elimina cualquier límite físico de almacenamiento y garantiza que el historial de rendimiento de la empresa permanezca intacto para auditorías y análisis de tendencias.

Implementando la Arquitectura en Producción

Desplegar esta arquitectura en un entorno de producción requiere una planificación cuidadosa de la topología de red y los recursos de infraestructura. El primer paso práctico consiste en instrumentar las aplicaciones con el SDK de OpenTelemetry y configurar el Colector para exportar métricas en un formato nativo que Prometheus pueda interpretar. A continuación, Prometheus se despliega en un clúster de Kubernetes mediante operadores dedicados, configurado para recopilar los datos locales expuestos por el colector. A continuación se muestra un fragmento de configuración de Prometheus apuntando al Thanos Sidecar:

global:
  scrape_interval: 15s
  evaluation_interval: 15s

remote_write:
  - url: http://thanos-receive.monitoring.svc:19291/api/v1/receive

scrape_configs:
  - job_name: 'opentelemetry-collector'
    static_configs:
      - targets: ['otel-collector.monitoring.svc:8889']

Con Prometheus enviando datos o el Thanos Sidecar leyendo el directorio local, el componente Sidecar entra en acción compactando bloques de dos horas en archivos optimizados y enviándolos al depósito de objetos en la nube. Por otro lado, el Thanos Querier se configura para consultar tanto al Sidecar como al Thanos Store Gateway, el componente encargado de leer los datos compactados directamente desde el almacenamiento en la nube sin agotar la memoria RAM. De este modo, el equipo obtiene una visión unificada, resiliente y altamente escalable de toda la infraestructura informática.

Consideraciones Finales y Prácticas Operativas

Implementar observabilidad distribuida con OpenTelemetry, Prometheus y Thanos no es meramente un ejercicio de instalación de herramientas, sino la consolidación de una cultura de ingeniería basada en datos transparentes y confiables. Al estandarizar la telemetría con OpenTelemetry, la organización se libera de ataduras tecnológicas y asegura flexibilidad futura. Paralelamente, la combinación de Prometheus con Thanos resuelve el dilema eterno entre la velocidad de recolección en tiempo real y la necesidad económica de conservar historiales a largo plazo sin gastar una fortuna en discos locales de alto rendimiento.

Como recomendación final para los equipos que inician este camino, comience instrumentando servicios críticos antes de intentar monitorear toda la malla de microservicios de golpe. Supervise el consumo de red del Thanos Sidecar y ajuste las políticas de retención y compactación en el almacenamiento de objetos para evitar sorpresas en la factura de la nube a fin de mes. Con disciplina operativa y una arquitectura sólida, la observabilidad deja de ser una carga técnica para convertirse en el principal aliado en la estabilidad y evolución continua de los sistemas.