Información general

La instrumentación de un solo paso APM instala el Datadog Agent e instrumenta tus aplicaciones en un solo paso, sin necesidad de pasos adicionales de configuración.

Requisitos

  • Lenguajes y arquitecturas: la instrumentación de un solo paso APM es únicamente compatible con servicios de rastreo Java, Python, Ruby, Node.js, y .NET Core en arquitecturas x86_64 y arm64.

  • Sistemas operativos: máquinas virtuales Linux (Debian, Ubuntu, Amazon Linux, CentOS/Red Hat, Fedora), Docker, clústeres Kubernetes con contenedores Linux.

Habilitar APM en tus aplicaciones

Si instalas o actualizas un Datadog Agent con la opción Habilitar la instrumentación APM (beta) seleccionada, el Agent se instala y configura para habilitar APM. Esto instrumenta automáticamente tu aplicación, sin la necesidad de ningún paso adicional de instalación o configuración.

Los siguientes ejemplos muestran cómo funciona para cada tipo de despliegue.

Si ya has utilizado la instrumentación de un solo paso con hosts Linux, actualiza a la última versión.

Para un host Ubuntu:

  1. Ejecuta el comando de instalación de una línea:

    DD_API_KEY=<YOUR_DD_API_KEY> DD_SITE="<YOUR_DD_SITE>" DD_APM_INSTRUMENTATION_ENABLED=host DD_ENV=<AGENT_ENV> bash -c "$(curl -L https://install.datadoghq.com/scripts/install_script_agent7.sh)"
    

    Sustituye <YOUR_DD_API_KEY> por tu clave de API Datadog, <YOUR_DD_SITE> por tu sitio Datadog y <AGENT_ENV> por el entorno en el que está instalado tu Agent (por ejemplo, staging).

    Para ver más opciones, consulta Opciones avanzadas.
  2. Inicia una nueva sesión de shell.

  3. Reinicia los servicios en el host o la máquina virtual.

En un contenedor Linux Docker:

  1. Ejecuta el comando de instalación de una línea:
    bash -c "$(curl -L https://install.datadoghq.com/scripts/install_script_docker_injection.sh)"
    
  2. Configura el Agent en Docker:
    docker run -d --name dd-agent \
      -e DD_API_KEY=<YOUR_DD_API_KEY> \
      -e DD_APM_ENABLED=true \
      -e DD_ENV=<AGENT_ENV> \
      -e DD_APM_NON_LOCAL_TRAFFIC=true \
      -e DD_DOGSTATSD_NON_LOCAL_TRAFFIC=true \
      -e DD_APM_RECEIVER_SOCKET=/opt/datadog/apm/inject/run/apm.socket \
      -e DD_DOGSTATSD_SOCKET=/opt/datadog/apm/inject/run/dsd.socket \
      -v /opt/datadog/apm:/opt/datadog/apm \
      -v /var/run/docker.sock:/var/run/docker.sock:ro \
      gcr.io/datadoghq/agent:7
    
    Sustituye <YOUR_DD_API_KEY> por tu clave de API Datadog y <AGENT_ENV> por el entorno en el que está instalado tu Agent (por ejemplo, staging).
    Para ver más opciones, consulta Opciones avanzadas.
  3. Reinicia los contenedores Docker.
  4. Explora la observabilidad del rendimiento de tus servicios en Datadog.

Puedes habilitar APM instalando el Agent con cualquiera de las dos opciones:

  • Datadog Operator
  • Helm Chart Datadog
La instrumentación de un solo paso no instrumenta aplicaciones en el espacio de nombres donde instalas el Datadog Agent. Se recomienda instalar el Agent en un espacio de nombres separado en tu clúster, donde no ejecutes tus aplicaciones.

Requisitos

  • Kubernetes v1.20 y posterior
  • Helm para desplegar el Datadog Operator.
  • CLI Kubectl para instalar el Datadog Agent.

Sigue estos pasos para habilitar la instrumentación de un solo paso en todo tu clúster con el Datadog Operator. Esto envía automáticamente trazas para todas las aplicaciones en el clúster que están escritas en lenguajes compatibles.

Para habilitar la instrumentación de un solo paso con el Datadog Operator:

  1. Instala el Datadog Operator: v1.5.0 o superior con Helm:

    helm repo add datadog https://helm.datadoghq.com
    helm install my-datadog-operator datadog/datadog-operator
    
  2. Crea un secreto Kubernetes para almacenar tu clave de API Datadog:

    kubectl create secret generic datadog-secret --from-literal api-key=$DD_API_KEY
    
  3. Crea datadog-agent.yaml con las especificaciones de configuración del despliegue de tu Datadog Agent. La siguiente configuración es la más sencilla:

    apiVersion: datadoghq.com/v2alpha1
    kind: DatadogAgent
    metadata:
      name: datadog
    spec:
      global:
        site: <DATADOG_SITE>
        tags:
          - env:<AGENT_ENV>
        credentials:
          apiSecret:
            secretName: datadog-secret
            keyName: api-key
      features:
        apm:
          instrumentation:
            enabled: true  
    

    Sustituye <Datadog_SITE> por tu sitio Datadog y <Agent_ENV> por el entorno en el que está instalado tu Agent (por ejemplo, env:staging).

    Para ver más opciones, consulta Opciones avanzadas.
  4. Ejecuta el siguiente comando:

    kubectl apply -f /path/to/your/datadog-agent.yaml
    
  5. Espera unos minutos a que se apliquen los cambios del Datadog Cluster Agent y reinicia tus aplicaciones.

Sigue estos pasos para habilitar la instrumentación de un solo paso en todo tu clúster con Helm. Esto envía automáticamente trazas para todas las aplicaciones en el clúster que están escritas en lenguajes compatibles.

Para habilitar la instrumentación de un solo paso con Helm:

  1. Añade el repositorio Helm de Datadog:

     helm repo add datadog https://helm.datadoghq.com
     helm repo update
    
  2. Crea un secreto Kubernetes para almacenar tu clave de API Datadog:

    kubectl create secret generic datadog-secret --from-literal api-key=$DD_API_KEY
    
  3. Crea datadog-values.yaml y añade la siguiente configuración:

    datadog:
     apiKeyExistingSecret: datadog-secret
     site: <DATADOG_SITE>
     tags:
          - env:<AGENT_ENV>
     apm:
       instrumentation:
          enabled: true
    

    Sustituye <Datadog_SITE> por tu sitio Datadog y <Agent_ENV> por el entorno en el que está instalado tu Agent (por ejemplo, env:staging).

    Para ver más opciones, consulta Opciones avanzadas.
  4. Ejecuta el siguiente comando:

    helm install datadog-agent -f datadog-values.yaml datadog/datadog
    
  5. Espera unos minutos a que se apliquen los cambios del Datadog Cluster Agent y reinicia tus aplicaciones.

Después de completar estos pasos, es posible que quieras habilitar métricas de tiempo de ejecución o ver los datos de observabilidad de tu aplicación en el catálogo de servicios.

Opciones avanzadas

Cuando ejecutas el comando de instalación de una línea, hay algunas opciones disponibles para personalizar tu experiencia:

Especificación de versiones de bibliotecas de rastreo

Por defecto, la habilitación de APM en tu servidor instala la compatibilidad para servicios Java, Python, Ruby, Node.js, y .NET Core. Si sólo tienes servicios implementados en algunos de estos lenguajes, configura DD_APM_INSTRUMENTATION_LIBRARIES en tu comando de instalación de una línea.

Por ejemplo, para instalar sólo la versión 1.25.0 de la biblioteca de rastreo Java y la última versión de la biblioteca de rastreo Python, añade lo siguiente al comando de instalación:

DD_APM_INSTRUMENTATION_LIBRARIES="java:1.25.0,python" DD_API_KEY=<YOUR_DD_API_KEY> DD_SITE="<YOUR_DD_SITE>" DD_APM_INSTRUMENTATION_ENABLED=host DD_ENV=staging bash -c "$(curl -L https://install.datadoghq.com/scripts/install_script_agent7.sh)"

Puedes proporcionar opcionalmente un número de versión para la biblioteca de rastreo colocando dos puntos después del nombre del lenguaje y especificando la versión de la biblioteca de rastreo. Si no especificas una versión, se utilizará por defecto la versión más reciente. Los nombres de lenguajes están separados por comas.

Las versiones disponibles se enumeran en los repositorios de orígenes de rastreadores para cada lenguaje:

Especificación de versiones de bibliotecas de rastreo

Por defecto, la habilitación de APM en tu servidor instala la compatibilidad para servicios Java, Python, Ruby, Node.js, y .NET Core. Si sólo tienes servicios implementados en algunos de estos lenguajes, configura DD_APM_INSTRUMENTATION_LIBRARIES al ejecutar el script de instalación.

Por ejemplo, para instalar sólo la versión 1.25.0 de la biblioteca de rastreo Java y la última versión de la biblioteca de rastreo Python, añade lo siguiente al comando de instalación:

