Requisitos de compatibilidad

Runtimes de .NET Core soportados

El Tracer de .NET soporta instrumentación en .NET Core 3.1, .NET 5, .NET 6, .NET 7, .NET 8, .NET 9 y .NET 10.

Para una lista completa del soporte de la biblioteca y arquitectura de procesadores de .NET Core de Datadog (incluyendo versiones heredadas y de mantenimiento), consulta Requisitos de Compatibilidad.

Instalación y primeros pasos

Para configurar Datadog APM en entornos Serverless, como AWS Lambda o Azure Functions, consulte Serverless.
Nota: La instrumentación automática de Datadog se basa en la API de perfilado de .NET CLR. Esta API permite solo un suscriptor (por ejemplo, Datadog APM). Para garantizar la máxima visibilidad, ejecute solo una solución APM en su entorno de aplicación.
Para instrumentar aplicaciones recortadas, haga referencia al paquete NuGet Datadog.Trace.Trimming en su proyecto.

Instalación

Antes de comenzar, asegúrese de haber instalado y configurado el Agent.

  1. Instale el SDK.
  2. Habilite el SDK para su servicio.
  3. Vea sus datos en vivo.

Instale el SDK

Después de instalar y configurar su Agente de Datadog, el siguiente paso es agregar el SDK directamente en la aplicación para instrumentarla. Lea más sobre información de compatibilidad.

Puede instalar el Tracer .NET de Datadog a nivel de máquina para que todos los servicios en la máquina estén instrumentados, o puede instalarlo de manera específica por aplicación para permitir que los desarrolladores gestionen la instrumentación a través de las dependencias de la aplicación. Para ver las instrucciones de instalación a nivel de máquina, haga clic en la pestaña de Windows o Linux. Para ver las instrucciones de instalación por aplicación, haga clic en la pestaña de NuGet.

Para instalar el .NET Tracer a nivel de máquina:

  1. Descargue el .NET Tracer MSI installer. Utilice el instalador MSI x64 si está ejecutando Windows de 64 bits; esto puede instrumentar tanto aplicaciones de 64 bits como de 32 bits. Solo elija el instalador x86 si está ejecutando Windows de 32 bits. A partir de la versión 3.0.0, solo se proporciona el instalador x64, ya que no soportamos sistemas operativos de 32 bits.

  2. Ejecute el instalador MSI del .NET Tracer con privilegios de administrador.

También puede automatizar la configuración de MSI ejecutando lo siguiente en PowerShell: Start-Process -Wait msiexec -ArgumentList '/qn /i datadog-apm.msi'

Para instalar el .NET Tracer a nivel de máquina:

  1. Descargue el último paquete de .NET Tracer 1 que sea compatible con su sistema operativo y arquitectura.

  2. Ejecute uno de los siguientes comandos para instalar el paquete y crear el directorio de registro del .NET Tracer /var/log/datadog/dotnet 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 esculpidos

Para instalar la traza .NET en imágenes de Docker esculpidas o sin distribución (sin un shell), utilice los siguientes comandos de Dockerfile:

  • Utilice ADD para colocar los archivos del SDK en el contenedor.
  • Utilice COPY --chown=$APP_UID con una carpeta vacía como fuente para crear la ruta de los registros.

Por ejemplo, en su Dockerfile:

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. Para las aplicaciones que se ejecutan en IIS, siga el proceso de instalación a nivel de máquina de Windows.

Para instalar el .NET Tracer por aplicación:

  1. Agregue el Datadog.Trace.Bundle paquete de NuGet a su aplicación.

Habilite el SDK para su servicio

Para habilitar el .NET Tracer para su servicio, establezca las variables de entorno requeridas y reinicie la aplicación.

Para información sobre los diferentes métodos para establecer variables de entorno, consulte Configurando variables de entorno del proceso.

Servicios de Información de Internet (IIS)

  1. El instalador MSI del .NET Tracer agrega todas las variables de entorno requeridas. No hay variables de entorno que necesite configurar.

    Nota: Debe establecer la .NET CLR versión para el grupo de aplicaciones en No Managed Code como lo recomienda Microsoft.
  2. Para instrumentar automáticamente aplicaciones alojadas en IIS, detenga y reinicie completamente IIS ejecutando los siguientes comandos como administrador:

    net stop /y was
    net start w3svc
    # Also, start any other services that were stopped when WAS was shut down.
    
    Nota: Siempre utilice los comandos anteriores para detener y reiniciar completamente IIS para habilitar el SDK. Evite usar la aplicación GUI del Administrador de IIS o iisreset.exe.

Servicios fuera de IIS

  1. Establezca las siguientes variables de entorno requeridas para que la instrumentación automática se conecte a su aplicación:

    CORECLR_ENABLE_PROFILING=1
    
  2. Para aplicaciones independientes y servicios de Windows, reinicie manualmente la aplicación.

  1. Establezca las siguientes variables de entorno requeridas para que la instrumentación automática se conecte a su 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. Para aplicaciones independientes, reinicie manualmente la aplicación como lo haría normalmente.

Siga las instrucciones en el archivo readme del paquete, también disponible en dd-trace-dotnet repositorio. Los ejemplos de Docker también están disponibles en el repositorio.

Vea sus datos en vivo

Después de habilitar el .NET Tracer para su servicio:

  1. Reinicie su servicio.

  2. Cree carga de aplicación.

  3. En Datadog, navegue a APM > Trazas de APM.

Configuración

Si es necesario, configure el SDK para enviar datos de telemetría de rendimiento de la aplicación según lo requiera, incluyendo la configuración de Etiquetado de Servicio Unificado. Lea Configuración de la Biblioteca para más detalles.

Instrumentación personalizada

La instrumentación personalizada depende de su instrumentación automática e incluye pasos adicionales dependiendo del método:

Nota: A partir de la versión v3.0.0, la instrumentación personalizada requiere que también utilice la instrumentación automática. Debería esforzarse por mantener sincronizadas las versiones de los paquetes de instrumentación automática y personalizada (por ejemplo: MSI y NuGet), y asegurarse de no mezclar versiones principales de los paquetes.

Para usar la instrumentación personalizada en su aplicación .NET:

  1. Instrumente su aplicación utilizando la instrumentación automática.
  2. Agregue el Datadog.Trace paquete de NuGet a su aplicación.
  3. En el código de su aplicación, acceda al rastreador global a través de la propiedad Datadog.Trace.Tracer.Instance para crear nuevos tramos.
Nota: A partir de la versión v3.0.0, la instrumentación personalizada requiere que también utilice la instrumentación automática. Debería esforzarse por mantener sincronizadas las versiones de los paquetes de instrumentación automática y personalizada (por ejemplo: MSI y NuGet), y asegurarse de no mezclar versiones principales de los paquetes.

Para usar la instrumentación personalizada en su aplicación .NET:

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

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

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

Para más información sobre cómo agregar tramos y etiquetas para instrumentación personalizada, consulta la documentación de instrumentación personalizada de .NET.

Configurando variables de entorno del proceso

Para adjuntar instrumentación automática a tu servicio, debes establecer las variables de entorno requeridas antes de iniciar la aplicación. Consulta la sección Habilitar el SDK para tu servicio para identificar qué variables de entorno establecer según tu método de instalación del Tracer de .NET y sigue los ejemplos a continuación para establecer correctamente las variables de entorno según el entorno de tu servicio instrumentado.

Windows

Nota: El runtime de .NET intenta cargar la biblioteca de .NET en cualquier proceso de .NET que se inicie con estas variables de entorno establecidas. Debes limitar la instrumentación solo a las aplicaciones que necesitan ser instrumentadas. No establezcas estas variables de entorno globalmente, ya que esto causa que todos los procesos de .NET en el host sean instrumentados.

Servicios de Windows

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

CORECLR_ENABLE_PROFILING=1
Usando el Editor del 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

Después de instalar el MSI, no se necesita configuración adicional para instrumentar automáticamente tus sitios de IIS. Para establecer variables de entorno adicionales que sean heredadas por todos los sitios de IIS, realiza los siguientes pasos:

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

Aplicaciones de consola

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

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 establecer las variables de entorno requeridas 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 usas Alpine Linux, establece el CORECLR_PROFILER_PATH variable de entorno en una ruta para distribuciones basadas en musl: linux-musl-x64/.

Contenedor Docker de Linux

Para establecer las variables de entorno requeridas 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)

Al usar systemctl para ejecutar aplicaciones .NET como un servicio, puedes agregar las variables de entorno requeridas que se cargarán 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 del servicio:

    [Service]
    EnvironmentFile=/path/to/environment.env
    ExecStart=<command used to start the application>
    
  3. Reinicia el servicio .NET para que los ajustes de las variables de entorno surtan efecto.

systemctl (todos los servicios)

Nota: El runtime de .NET intenta cargar la biblioteca de .NET en cualquier proceso de .NET que se inicie con estas variables de entorno establecidas. Debes limitar la instrumentación solo a las aplicaciones que necesitan ser instrumentadas. No establezcas estas variables de entorno globalmente, ya que esto causa que todos los procesos de .NET en el host sean instrumentados.

Al usar systemctl para ejecutar aplicaciones .NET como un servicio, también puedes establecer variables de entorno que se cargarán para todos los servicios ejecutados por systemctl.

  1. Establece las variables de entorno requeridas ejecutando systemctl set-environment:

    # 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. Verifica que las variables de entorno se hayan establecido ejecutando systemctl show-environment.

  3. Reinicia el servicio .NET para que las variables de entorno surtan efecto.

Lectura adicional