¿Qué hace distributed-tracing?
Implementa trazado distribuido con Jaeger y Tempo para rastrear solicitudes a través de microservicios e identificar cuellos de botella de rendimiento. Útil al depurar microservicios, analizar flujos de solicitudes o implementar observabilidad en sistemas distribuidos.
Descripción general
El trazado distribuido permite rastrear el camino que sigue una solicitud a medida que atraviesa múltiples servicios en una arquitectura de microservicios. Con herramientas como Jaeger y Grafana Tempo, puedes visualizar el flujo completo de una solicitud, medir la latencia de cada paso y detectar problemas de rendimiento.
Plataformas compatibles
- Kubernetes: Despliega agentes de Jaeger o Tempo como sidecars o daemonsets.
- Docker Compose: Orquesta servicios con instrumentación de trazado.
- Entornos de nube: Integración con AWS, GCP o Azure para recolección de trazas.
Cómo funciona
- Instrumentación: Las aplicaciones se instrumentan con bibliotecas de trazado (por ejemplo, OpenTelemetry) para generar spans.
- Propagación de contexto: Los encabezados de trazado se propagan entre servicios mediante metadatos HTTP.
- Recolección y almacenamiento: Los agentes de Jaeger o Tempo recolectan los spans y los almacenan en una base de datos backend.
- Visualización: Los dashboards de Jaeger UI o Grafana permiten buscar y analizar trazas.
Ejemplo de uso
# docker-compose.yml
tracing:
jaeger:
image: jaegertracing/all-in-one:latest
environment:
- COLLECTOR_ZIPKIN_HTTP_PORT=9411
tempo:
image: grafana/tempo:latest
command: ["-config.file=/etc/tempo.yaml"]
# Iniciar servicios
kubectl apply -f tracing-deployment.yaml