DD_APM_INSTRUMENTATION_LIBRARIES="java:1.25.0,python" bash -c "$(curl -L https://install.datadoghq.com/scripts/install_script_docker_injection.sh)"

Puedes proporcionar opcionalmente un número de versión para la biblioteca de rastreo colocando dos puntos después del nombre del lenguaje y especificando la versión de la biblioteca de rastreo. Si no especificas una versión, se utilizará por defecto la versión más reciente. Los nombres de lenguajes están separados por comas.

Las versiones disponibles se enumeran en los repositorios de orígenes de rastreadores para cada lenguaje:

Habilitar o deshabilitar la instrumentación para espacios de nombres

Puedes elegir habilitar o deshabilitar la instrumentación para aplicaciones en espacios de nombres específicos. Sólo puedes definir espacios de nombres habilitados o espacios de nombres deshabilitados, no ambos.

El archivo que tienes que configurar depende de si has habilitado la instrumentación de un solo paso con el Datadog Operator o con Helm:

Para habilitar la instrumentación para espacios de nombres específicos, añade la configuración enabledNamespaces a datadog-agent.yaml:

   features:
     apm:
       instrumentation:
         enabled: true 
         enabledNamespaces: # Añadir espacios de nombres que se van a instrumentar
           - default
           - applications

Para deshabilitar la instrumentación para determinados espacios de nombres, añade la configuración disabledNamespaces a datadog-agent.yaml:

   features:
     apm:
       instrumentation:
         enabled: true 
         disabledNamespaces: # Añadir espacios de nombres que no se van a instrumentar
           - default
           - applications

Para habilitar la instrumentación para espacios de nombres específicos, añade la configuración enabledNamespaces a datadog-values.yaml:

   datadog:
      apm:
        instrumentation:
          enabled: true
          enabledNamespaces: # Añadir espacios de nombres que se van a instrumentar
             - namespace_1
             - namespace_2

Para deshabilitar la instrumentación para determinados espacios de nombres, añade la configuración disabledNamespaces a datadog-values.yaml:

   datadog:
      apm:
        instrumentation:
          enabled: true
          disabledNamespaces: # Añadir espacios de nombres que no se van a instrumentar
            - namespace_1
            - namespace_2

Especificación de versiones de bibliotecas de rastreo

A partir del Datadog Cluster Agent v7.52.0 o superior, puedes instrumentar automáticamente un subconjunto de tus aplicaciones, basándose en las bibliotecas de rastreo que especifiques.

Especifica bibliotecas de rastreo de Datadog y sus versiones para instrumentar automáticamente las aplicaciones escritas en esos lenguajes. Puedes configurarlo de dos maneras, que se aplican en el siguiente orden de precedencia:

  1. Especificarlas a nivel del servicio o bien
  2. Especificarlas a nivel del clúster.

Por defecto: Si no especificas ninguna versión de biblioteca yapm.instrumentation.enabled=true, las aplicaciones escritas en los lenguajes soportados se instrumentan automáticamente utilizando las últimas versiones de bibliotecas de rastreo.

Especificación a nivel del servicio

Para instrumentar automáticamente aplicaciones en pods específicos, añade la anotación de lenguaje y la versión de biblioteca adecuadas para tu aplicación en la especificación de tu pod:

LenguajeAnotación del pod
Javaadmission.datadoghq.com/java-lib.version: "<CONTAINER IMAGE TAG>"
Node.jsadmission.datadoghq.com/js-lib.version: "<CONTAINER IMAGE TAG>"
Pythonadmission.datadoghq.com/python-lib.version: "<CONTAINER IMAGE TAG>"
.NETadmission.datadoghq.com/dotnet-lib.version: "<CONTAINER IMAGE TAG>"
Rubyadmission.datadoghq.com/ruby-lib.version: "<CONTAINER IMAGE TAG>"

Sustituye <CONTAINER IMAGE TAG> por la versión de biblioteca deseada. Las versiones disponibles se enumeran en los registros de contenedores de Datadog y en los repositorios de orígenes de rastreadores para cada lenguaje:

  • Java
  • Node.js
  • Python
  • .NET (Para aplicaciones .NET que utilizan una distribución Linux basada en musl como Alpine, especifica una etiqueta (tag) con el sufijo -musl, como en v2.29.0-musl).
  • Ruby
Ten cuidado al utilizar la última etiqueta (tag), ya que las mayores versiones de bibliotecas pueden introducir cambios de última hora.

Por ejemplo, para instrumentar aplicaciones Java automáticamente:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    # ...
spec:
  template:
    metadata:
      annotations:
        admission.datadoghq.com/java-lib.version: "<CONTAINER IMAGE TAG>"
    spec:
      containers:
        - # ...

Especificación a nivel del clúster

Si no habilitas la instrumentación automática para pods específicos utilizando las anotaciones, puedes especificar qué lenguajes instrumentar en todo el clúster utilizando la configuración de la instrumentación de un solo paso. Cuando se define apm.instrumentation.libVersions, sólo se instrumentan las aplicaciones escritas en los lenguajes especificados, utilizando las versiones de biblioteca especificadas.

El archivo que tienes que configurar depende de si has habilitado la instrumentación de un solo paso con el Datadog Operator o con Helm:

Por ejemplo, para instrumentar aplicaciones .NET, Python, y Node.js añade la siguiente configuración a tu archivo datadog-agent.yaml:

   features:
     apm:
       instrumentation:
         enabled: true
         libVersions: # Añade todas las bibliotecas y versiones que quieres configurar
            dotnet: v2.46.0
            python: v1.20.6
            js: v4.17.0

Por ejemplo, para instrumentar aplicaciones .NET, Python, y Node.js añade la siguiente configuración a tu archivo datadog-values.yaml:

   datadog:
     apm:
       instrumentation:
         enabled: true
         libVersions: # Añade todas las bibliotecas y versiones que quieres configurar
            dotnet: v2.46.0
            python: v1.20.6
            js: v4.17.0

Registros de contenedores

Datadog publica imágenes de bibliotecas de instrumentación en gcr.io, Docker Hub y Amazon ECR:

La variable de entorno DD_ADMISSION_CONTROLLER_AUTO_INSTRUMENTATION_CONTAINER_REGISTRY en la configuración del Datadog Cluster Agent especifica el registro utilizado por el controlador de admisión. El valor por defecto es gcr.io/datadoghq.

Puedes extraer la biblioteca de rastreo de un registro diferente cambiándolo por docker.io/datadog, public.ecr.aws/datadog u otra URL, si alojas las imágenes en un registro de contenedores local.

Para obtener instrucciones sobre cómo cambiar el registro de contenedores, consulta Para cambiar tu registro de contenedores.

Eliminar la instrumentación de un solo paso APM de tu Agent

Si no quieres recopilar datos de trazas de un determinado servicio, host, máquina virtual o contenedor, sigue los pasos que se indican a continuación:

Eliminar la instrumentación para servicios específicos

Para eliminar la instrumentación APM y dejar de enviar trazas desde un servicio específico, sigue estos pasos:

  1. Añade la variable de entorno DD_INSTRUMENT_SERVICE_WITH_APM al comando de inicio del servicio:

    DD_INSTRUMENT_SERVICE_WITH_APM=false <service_start_command>
    
  2. Reinicia el servicio.

  1. Añade la variable de entorno DD_INSTRUMENT_SERVICE_WITH_APM al comando de inicio del servicio:
    docker run -e DD_INSTRUMENT_SERVICE_WITH_APM=false <service_start_command>
    
  2. Reinicia el servicio.
  1. Configura la etiqueta (label) admission.datadoghq.com/enabled: como "false" para la especificación del pod:
    spec:
      template:
        metadata:
          labels:
            admission.datadoghq.com/enabled: "false"
    
  2. Aplica la configuración:
    kubectl apply -f /path/to/your/deployment.yaml
    
  3. Reinicia los servicios de los que quieres eliminar la instrumentación.

Eliminar APM para todos servicios de la infraestructura

Para dejar de producir trazas, desinstala APM y reinicia la infraestructura:

  1. Ejecuta:
    dd-host-install --uninstall
    
  2. Reinicia tu host.
  1. Ejecuta:
    dd-container-install --uninstall
    
  2. Reinicia Docker:
    systemctl restart docker
    
    O utiliza el equivalente para tu entorno.

El archivo que tienes que configurar depende de si has habilitado la instrumentación de un solo paso con el Datadog Operator o con Helm:

  1. Configura instrumentation.enabled=false en datadog-agent.yaml:

    features:
      apm:
        instrumentation:
          enabled: false
    
  2. Despliega el Datadog Agent con el archivo de configuración actualizado:

    kubectl apply -f /path/to/your/datadog-agent.yaml
    
  1. Configura instrumentation.enabled=false en datadog-values.yaml:

    datadog:
      apm:
        instrumentation:
          enabled: false
    
  2. Ejecuta el siguiente comando:

    helm upgrade datadog-agent -f datadog-values.yaml datadog/datadog
    

Leer más

Additional helpful documentation, links, and articles: