¿Quién configura qué?
Para evitar confusiones, aquí hay una división rápida de responsabilidades:
Lado del cliente
En tu infraestructura, la configuración principal para la observabilidad se encuentra en el archivocomponents/infra/grafana/otelcol-config.yaml
.
En este archivo, defines el comportamiento del recolector:
- Procesadores: agrupamiento, límites de memoria, filtrado, ofuscación, muestreo, etc.
- Exportadores: por ejemplo, enrutamiento dual a Prometheus
- Secretos de autenticación de clave API
Después de editar este archivo, debes reiniciar el stack con
make down && make up
para que los cambios surtan efecto.Lado de Lerian
En la infraestructura administrada de Lerian, el stack de observabilidad está configurado y operado centralmente. Esto incluye:- Recolector Central
- Prometheus
- Loki
- Tempo
- Grafana
Estos componentes están preconfigurados y mantenidos por Lerian. No los editas directamente.
Cómo fluyen los datos
Los datos de telemetría se originan en tu aplicación y fluyen a través de un Recolector del Cliente, impulsado por OpenTelemetry. Ejecutándose en tu entorno, este recolector enriquece los datos y los reenvía de manera segura a un Recolector Central administrado por Lerian. Desde allí, se enruta a tres backends especializados:
- Prometheus para métricas
- Loki para logs
- Tempo para trazas
Componentes del stack
Juntos, estos componentes forman un pipeline completo de observabilidad: flexible de tu lado, consistente y seguro del lado de Lerian, y totalmente basado en estándares de OpenTelemetry.
Recolector del Cliente
El Recolector del Cliente es un Recolector OpenTelemetry ligero que se ejecuta cerca de tu aplicación, ya sea como un DaemonSet o un Deployment. Enriquece la telemetría con metadatos de Kubernetes y tu identificador de tenant (client_id
), luego enruta los datos al Recolector Central.
Es importante porque reduce la carga en el pipeline central, habilita el filtrado a nivel de fuente y adjunta metadatos cruciales como k8s.pod.name
. La instalación se gestiona mediante Helm y Terraform, facilitando la integración en tu infraestructura.
Recolector Central
El Recolector Central es un despliegue centralizado del Recolector OpenTelemetry que recibe telemetría de todos los clientes. Realiza procesamiento global, aplica multi-tenancy y exporta señales a los backends de almacenamiento apropiados.El Recolector Central está completamente administrado por Lerian. No lo configuras ni modificas directamente.
Prometheus
Prometheus está optimizado para almacenar y consultar datos de series temporales numéricas. El Recolector Central envía métricas usandoremote_write
.
Loki
Loki almacena logs utilizando indexación basada en etiquetas, haciéndolo rápido y rentable. Los logs se envían desde el Recolector Central al servicioloki-write
.
Tempo
Tempo almacena trazas distribuidas completas y se integra estrechamente con Prometheus y Loki a través de Grafana.Grafana
Grafana es tu panel único de control. Se conecta a Prometheus, Loki y Tempo, permitiéndote correlacionar métricas, logs y trazas en un solo lugar.Puedes pivotar entre métricas, logs y trazas directamente dentro de Grafana para acelerar la resolución de problemas.
Recolector Integrado
Puedes habilitar el Recolector del Cliente como una dependencia de tu aplicación Midaz con un solo flag de configuración:
Editando el Recolector del Cliente
Cuando necesites personalizar el comportamiento (ofuscación, filtrado, muestreo, etc.), deberás:
-
Editar
components/infra/grafana/otelcol-config.yaml
. -
Agregar o ajustar los bloques
processors
oexporters
. -
Reiniciar el stack:
Procesadores del Recolector del Cliente
En el Recolector OpenTelemetry, los procesadores son el núcleo de la manipulación de datos. Se ejecutan secuencialmente para enriquecer, filtrar, muestrear y transformar datos de telemetría antes de exportarlos a los backends. A continuación se muestra la lista de procesadores configurados en el Recolector del Cliente de Lerian, su propósito y cómo configurarlos.
Dónde configurar: agrega cada bloque bajo
processors:
en otelcol-config.yaml
.- Qué es: Agrupa múltiples señales de telemetría (métricas, logs o trazas) en lotes antes de enviarlas a la siguiente etapa.
- Por qué importa: Mejora la eficiencia de compresión, reduce las solicitudes de red y mejora el rendimiento general del pipeline.
- Configuración:
- Qué es: Monitorea el uso de memoria del recolector y descarta datos si se acerca a un umbral definido.
- Por qué importa: Previene que el recolector sea terminado por OOMKilled por Kubernetes.
- Configuración:
- Qué es: Genera métricas directamente de los datos de traza.
- Por qué importa: Produce métricas “RED” (Rate, Errors, Duration) automáticamente.
- Configuración:
- Qué es: Elimina atributos de span sensibles usando regex.
- Por qué importa: Mantiene identificadores, pero elimina encabezados, cuerpos u otros datos sensibles de solicitud.
- Configuración:
- Qué es: Una estrategia de muestreo aplicada después de que se reciben los spans.
- Por qué importa: Mantiene solo trazas de alto valor (errores, clientes específicos) y reduce los costos de almacenamiento.
- Configuración:
- Qué es: Filtra métricas a nivel de nodo.
- Por qué importa: Reduce el ruido y se enfoca en la telemetría a nivel de aplicación.
- Configuración:
- Qué es: Mantiene solo métricas de
midaz
ymidaz-plugins
. - Por qué importa: Elimina cargas de trabajo irrelevantes de Kubernetes.
- Configuración:
- Qué es: Agrega metadatos de Kubernetes a la telemetría.
- Por qué importa: Habilita un contexto más rico en las consultas de Grafana.
- Configuración:
- Qué es: Inserta o actualiza
client.id
en la telemetría. - Por qué importa: Crítico para multi-tenancy.
- Configuración:
- Qué es: Elimina el contenido del cuerpo del log.
- Por qué importa: Previene que datos sensibles o PII persistan en los logs.
- Configuración:
- Qué es: Ofusca atributos seleccionados.
- Por qué importa: Protege valores sensibles (como
legalDocument
oaccountAlias
) antes de que los datos salgan de tu clúster. - Configuración (
otelcol-config.yaml
):
- Personalizando los campos:
- Por defecto:
legalDocument
,accountAlias
- Agrega o elimina campos según sea necesario
- Reinicio requerido:
make down && make up
- Por defecto:
En resumen
Procesador | Tipo de datos | Función | Beneficio |
---|---|---|---|
batch | Métricas, Logs, Trazas | Agrupa telemetría antes de exportar | Mejora compresión y uso de red |
memory_limiter | Métricas, Logs, Trazas | Descarta datos cuando el límite de memoria está cerca | Previene OOMKilled |
spanmetrics | Trazas → Métricas | Crea métricas RED | Insights inmediatos de rendimiento |
transform/remove_sensitive_attributes | Trazas | Elimina atributos de span sensibles | Mantiene IDs, elimina secretos |
tail_sampling | Trazas | Muestreo inteligente de trazas | Menor almacenamiento, enfoque en errores/objetivos |
filter/drop_node_metrics | Métricas | Excluye datos ruidosos a nivel de nodo | Dataset más limpio |
filter/include_midaz_namespaces | Métricas | Mantiene solo namespaces de Midaz | Elimina métricas irrelevantes |
k8sattributes | Métricas, Logs, Trazas | Agrega metadatos de K8s | Contexto más rico en Grafana |
resource/add_client_id | Todas las señales | Etiqueta telemetría con ID de cliente | Habilita multi-tenancy |
transform/remove_log_body | Logs | Limpia el cuerpo del log | Evita almacenar PII |
transform/obfuscate_attributes | Todas las señales | Enmascara campos elegidos | Asegura que datos sensibles nunca salgan |
Protegiendo datos sensibles
Midaz trata al Recolector del Cliente como un firewall de telemetría. Todas las reglas de filtrado, muestreo y transformación están definidas en tu archivo de configuración (
components/infra/grafana/otelcol-config.yaml
).

Responsabilidades del cliente vs Lerian en el pipeline de observabilidad
Valores sensibles como cuerpos de solicitud, documentos legales o alias de cuenta nunca llegan al Recolector Central de Lerian.
- Recolector del Cliente (tú configuras): Se ejecuta en tu clúster. Aplica procesadores como
transform/remove_sensitive_attributes
,transform/remove_log_body
ytransform/obfuscate_attributes
. - Recolector Central (administrado por Lerian): Recibe solo los flujos de telemetría filtrados y sanitizados y los enruta a Prometheus, Loki y Tempo.
Tú decides qué es sensible en
otelcol-config.yaml
. Lerian solo ve telemetría sanitizada.Flujo de telemetría
Esto es lo que sucede cuando la telemetría está habilitada:
- La aplicación inicia y detecta la configuración de OpenTelemetry.
- La telemetría se exporta al recolector del cliente local.
- El Recolector del Cliente enriquece los datos con metadatos de Kubernetes y tu
client_id
. - Los procesadores enriquecen, filtran y transforman los datos.
- Los datos se reenvían al recolector central.
- El Recolector Central procesa y enruta los datos:
- Métricas → Prometheus
- Logs → Loki
- Trazas → Tempo
- Grafana te permite consultarlo todo, correlacionando entre señales.
Autenticando solicitudes del recolector
Para garantizar la seguridad e integridad de los datos, toda la telemetría enviada desde tu clúster a la plataforma de Lerian debe autenticarse utilizando una clave API segura.
Cómo configurarlo
- Crea el Secret de Kubernetes para almacenar tu token API:
- Referencia el secret en tu archivo de valores de Helm para inyectarlo como una variable de entorno:
- La telemetría se envía de forma segura al endpoint de telemetría de Lerian sobre HTTPS, con la clave API incluida en los encabezados.
Esta clave debe permanecer privada. Si se ve comprometida, contacta al soporte de Lerian inmediatamente para rotar el token.
Cifrado de datos en tránsito
Todos los datos de telemetría, incluidas métricas, logs y trazas, se transmiten desde tu entorno a la plataforma de observabilidad de Lerian usando HTTPS con cifrado TLS. Esto significa:
- La comunicación entre el Recolector del Cliente y el Recolector Central está completamente cifrada.
- Los datos en tránsito están protegidos contra interceptación, manipulación o acceso no autorizado.
- Incluso si se inspecciona el tráfico de red, el contenido permanece ilegible sin las claves criptográficas apropiadas.
Aplicamos transporte cifrado por defecto. No se aceptan datos por canales inseguros.
Enrutamiento dual
¿Necesitas mantener una copia de tus métricas internamente? Puedes configurar el Recolector del Cliente para enviar telemetría a múltiples destinos.
Ejemplo
Esta configuración es ideal para el monitoreo local sin interrumpir el flujo estándar al stack de observabilidad de Lerian.
Glosario
DaemonSet
DaemonSet
Un tipo de carga de trabajo de Kubernetes que garantiza que un Pod se ejecute en cada nodo (o nodos seleccionados) en un clúster. Se usa para desplegar el Recolector del Cliente, para que pueda recopilar datos a nivel de nodo como métricas de Kubelet.
Deployment
Deployment
Una carga de trabajo de Kubernetes que gestiona réplicas de un Pod. Se usa para el Recolector Central y otros servicios de la plataforma.
Exporter/Exportador
Exporter/Exportador
Envía datos de telemetría desde el recolector a uno o más backends (p. ej., Prometheus para métricas, Loki para logs, Tempo para trazas).
Grafana
Grafana
Una capa de visualización de código abierto. Grafana se conecta a Prometheus, Loki y Tempo para proporcionar una interfaz unificada para consultar y explorar métricas, logs y trazas.
Loki
Loki
Nuestro backend para logs. Loki indexa etiquetas de metadatos en lugar del contenido completo del log, haciéndolo rápido y rentable para casos de uso de alto volumen.
Multi-tenancy
Multi-tenancy
Un enfoque arquitectónico donde una sola plataforma sirve a múltiples clientes (tenants). En Midaz, los datos de telemetría se etiquetan con un
client_id
para garantizar aislamiento y trazabilidad entre tenants.Observability/Observabilidad
Observability/Observabilidad
La capacidad de comprender el estado interno de un sistema mediante el análisis de sus salidas externas. En la práctica, significa recopilar y analizar métricas, logs y trazas para monitorear el rendimiento y solucionar problemas.
OpenTelemetry (OTel)
OpenTelemetry (OTel)
Un framework de código abierto con herramientas, APIs y SDKs para instrumentar, generar, recopilar y exportar datos de telemetría: métricas, logs y trazas.
OTel Collector/Recolector OTel
OTel Collector/Recolector OTel
Un servicio independiente que recibe, procesa y exporta datos de telemetría. Actúa como un puente entre aplicaciones instrumentadas y backends como Prometheus o Grafana.
OTLP (OpenTelemetry Protocol)
OTLP (OpenTelemetry Protocol)
El protocolo predeterminado utilizado por OpenTelemetry para transportar datos de telemetría entre aplicaciones, recolectores y backends mediante gRPC o HTTP.
Pipeline
Pipeline
Define cómo fluye la telemetría a través del Recolector. Un pipeline típicamente encadena receivers, processors y exporters para un tipo de señal dado (métricas, logs o trazas).
Processor/Procesador
Processor/Procesador
Maneja la transformación de datos dentro del Recolector, como enriquecer señales con metadatos, filtrar datos no deseados, agrupar mensajes o aplicar políticas de muestreo.
Prometheus
Prometheus
Nuestro backend para almacenar y consultar métricas. Admite poderosas consultas de series temporales (PromQL) y se integra con el Recolector OpenTelemetry mediante escritura remota.
Receiver/Receptor
Receiver/Receptor
El componente del Recolector que ingiere datos de telemetría entrantes. Admite formatos como OTLP, Jaeger, Prometheus y otros.
SDK (Software Development Kit)
SDK (Software Development Kit)
Un conjunto de bibliotecas que incorporas en el código de tu aplicación para producir señales de telemetría como spans, contadores o logs.
Tempo
Tempo
Nuestro backend para trazas. Almacena trazas distribuidas completas y se integra estrechamente con Prometheus y Loki para una correlación fluida en Grafana.
Terraform
Terraform
Una herramienta de Infraestructura como Código (IaC) que usamos para aprovisionar y gestionar infraestructura en la nube, incluida la instalación de componentes de observabilidad mediante Helm.