Activación del Full-Host Profiler
El Full-Host Profiler es una solución de perfilado basada en eBPF y construida sobre OpenTelemetry que envía datos de perfilado a Datadog utilizando el Datadog Agent. Admite la simbolización para lenguajes compilados y está optimizado para entornos en contenedores como Docker y Kubernetes.
Casos prácticos
El Full-Host Profiler es especialmente valioso para:
- Creación de perfiles de componentes de software abiertos de source (fuente) que no están instrumentados con las bibliotecas de rastreo de Datadog.
- Análisis del rendimiento en procesos y tiempos de ejecución de varios lenguajes.
Requisitos
- Sistemas operativos compatibles
- Linux (5.4+ para amd64, 5.5+ para arm64)
- Arquitectura compatible
- procesadores
amd64 o arm64 - Serverless
full-host no es compatible con plataformas serverless, como AWS Lambda.- Información de depuración
- Los símbolos deben estar disponibles localmente o pueden cargarse en CI con
datadog-ci
Instalación
Configura siempre
DD_SERVICE para cada servicio que desees perfilar e identificar por separado. Esto garantiza una atribución precisa y unos datos de perfilado más procesables. Para obtener más información, consulta
Nomenclatura de servicios.
Full-Host Profiler se distribuye como un ejecutable independiente.
Entornos de contenedores
Para hosts que ejecutan cargas de trabajo en contenedores, Datadog recomienda ejecutar el perfilador dentro de un contenedor:
Entornos sin contenedores
En el caso de hosts que no dispongan de tiempos de ejecución de contenedores, sigue las instrucciones para ejecutar directamente en el host.
Nombres de servicios
Cuando se utiliza la creación de perfiles de host completo, Datadog crea perfiles de todos los procesos del host. El nombre de servicio de cada proceso se obtiene de su variable de entorno DD_SERVICE.
Si se configura DD_SERVICE, el perfilador utiliza el valor de DD_SERVICE como el nombre del servicio. Este es el método recomendado y más fiable.
Si no se configura DD_SERVICE, Datadog infiere un nombre de servicio a partir del nombre binario. Para lenguajes interpretados, este es el nombre del intérprete. Por ejemplo, para un servicio escrito en Java, el perfilador de host completo establece el nombre del servicio en service:java.
Si se ejecutan varios servicios en el mismo intérprete (por ejemplo, dos aplicaciones Java distintas en el mismo host) y ninguno de ellos configura DD_SERVICE, Datadog los agrupa en el mismo nombre de servicio. Datadog no puede distinguirlos a menos que proporciones un nombre de servicio único.
Símbolos de depuración
Para los lenguajes compilados (como Rust, C, C++, Go, etc.), el perfilador carga los símbolos locales en Datadog para la simbolización, lo que garantiza que los nombres de las funciones estén disponibles en los perfiles. Para Rust, C y C++, los símbolos deben estar disponibles localmente (binarios sin comprimir).
Para los binarios desprovistos de símbolos de depuración, es posible cargar símbolos manualmente o en el CI:
- Instala la herramienta de línea de comandos datadog-ci.
- Proporciona una clave de API de Datadog a través de la variable de entorno
DD_API_KEY. - Configura la variable de entorno
DD_SITE en tu sitio de Datadog. - Instala el paquete
binutils, que proporciona la herramienta CLI objcopy. - Ejecuta:
DD_BETA_COMMANDS_ENABLED=1 datadog-ci elf-symbols upload ~/your/build/symbols/
¿Qué toca hacer ahora?
Después de instalar Full-Host Profiler, consulta los Primeros steps (UI) / pasos (generic) con Profiler para aprender a utilizar Continuous Profiler para identificar y solucionar problemas de rendimiento.
Referencias adicionales
Más enlaces, artículos y documentación útiles: