Requisitos de compatibilidad

Tiempos de ejecución .NET Core compatibles

El rastreador de .NET es compatible con la instrumentación en .NET Core 3.1, .NET 5, .NET 6, .NET 7, .NET 8 y .NET 9.

Para ver la lista completa de los requisitos de compatibilidad de la biblioteca .NET Core y de la arquitectura de procesadores de Datadog (incluidas las versiones heredadas y de mantenimiento), consulta los requisitos de compatibilidad.

Para instalar y empezar a utilizar

Para configurar Datadog APM en AWS Lambda, consulta el rastreo de funciones serverlessen Azure App Service y también el rastreo en Azure App Service.
Nota: La instrumentación automática de Datadog se basa en la API de generación de perfiles CLR de .NET. Esta API sólo permite un suscriptor (por ejemplo, Datadog APM). Para garantizar la máxima visibilidad, ejecuta sólo una solución APM en tu entorno de aplicación.
Para instrumentar aplicaciones recortadas, haz referencia al paquete Datadog.Trace.Trimming de NuGet en tu proyecto.

Instalación

Antes de empezar, asegúrate de haber instalado y configurado el Agent.

  1. Instala el rastreador.
  2. Activa el rastreador para tu servicio.
  3. Visualiza tus datos en directo.

Instalación del rastreador

Después de instalar y configurar tu Datadog Agent, el siguiente paso es añadir la biblioteca de rastreo directamente en la aplicación para instrumentarla. Consulta más bibliografía con información sobre la compatibilidad.

Puedes instalar el rastreador .NET de Datadog en toda la máquina para que se instrumenten todos los servicios de la máquina, o puedes instalarlo aplicación por aplicación para que los desarrolladores gestionen la instrumentación a través de las dependencias de la aplicación. Para ver más instrucciones sobre la instalación en toda la máquina, haz clic en la pestaña de Windows o Linux. Para ver más instrucciones sobre la instalación aplicación por aplicación, haz clic en la pestaña de NuGet.

Para instalar el rastreador .NET en toda la máquina:

  1. Descarga el instalador de .NET Tracer MSI. Utiliza el instalador MSI x64 si estás ejecutando Windows de 64 bits; éste puede instrumentar tanto aplicaciones de 64 bits como de 32 bits. Elige el instalador x86 sólo si estás ejecutando Windows de 32 bits. A partir de la versión 3.0.0, sólo se proporciona el instalador x64, ya que no admitimos sistemas operativos de 32 bits.

  2. Ejecuta el instalador MSI del rastreador .NET con privilegios administrativos.

También puedes aplicar un script para la configuración del MSI ejecutando lo siguiente en PowerShell: Start-Process -Wait msiexec -ArgumentList '/qn /i datadog-apm.msi'

Para instalar el rastreador .NET en toda la máquina:

  1. Descarga el paquete del rastreador .NET más reciente que sea compatible con tu sistema operativo y tu arquitectura.

  2. Ejecuta uno de los siguientes comandos para instalar el paquete y crear el directorio de logs /var/log/datadog/dotnet del rastreador .NET con los permisos apropiados:

    Debian o Ubuntu
    sudo dpkg -i ./datadog-dotnet-apm_<TRACER_VERSION>_amd64.deb && /opt/datadog/createLogPath.sh
    CentOS o Fedora
    sudo rpm -Uvh datadog-dotnet-apm<TRACER_VERSION>-1.x86_64.rpm && /opt/datadog/createLogPath.sh
    Alpine u otras distribuciones basadas en musl
    sudo tar -C /opt/datadog -xzf datadog-dotnet-apm-<TRACER_VERSION>-musl.tar.gz && sh /opt/datadog/createLogPath.sh
    Otras distribuciones
    sudo tar -C /opt/datadog -xzf datadog-dotnet-apm-<TRACER_VERSION>.tar.gz && /opt/datadog/createLogPath.sh

Contenedores cincelados

Para instalar el rastreador .NET en imágenes cinceladas o distroless Docker (sin shell), utiliza los siguientes comandos de archivos Docker:

  • Utiliza ADD para colocar los archivos del rastreador en el contenedor.
  • Utiliza COPY --chown=$APP_UID con una carpeta vacía como origen para crear la ruta de los logs.

Por ejemplo, en tu archivo Docker:

ADD datadog-dotnet-apm-<TRACER_VERSION>.tar.gz /opt/datadog/
COPY --chown=$APP_UID --from=<OTHER_STAGE> /empty/ /var/log/datadog/dotnet/
Nota: Esta instalación no instrumenta aplicaciones que se ejecutan en IIS. En el caso de aplicaciones que se ejecutan en IIS, sigue el proceso de Windows para la instalación en toda la máquina.

Para instalar el rastreador .NET aplicación por aplicación:

  1. Añade el paquete NuGet Datadog.Trace.Bundle a tu aplicación.

Activación del rastreador para tu servicio

Para activar el rastreador .NET para tu servicio, configura las variables de entorno necesarias y reinicia la aplicación.

Para obtener más información sobre los diferentes métodos de configurar variables de entorno, consulta la Proceso de configuración de variables de entorno.

Internet Information Services (IIS)

  1. El instalador MSI del rastreador .NET añade todas las variables de entorno necesarias. No necesitas configurar ninguna variable de entorno.

    Note: You must set the .NET CLR version for the application pool to No Managed Code as recommended by Microsoft.
  2. Para instrumentar aplicaciones alojadas en IIS automáticamente, ejecuta los siguientes comandos como administrador para detener e reiniciar IIS completamente:

    net stop /y was
    net start w3svc
    # Also, start any other services that were stopped when WAS was shut down.
    
    Note: Always use the commands above to completely stop and restart IIS to enable the tracer. Avoid using the IIS Manager GUI application or iisreset.exe.

Servicios que no se encuentran en IIS

  1. Configura las siguientes variables de entorno, obligatorias para la instrumentación automática, a fin de adjuntarlas a tu aplicación:

    CORECLR_ENABLE_PROFILING=1
    
  2. En el caso de aplicaciones y servicios de Windows independientes, debes reiniciar la aplicación manualmente.

  1. Configura las siguientes variables de entorno, obligatorias para la instrumentación automática, a fin de adjuntarlas a tu aplicación:

    CORECLR_ENABLE_PROFILING=1
    CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
    CORECLR_PROFILER_PATH=/opt/datadog/Datadog.Trace.ClrProfiler.Native.so
    DD_DOTNET_TRACER_HOME=/opt/datadog
    
  2. En el caso de aplicaciones independientes, reinicia la aplicación manualmente como lo harías normalmente.

Sigue las instrucciones Readme (Léeme) del paquete, también disponibles en el repositorio dd-trace-dotnet. En el repositorio, también hay ejemplos de Docker disponibles.

Visualización en directo de tus datos

Después de activar el rastreador .NET para tu servicio:

  1. Reinicia tu servicio.

  2. Crea la carga de la aplicación.

  3. En Datadog, ve a APM > APM Traces (APM* > **Trazas APM).

Configuración

Si es necesario, configura la biblioteca de rastreo para que envíe datos de telemetría sobre el rendimiento de la aplicación, según sea necesario, incluida la configuración del etiquetado unificado de servicios. Para ver más detalles, consulta la configuración de bibliotecas.

Instrumentación personalizada

La instrumentación personalizada depende de tu instrumentación automática e incluye pasos adicionales según el método:

Nota: A partir de la versión 3.0.0, la instrumentación personalizada requiere el uso de la instrumentación automática. Debes intentar mantener sincronizadas las versiones automáticas y personalizadas del paquete de instrumentación (por ejemplo: MSI y NuGet) y asegurarte de no mezclar versiones principales de paquetes.

Para utilizar la instrumentación personalizada en tu aplicación .NET:

  1. Instrumenta tu aplicación utilizando la instrumentación automática.
  2. Añade el paquete NuGet Datadog.Trace a tu aplicación.
  3. En tu código de aplicación, accede al rastreador global a través de la propiedad de Datadog.Trace.Tracer.Instance para crear nuevos tramos.
Nota: A partir de la versión 3.0.0, la instrumentación personalizada requiere el uso de la instrumentación automática. Debes intentar mantener sincronizadas las versiones automáticas y personalizadas del paquete de instrumentación (por ejemplo: MSI y NuGet) y asegurarte de no mezclar versiones principales de paquetes.

Para utilizar la instrumentación personalizada en tu aplicación .NET:

  1. Instrumenta tu aplicación utilizando la instrumentación automática.
  2. Añade el paquete NuGet Datadog.Trace a tu aplicación.
  3. En tu código de aplicación, accede al rastreador global a través de la propiedad de Datadog.Trace.Tracer.Instance para crear nuevos tramos.

Para utilizar la instrumentación personalizada en tu aplicación .NET:

  1. En tu código de aplicación, accede al rastreador global a través de la propiedad de Datadog.Trace.Tracer.Instance para crear nuevos tramos.

Para obtener más información sobre cómo añadir tramos y etiquetas (tags) para la instrumentación personalizada, consulta la documentación para la instrumentación personalizada de .NET.

Configuración de variables de entorno para procesos

Para adjuntar la instrumentación automática a tu servicio, debes configurar las variables de entorno obligatorias antes de iniciar la aplicación. Consulta la sección Activar el rastreador para tu servicio para identificar las variables de entorno que debes configurar, dependiendo del método que has utilizado para instalar el rastreador .NET y sigue los siguientes ejemplos para configurar las variables de entorno correctamente, según el entorno de tu servicio instrumentado.

Windows

Nota: El tiempo de ejecución de .NET intenta cargar la biblioteca de .NET en cualquier proceso de .NET que se inicia con estas variables de entorno configuradas. Deberías limitar la instrumentación a solo las aplicaciones que deben instrumentarse. No configures estas variables de entorno de forma global ya que esto causará la instrumentación de todos los procesos de .NET en el host.

Servicios de Windows

En el Editor de registro, crea un valor de cadena múltiple llamado Environment en la clave HKLM\System\CurrentControlSet\Services\<SERVICE NAME> y configura los datos de valor como:

CORECLR_ENABLE_PROFILING=1
Uso del Editor de registro para crear variables de entorno para un servicio de Windows
Set-ItemProperty HKLM:SYSTEM\CurrentControlSet\Services\<SERVICE NAME> -Name Environment -Value 'CORECLR_ENABLE_PROFILING=1'

IIS

Una vez instalado el MSI, no es necesaria ninguna configuración adicional para instrumentar tus sitios de IIS automáticamente. Sigue los siguientes pasos para configurar variables de entorno adicionales, heredadas por todos los sitios de IIS:

  1. Abre el Editor de registro, busca el valor de cadena múltiple llamado Environment en la clave HKLM\System\CurrentControlSet\Services\WAS y añade las variables de entorno, una por cada línea. Por ejemplo, para añadir la inyección de logs y métricas de tiempos de ejecución, añade las siguientes líneas a los datos de valor:
    DD_LOGS_INJECTION=true
    DD_RUNTIME_METRICS_ENABLED=true
    
  2. Ejecuta los siguientes comandos para reiniciar los IIS:
    net stop /y was
    net start w3svc
    # Also, start any other services that were stopped when WAS was shut down.
    
Uso del Editor de registro para crear variables de entorno para todos los sitios de IIS

Aplicaciones de consola

Para instrumentar una aplicación de consola automáticamente, antes de iniciar tu aplicación configura las variables de entorno desde un archivo de lote:

rem Set required environment variables
SET CORECLR_ENABLE_PROFILING=1

rem (Optional) Set additional Datadog environment variables, for example:
SET DD_LOGS_INJECTION=true
SET DD_RUNTIME_METRICS_ENABLED=true

