Activación de Python Profiler
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ón | Versiones compatibles de Python |
---|
Perfiles de tiempo real | Python 2.7+ |
Perfiles de tiempo de CPU | Python 2.7+ en plataformas POSIX |
Perfiles de excepción | Python 3.7+ en plataformas POSIX |
Perfiles de bloqueo | Python 2.7+ |
Perfiles de memoria | Python 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
:
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:
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
Más enlaces, artículos y documentación útiles: