Join the Preview!

Full-Host está en la vista previa

Request Access

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.

Example of an inferred services within Profiling

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:

  1. Instala la herramienta de línea de comandos datadog-ci.
  2. Proporciona una clave de API de Datadog a través de la variable de entorno DD_API_KEY.
  3. Configura la variable de entorno DD_SITE en tu sitio de Datadog.
  4. Instala el paquete binutils, que proporciona la herramienta CLI objcopy.
  5. 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: