Requisitos de compatibilidad

Tiempos de ejecución .NET Core compatibles

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

Para ver una lista completa de las compatibilidades de la arquitectura de la biblioteca y del procesador de Datadog .NET Core (incluyendo 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, consulta el paquete NuGet Datadog.Trace.Trimming de tu proyecto. La compatibilidad con aplicaciones recortadas está en fase Beta.

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 de .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 MSI del rastreador .NET. Selecciona el instalador MSI que corresponda a la arquitectura del sistema operativo (x64 ó x86).

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

También puedes aplicar un script para la configuración de 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

Cuando inicias v2.14.0, no necesitas configurar CORECLR_PROFILER, si ya has instalado el rastreador utilizando el MSI.
  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}
    
  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

Tu configuración de la instrumentación personalizada depende de tu instrumentación automática e incluye pasos adicionales que dependen del método:

Nota: Si estás utilizando la instrumentación automática y la personalizada, debes mantener sincronizadas las versiones del paquete (por ejemplo: MSI y NuGet).

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

  1. Añade el paquete NuGet Datadog.Trace a tu aplicación.
  2. 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 (spans).
Nota: Si estás utilizando la instrumentación automática y la personalizada, debes mantener sincronizadas las versiones del paquete (por ejemplo: MSI y NuGet).

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

  1. Añade el paquete NuGet Datadog.Trace a tu aplicación.
  2. 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

Servicios de Windows

Cuando inicias v2.14.0, no necesitas configurar CORECLR_PROFILER, si ya has instalado el rastreador utilizando el MSI.

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

CORECLR_ENABLE_PROFILING=1
CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
Uso del Editor de registro para crear variables de entorno para un servicio de Windows
[string[]] $v = @("CORECLR_ENABLE_PROFILING=1", "CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}")
Set-ItemProperty HKLM:SYSTEM\CurrentControlSet\Services\<SERVICE NAME> -Name Environment -Value $v

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 cadenas múltiples 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 Configura variables de entorno
SET CORECLR_ENABLE_PROFILING=1
rem Unless v2.14.0+ and you installed the tracer with the MSI
SET CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}

rem Set additional Datadog environment variables
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:

# Configura variables de entorno
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

# Configura variables de entorno de Datadog adicionales
export DD_LOGS_INJECTION=true
export DD_RUNTIME_METRICS_ENABLED=true

# Inicia tu aplicación
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:

# Configura variables de entorno
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

# Configura variables de entorno de Datadog adicionales
ENV DD_LOGS_INJECTION=true
ENV DD_RUNTIME_METRICS_ENABLED=true

# Inicia tu aplicación
CMD ["dotnet", "example.dll"]

systemctl (por servicio)

Cuando utilizas systemctl para ejecutar aplicaciones de .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:

    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
    
    # Set additional Datadog environment variables
    DD_LOGS_INJECTION=true
    DD_RUNTIME_METRICS_ENABLED=true
    
  2. En el archivo de configuración del servicio, indica 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 un generador de perfiles en cualquier proceso de .NET que se inicia con estas variables de entorno configuradas. Debes limitar la instrumentación sólo a aplicaciones que necesitan ser rastreadas. No debes configurar estas variables de entorno globalmente, ya que esto lleva que todos los procesos de .NET en el host carguen el generador de perfiles.

Cuando utilizas systemctl para ejecutar aplicaciones de .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:

    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
    
    # Set additional Datadog environment variables
    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.

Leer más