Activación de .NET Profiler
El generador de perfiles se incluye en las bibliotecas de rastreo de Datadog. Si ya estás utilizando APM para recopilar trazas (traces) para tu aplicación, puedes omitir la instalación de biblioteca e ir directamente a habilitar el generador de perfiles.
Requisitos
Para obtener un resumen de las versiones mínimas y recomendadas del tiempo de ejecución y del rastreador en todos los lenguajes, consulta Versiones de lenguaje y rastreadores compatibles.
- Sistemas operativos compatibles con .NET Framework
- Windows 10
Windows Server a partir de la versión 2012 - Sistemas operativos compatibles con .NET Core y .NET 5+
- Linux con glibc 2.17+ (por ejemplo, CentOS 7+) y basado en musl (Alpine)
Windows 10
Windows Server a partir de la versión 2012 - Serverless
- Azure App Server Windows y Linux: aplicaciones web solamente, las aplicaciones de función no son compatibles
Tiempos de ejecución .NET compatibles (aplicaciones de 64 bits)
.NET Framework 4.6.1 o posterior
.NET Core 2.1, 3.1
.NET 5
.NET 6
.NET 7
.NET 8
- Lenguajes compatibles
- cualquier lenguaje dirigido al tiempo de ejecución de .NET, como C#, F# y Visual Basic.
Las siguientes funciones de generación de perfiles están disponibles en las siguientes versiones mínimas de la biblioteca dd-trace-dotnet
:
Función | Versión requerida de dd-trace-dotnet | Versiones de tiempo de ejecución de .NET necesarias |
---|
Perfiles de tiempo real | 2.7.0+ | Todas las versiones de tiempo de ejecución compatibles. |
Perfiles de CPU | 2.15.0+ | Todas las versiones de tiempo de ejecución compatibles. |
Perfiles de excepciones | 2.31.0+ | Todas las versiones de tiempo de ejecución compatibles. |
Perfiles de asignación | Fase beta, 2.18.0+ | .NET 6+ |
Perfil de contención de bloqueo | 2.49.0+ | .NET Framework de fase beta (requiere Datadog Agent 7.51+) y .NET 5+ |
Perfiles de heap en directo | Fase beta, 2.22.0+ | .NET 7+ |
Hotspots de código | 2.7.0+ | Todas las versiones de tiempo de ejecución compatibles. |
Perfiles de endpoint | 2.15.0+ | Todas las versiones de tiempo de ejecución compatibles. |
Cronología | 2.30.0+ | Todas las versiones de tiempo de ejecución compatibles (excepto .NET 5+, necesario para los detalles de la recopilación de elementos no usados). |
Instalación
Asegúrate de que Datadog Agent v6+ está instalado y en funcionamiento. Datadog recomienda utilizar Datadog Agent v7+. El generador de perfiles se entrega junto con la biblioteca de rastreo (a partir de v2.8.0), por lo que si ya estás utilizando APM para recopilar trazas para tu aplicación, puedes omitir la instalación de la biblioteca e ir directamente a Activación del generador de perfiles.
En caso contrario, instala el generador de perfiles siguiendo los pasos que se indican a continuación, en función de tu sistema operativo.
Nota: La instrumentación automática de Datadog se basa en la API de perfiles de .NET CLR. Dado que esta API solo permite un suscriptor, ejecuta solo una solución de APM en tu entorno de aplicación.
Puedes instalar Datadog .NET Profiler en toda la máquina para que todos los servicios de la máquina puedan ser instrumentados, o puedes instalarlo por aplicación para permitir a los desarrolladores gestionar la instrumentación a través de las dependencias de la aplicación. Para ver las instrucciones de instalación en toda la máquina, haz clic en la pestaña Windows o Linux. Para ver las instrucciones de instalación por aplicación, haz clic en la pestaña NuGet.
Para instalar .NET Profiler en toda la máquina:
Descarga el paquete del rastreador .NET más reciente que sea compatible con tu sistema operativo y tu arquitectura.
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 && sudo /opt/datadog/createLogPath.sh
- CentOS 7+ o Fedora
sudo rpm -Uvh datadog-dotnet-apm<TRACER_VERSION>-1.x86_64.rpm && sudo /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 && sudo sh /opt/datadog/createLogPath.sh
- Otras distribuciones
sudo tar -C /opt/datadog -xzf datadog-dotnet-apm-<TRACER_VERSION>.tar.gz && sudo /opt/datadog/createLogPath.sh
Para instalar .NET Profiler en toda la máquina:
Instala o actualiza a la última versión, utilizando el instalador MSI de .NET Monitoring. Continuous Profiler admite Windows de 64 bits, por lo que necesitas el archivo como datadog-dotnet-apm-<VERSION>-x64.msi
.
Ejecuta el instalador con privilegios de administrador.
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 .NET Profiler por aplicación:
- Añade el paquete NuGet
Datadog.Trace.Bundle
a tu aplicación.
Nota: Solo se admiten aplicaciones web. Las funciones no son compatibles.
Para instalar el .NET Profiler por aplicación web:
- Instala la extensión APM de Azure App Service Datadog para Windows o utiliza la configuración de Linux para tu aplicación web.
Habilitación del generador de perfiles
Nota: Datadog no recomienda habilitar el generador de perfiles a nivel de máquina o para todas las aplicaciones IIS. Si lo has habilitado a nivel de máquina, consulta la
documentación para solucionar problemas para obtener información sobre cómo reducir la sobrecarga asociada a la habilitación del generador de perfiles para todas las aplicaciones del sistema.
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
LD_PRELOAD=/opt/datadog/continuousprofiler/Datadog.Linux.ApiWrapper.x64.so
DD_PROFILING_ENABLED=1
DD_ENV=production
DD_VERSION=1.2.3
En el caso de aplicaciones independientes, reinicia la aplicación manualmente como lo harías normalmente.
Uno o dos minutos después de iniciar tu aplicación, tus perfiles aparecerán en la página Datadog APM > Generador de perfiles.
Con la instrumentación de un solo paso, establece las siguientes variables de entorno requeridas para que la instrumentación automática se adjunte a tu aplicación:
LD_PRELOAD=/opt/datadog/apm/library/dotnet/continuousprofiler/Datadog.Linux.ApiWrapper.x64.so
DD_PROFILING_ENABLED=1
DD_ENV=production
DD_VERSION=1.2.3
En el caso de aplicaciones independientes, reinicia la aplicación manualmente como lo harías normalmente.
Uno o dos minutos después de iniciar tu aplicación, tus perfiles aparecerán en la página Datadog APM > Generador de perfiles.
Establece las variables de entorno necesarias en configurar y activar el generador de perfiles.
Para habilitar el generador de perfiles para aplicaciones IIS, es necesario establecer la variable de entorno DD_PROFILING_ENABLED
en el registro bajo los nodos HKLM\System\CurrentControlSet\Services\WAS
y HKLM\System\CurrentControlSet\Services\W3SVC
.
A partir de la versión 2.14.0, no es necesario configurar CORECLR_PROFILER
o COR_PROFILER
si has instalado el rastreador mediante el MSI.
Con el editor de registro:
En el editor de registro, modifica el valor de cadena múltiple llamado Environment
en los nodos HKLM\System\CurrentControlSet\Services\WAS
y HKLM\System\CurrentControlSet\Services\W3SVC
y establece los datos de valor como sigue:
Para .NET Core y .NET 5+:
CORECLR_ENABLE_PROFILING=1
CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
DD_PROFILING_ENABLED=1
DD_ENV=production
DD_VERSION=1.2.3
Para .NET Framework:
COR_ENABLE_PROFILING=1
COR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
DD_PROFILING_ENABLED=1
DD_ENV=production
DD_VERSION=1.2.3
Nota: Las variables de entorno se aplican para todas las aplicaciones IIS. A partir de IIS 10, puedes establecer variables de entorno para cada aplicación IIS en el archivoC:\Windows\System32\inetsrv\config\applicationhost.config
. Consulta la documentación de Microsoft para más detalles.
Detiene e inicia completamente IIS ejecutando los siguientes comandos como administrador:
net stop /y was
net start w3svc
Note: Use stop
and start
commands. A reset or restart does not always work.
Uno o dos minutos después de iniciar tu aplicación, tus perfiles aparecerán en la página Datadog APM > Generador de perfiles.
Establece las variables de entorno necesarias para configurar y habilitar el generador de perfiles. Para habilitar el generador de perfiles para tu servicio, es necesario establecer la variable de entorno DD_PROFILING_ENABLED
en la clave de Registro asociada al servicio. Si el generador de perfiles se ejecuta solo (el rastreador está desactivado), puedes añadir opcionalmente las variables de entorno DD_SERVICE
, DD_ENV
y DD_VERSION
.
A partir de la versión 2.14.0, no es necesario configurar CORECLR_PROFILER
o COR_PROFILER
si has instalado el rastreador mediante el MSI.
Con el editor de registro:
En el Editor de registro, crea un valor de cadena múltiple llamado Environment
en la clave HKLM\System\CurrentControlSet\Services\MyService
y configura los datos de valor como:
Para .NET Core y .NET 5+:
CORECLR_ENABLE_PROFILING=1
CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
DD_PROFILING_ENABLED=1
DD_SERVICE=MyService
DD_ENV=production
DD_VERSION=1.2.3
Para .NET Framework:
COR_ENABLE_PROFILING=1
COR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
DD_PROFILING_ENABLED=1
DD_SERVICE=MyService
DD_ENV=production
DD_VERSION=1.2.3
Con un script PowerShell:
Para .NET Core y .NET 5+:
[string[]] $v = @(
"CORECLR_ENABLE_PROFILING=1",
"CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}",
"DD_PROFILING_ENABLED=1",
"DD_SERVICE=MyService",
"DD_ENV=production",
"DD_VERSION=1.2.3"
)
Set-ItemProperty HKLM:SYSTEM\CurrentControlSet\Services\MyService -Name Environment -Value $v
Para .NET Framework:
[string[]] $v = @(
"COR_ENABLE_PROFILING=1",
"COR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}",
"DD_PROFILING_ENABLED=1",
"DD_SERVICE=MyService",
"DD_ENV=production",
"DD_VERSION=1.2.3"
)
Set-ItemProperty HKLM:SYSTEM\CurrentControlSet\Services\MyService -Name Environment -Value $v
Uno o dos minutos después de iniciar tu aplicación, tus perfiles aparecerán en la página Datadog APM > Generador de perfiles.
A partir de la versión 2.14.0, no es necesario configurar CORECLR_PROFILER
o COR_PROFILER
si has instalado el rastreador mediante el MSI.
Establece las variables de entorno necesarias para configurar y habilitar el generador de perfiles para una aplicación que no sea un servicio, como consola, ASP.NET (Core), Windows Forms o WPF. Para habilitar el generador de perfiles para aplicaciones independientes, es necesario establecer la variable de entorno DD_PROFILING_ENABLED
. Si el generador de perfiles se ejecuta solo (el rastreador está desactivado), puedes establecer opcionalmente las variables de entorno DD_SERVICE
, DD_ENV
y DD_VERSION
. El método recomendado consiste en crear un archivo por lotes que las establezca e inicie la aplicación, y ejecutar la aplicación utilizando el archivo por lotes.
Para .NET Core y .NET 5+:
SET CORECLR_ENABLE_PROFILING=1
SET CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
SET DD_PROFILING_ENABLED=1
SET DD_SERVICE=MyService
SET DD_ENV=production
SET DD_VERSION=1.2.3
REM start the application here
Para .NET Framework:
SET COR_ENABLE_PROFILING=1
SET COR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
SET DD_PROFILING_ENABLED=1
SET DD_SERVICE=MyService
SET DD_ENV=production
SET DD_VERSION=1.2.3
REM start the application here
Uno o dos minutos después de iniciar tu aplicación, tus perfiles aparecerán en la página Datadog APM > Generador de perfiles.
Establece las siguientes variables de entorno necesarias para que la generación de perfiles se adjunte a tu aplicación:
CORECLR_ENABLE_PROFILING=1
CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
CORECLR_PROFILER_PATH=<System-dependent path>
DD_PROFILING_ENABLED=1
LD_PRELOAD=<System-dependent path>
DD_SERVICE=MyService
DD_ENV=production
DD_VERSION=1.2.3
DD_DOTNET_TRACER_HOME=<APP_DIRECTORY>/datadog
El valor para el parámetro <APP_DIRECTORY>
es la ruta al directorio que contiene los archivos .dll
de la aplicación. El valor de la variable de entorno CORECLR_PROFILER_PATH
varía en función del sistema en el que se ejecute la aplicación:
Sistema operativo y arquitectura de proceso | Valor CORECLR_PROFILER_PATH | Valor LD_PRELOAD |
---|
Alpine Linux x64 | <APP_DIRECTORY>/datadog/linux-musl-x64/Datadog.Trace.ClrProfiler.Native.so | <APP_DIRECTORY>/datadog/linux-musl-x64/Datadog.Linux.ApiWrapper.x64.so |
Linux x64 | <APP_DIRECTORY>/datadog/linux-x64/Datadog.Trace.ClrProfiler.Native.so | <APP_DIRECTORY>/datadog/linux-x64/Datadog.Linux.ApiWrapper.x64.so |
Linux ARM64 | <APP_DIRECTORY>/datadog/linux-arm64/Datadog.Trace.ClrProfiler.Native.so | <APP_DIRECTORY>/datadog/linux-arm64/Datadog.Linux.ApiWrapper.x64.so |
Windows x64 | <APP_DIRECTORY>\datadog\win-x64\Datadog.Trace.ClrProfiler.Native.dll | N/A |
Windows x86 | <APP_DIRECTORY>\datadog\win-x86\Datadog.Trace.ClrProfiler.Native.dll | N/A |
Para las imágenes de Docker que se ejecutan en Linux, configura la imagen para ejecutar el script createLogPath.sh
:
RUN /<APP_DIRECTORY>/datadog/createLogPath.sh
Los ejemplos de Docker están disponibles en el repositorio dd-trace-dotnet
.
Para aplicaciones independientes, reinicia manualmente la aplicación.
- Sigue estas directrices de instalación (Windows o Linux) para configurar
DD_PROFILING_ENABLED:true
y habilitar el generador de perfiles.
Configuración
Puede configurar el generador de perfiles utilizando las siguientes variables de entorno. Ten en cuenta que la mayoría de estos ajustes también se aplican a la configuración del rastreador. Reinicia la aplicación después de cambiar cualquiera de estos ajustes.
Variable de entorno | Tipo | Descripción |
---|
DD_ENV | Cadena | El nombre de entorno, por ejemplo, production . Si no se establece, será unspecified-environment |
DD_SERVICE | Cadena | El nombre de servicio, por ejemplo, web-backend . Si no se especifica, .NET Profiler intenta determinar el nombre de servicio automáticamente a partir del nombre de la aplicación (ensamblado de entrada de proceso o nombre de proceso). |
DD_VERSION | Cadena | La versión de tu servicio. Si no se establece, será unspecified-version |
DD_TAGS | Cadena | Las etiquetas para aplicar a un perfil cargado. Debe ser un lista de <key>:<value> separados por comas como: layer:api,team:intake . |
DD_AGENT_HOST | Cadena | Establece el host al que se envían los perfiles (el host que ejecuta el Agent). Puede ser un nombre de host o una dirección IP. Se ignora si DD_TRACE_AGENT_URL está configurado. Por defecto es localhost . |
DD_TRACE_AGENT_PORT | Cadena | Establece el puerto al que se envían los perfiles (el puerto en el que el Agent escucha conexiones). Se ignora si DD_TRACE_AGENT_URL está configurado. Por defecto es8126 . |
DD_TRACE_AGENT_URL | Cadena | Establece el endpoint de la URL donde se envían los perfiles. Sustituye a DD_AGENT_HOST y DD_TRACE_AGENT_PORT si están definidos. Por defecto es http://<DD_AGENT_HOST>:<DD_TRACE_AGENT_PORT> . |
DD_TRACE_DEBUG | Booleano | Activa o desactiva el registro de depuración (podría ayudar en caso de investigación para solucionar problemas). Los valores válidos son: true o false . Por defecto es false . |
DD_PROFILING_LOG_DIR | Cadena | Establece el directorio para logs de .NET Profiler. Por defecto es %ProgramData%\Datadog .NET Tracer\logs\ . (Antes de v2.24, el directorio por defecto era %ProgramData%\Datadog-APM\logs\ ) |
DD_PROFILING_ENABLED | Booleano | Si se establece en true , activa el .NET Profiler. Por defecto es false . |
DD_PROFILING_WALLTIME_ENABLED | Booleano | Si se establece en false , desactiva la generación de perfiles de tiempo real. Por defecto es true . |
DD_PROFILING_CPU_ENABLED | Booleano | Si se establece en false , desactiva la generación de perfiles de CPU. Por defecto es true . |
DD_PROFILING_EXCEPTION_ENABLED | Booleano | Si se establece en true , activa la generación de perfiles de excepciones (fase beta). Por defecto es false . |
DD_PROFILING_ALLOCATION_ENABLED | Booleano | Si se establece en true , activa el perfil de asignaciones (fase beta). Por defecto es false . |
DD_PROFILING_LOCK_ENABLED | Booleano | Si se establece en true , habilita el perfil de contención de bloqueo (fase beta). Por defecto es false . |
DD_PROFILING_HEAP_ENABLED | Booleano | Si se establece en true , habilita el perfil de heap en directo (fase beta). Por defecto es false . |
DD_PROFILING_GC_ENABLED | Booleano | Si se establece en false , se desactiva el perfil de recopilación de elementos no usados utilizado en la interfaz de usuario de Cronología. Por defecto es true . |
Referencias adicionales
La guía Empezando con el generador de perfiles toma un ejemplo de servicio con un problema de rendimiento y te muestra cómo utilizar Continuous Profiler para comprender y solucionar el problema.
Más enlaces, artículos y documentación útiles: