Lo que vas a aprender en este TP
- Enviar perfiles continuos
- Leer un flame graph
- Vincular spans y perfiles
Introducción #
Lo que vas a aprender en esta sección
- Enviar perfiles continuos
- Leer un flame graph
- Vincular spans y perfiles
Contexto. Un servicio de cálculo de descuentos es lento y consume mucha CPU, pero sus trazas solo muestran un span largo. Añades la cuarta señal para encontrar la línea responsable.
Requisitos previos: Docker y Python 3.10 o superior; la pila grafana/otel-lgtm (Collector, Tempo, Loki, Prometheus, Pyroscope y Grafana en un solo contenedor) · Duración estimada: 45 min
Puesta en práctica #
Pasos guiados, con su corrección.
1. Arrancar la pila de observabilidad
¿Por qué? Una sola imagen proporciona un Collector OTLP y todos los backends: nos centramos en la señal.
Lanzagrafana/otel-lgtm, crea un entorno Python y apunta los exportadores al puerto OTLP/HTTP 4318.2. Un servicio lento
¿Por qué? El código contiene un defecto clásico: una expresión regular recompilada y una concatenación costosa en cada llamada.
Instala el SDK de Pyroscope y su integración con OpenTelemetry y escriberemises.py: trazas hacia Tempo, perfiles hacia Pyroscope con el mismo nombre de servicio y elPyroscopeSpanProcessor.3. Leer el flame graph
¿Por qué? El flame graph muestra dónde se consume realmente la CPU, sin añadir ni un span.
En Explore > Pyroscope (o Drilldown > Profiles), selecciona la aplicaciónremisesy el tipo CPU. Identifica las mesetas más anchas y la parte decode_valideyre.compile.4. Del span al perfil
¿Por qué? El span processor etiqueta las muestras con el span_id: se obtiene el perfil de una petición concreta.
En Tempo, abre una trazacalculer remiselarga y usa Profiles for this span. Si el enlace no aparece, configura Trace to profiles en la fuente de datos de Tempo (fuente Pyroscope, tipo CPU).5. Corregir y comparar
¿Por qué? El perfil demuestra el efecto de una optimización en lugar de suponerlo.
Compila la expresión una sola vez a nivel de módulo y sustituye la concatenación por';'.join(). Vuelve a lanzarlo y compara los dos periodos con la vista Diff de Pyroscope y la duración de los spans en Tempo.6. Situar los perfiles de OpenTelemetry
¿Por qué? El SDK de Pyroscope es una solución probada; la señal OTLP Profiles busca unificar la recogida, pero aún no es estable.
Consulta la página de estado de la señal profiles en opentelemetry.io y la documentación del perfilador eBPF de OpenTelemetry. Redacta en tres líneas qué haría falta para sustituir el SDK por el perfilador eBPF y un Collector, y detén la pila.
Nivel de dificultad : ●●●○○ (3/5)
Mi seguimiento
Inicia sesión para seguir tu progreso y tomar notas. Iniciar sesión
Artículos recomendados
Les profils, le quatrième signal d'OpenTelemetry : profilage continu et corrélation avec les traces
Comprendre le nouveau signal profile d'OpenTelemetry : profilage continu, flame graphs, modèle de...
Grafana Alloy: Perfilado Continuo con Pyroscope
Descubra cómo configurar el perfilado continuo (Continuous Profiling) en sus entornos utilizando ...