El generador de perfiles se incluye en las bibliotecas de rastreo de Datadog. Si ya estás utilizando APM para recopilar trazas (traces) para tu aplicación, puedes omitir la instalación de biblioteca e ir directamente a habilitar el generador de perfiles.

Requisitos

Para obtener un resumen de las versiones mínimas y recomendadas del tiempo de ejecución y del rastreador en todos los lenguajes, consulta Versiones de lenguaje y rastreadores compatibles.

Datadog Profiler requiere Python 2.7+.

Las siguientes funciones de generación de perfiles están disponibles según tu versión de Python. Para más detalles, consulta Tipos de perfiles:

FunciónVersiones compatibles de Python
Perfiles de tiempo realPython 2.7+
Perfiles de tiempo de CPUPython 2.7+ en plataformas POSIX
Perfiles de excepciónPython 3.7+ en plataformas POSIX
Perfiles de bloqueoPython 2.7+
Perfiles de memoriaPython 3.5+

La instalación requiere pip versión 18 o posterior.

Las siguientes funciones de generación de perfiles están disponibles en las siguientes versiones mínimas de la biblioteca dd-trace-py:

FunciónVersión requerida de dd-trace-py
Hotspots de código0.44.0+
Perfiles de endpoint0.54.0+

Instalación

Asegúrate de que Datadog Agent v6+ está instalado y en funcionamiento. Datadog recomienda utilizar Datadog Agent v7+.

Instala ddtrace, que proporciona funciones de rastreo y generación de perfiles:

pip install ddtrace

Nota: La generación de perfiles requiere la versión 0.40+ de la biblioteca ddtrace.

Si utilizas una plataforma en la que no está disponible la distribución binaria de ddtrace, instala primero una versión de entorno de desarrollo.

Por ejemplo, en Alpine Linux, esto se puede hacer con:

apk install gcc musl-dev linux-headers

Uso

Para general un perfil automáticamente de tu código, establece la variable de entorno DD_PROFILING_ENABLED en true cuando utilices ddtrace-run:

DD_PROFILING_ENABLED=true \
DD_ENV=prod \
DD_SERVICE=my-web-app \
DD_VERSION=1.0.3 \
ddtrace-run python app.py

Consulta Configuración para un uso más avanzado.

Opcionalmente, configura la integración de código fuente para conectar tus datos de perfiles con tus repositorios Git.

Tras un par de minutos, visualizarás tus perfiles en la página Datadog APM > Generador de perfiles.

Si deseas controlar manualmente el ciclo de vida del generador de perfiles, utiliza el objeto ddtrace.profiling.Profiler:

from ddtrace.profiling import Profiler

prof = Profiler(
    env="prod",  # si no se especifica, vuelve la variable de entorno DD_ENV
    service="my-web-app",  # si no se especifica, vuelve la variable de entorno DD_SERVICE
    version="1.0.3",   # si no se especifica, vuelve la variable de entorno DD_VERSION
)
prof.start()  # Debe estar lo más antes posible, por ejemplo, antes de otras importaciones, para asegurar que todo se incluya en el perfil

Advertencias

Cuando tu proceso se bifurca con os.fork, el generador de perfiles debe iniciarse en el proceso secundario. En Python 3.7+, esto se hace automáticamente. En Python < 3.7, es necesario iniciar manualmente un nuevo generador de perfiles en tu proceso secundario:

# Para usuarios de ddtrace-run, llama a esto en tu proceso secundario
ddtrace.profiling.auto.start_profiler()  # Debe estar lo más antes posible, por ejemplo, antes de otras importaciones, para asegurar que todo se incluya en el perfil

# Alternativamente, para la instrumentación manual,
# crea un nuevo generador de perfiles en tu proceso secundario:
from ddtrace.profiling import Profiler

prof = Profiler(...)
prof.start()  # Debe estar lo más antes posible, por ejemplo, antes de otras importaciones, para asegurar que todo se incluya en el perfil

Configuración

Puedes configurar el generador de perfiles con las variables de entorno.

Procedencia del código

El generador de perfiles de Python admite informes de procedencia del código, lo que permite comprobar que la biblioteca está ejecutando el código. Aunque está desactivado por defecto, se puede activar mediante la configuración de DD_PROFILING_ENABLE_CODE_PROVENANCE=1.

¿No sabes qué hacer a continuación?

La guía Empezando con el generador de perfiles toma un ejemplo de servicio con un problema de rendimiento y te muestra cómo utilizar Continuous Profiler para comprender y solucionar el problema.

Referencias adicionales