rem Start application
dotnet.exe example.dll

Linux

Script de bash

Para configurar las variables de entorno obligatorias desde un archivo bash antes de iniciar tu aplicación:

# Set required environment variables
export CORECLR_ENABLE_PROFILING=1
export CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
export CORECLR_PROFILER_PATH=/opt/datadog/Datadog.Trace.ClrProfiler.Native.so
export DD_DOTNET_TRACER_HOME=/opt/datadog

# (Optional) Set additional Datadog environment variables, for example:
export DD_LOGS_INJECTION=true
export DD_RUNTIME_METRICS_ENABLED=true

# Start your application
dotnet example.dll
Si utilizas Alpine Linux, configura la variable de entorno CORECLR_PROFILER_PATH en una ruta para distribuciones basadas en musl: linux-musl-x64/.

Contenedor Docker de Linux

Para configurar las variables de entorno obligatorias en un contenedor Docker de Linux:

# Set required environment variables
ENV CORECLR_ENABLE_PROFILING=1
ENV CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
ENV CORECLR_PROFILER_PATH=/opt/datadog/Datadog.Trace.ClrProfiler.Native.so
ENV DD_DOTNET_TRACER_HOME=/opt/datadog

# (Optional) Set additional Datadog environment variables, for example:
ENV DD_LOGS_INJECTION=true
ENV DD_RUNTIME_METRICS_ENABLED=true

# Start your application
CMD ["dotnet", "example.dll"]

systemctl (por servicio)

Cuando utilizas systemctl para ejecutar aplicaciones .NET como un servicio, puedes añadir las variables de entorno necesarias para que se carguen para un servicio específico.

  1. Crea un archivo llamado environment.env que contenga:

    # Set required environment variables
    CORECLR_ENABLE_PROFILING=1
    CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
    CORECLR_PROFILER_PATH=/opt/datadog/Datadog.Trace.ClrProfiler.Native.so
    DD_DOTNET_TRACER_HOME=/opt/datadog
    
    # (Optional) Set additional Datadog environment variables, for example:
    DD_LOGS_INJECTION=true
    DD_RUNTIME_METRICS_ENABLED=true
    
  2. En el archivo de configuración del servicio, haz referencia a esto como un EnvironmentFile en el bloque de servicios:

    [Service]
    EnvironmentFile=/path/to/environment.env
    ExecStart=<command used to start the application>
    
  3. Reinicia el sevicio .NET para que la configuración de la variable de entorno se aplique.

systemctl (todos los servicios)

Nota: El tiempo de ejecución de .NET intenta cargar la biblioteca de .NET en cualquier proceso de .NET que se inicia con estas variables de entorno configuradas. Deberías limitar la instrumentación a solo las aplicaciones que deben instrumentarse. No configures estas variables de entorno de forma global ya que esto causará la instrumentación de todos los procesos de .NET en el host.

Cuando utilizas systemctl para ejecutar aplicaciones .NET como un servicio, también puedes configurar variables de entorno para que se carguen para todos los servicios que ejecuta systemctl.

  1. Ejecuta systemctl set-environment para configurar las variables de entorno obligatorias:

    # Set required environment variables
    systemctl set-environment CORECLR_ENABLE_PROFILING=1
    systemctl set-environment CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
    systemctl set-environment CORECLR_PROFILER_PATH=/opt/datadog/Datadog.Trace.ClrProfiler.Native.so
    systemctl set-environment DD_DOTNET_TRACER_HOME=/opt/datadog
    
    # (Optional) Set additional Datadog environment variables, for example:
    systemctl set-environment DD_LOGS_INJECTION=true
    systemctl set-environment DD_RUNTIME_METRICS_ENABLED=true
    
  2. Ejecuta systemctl show-environment para verificar que se hayan configurado las variables de entorno.

  3. Reinicia el servicio de .NET para aplicar las variables de entorno.

Referencias adicionales