Eventos
Cree aplicaciones inteligentes
17 mar, 9 p.m. - 21 mar, 10 a.m.
Únete a la serie de encuentros para crear soluciones de IA escalables basadas en casos de uso del mundo real con otros desarrolladores y expertos.
Regístrese ahoraEste explorador ya no es compatible.
Actualice a Microsoft Edge para aprovechar las características, las actualizaciones de seguridad y el soporte técnico más recientes.
Precaución
Se recomienda la Distribución de OpenTelemetry de Azure Monitor para nuevas aplicaciones o clientes para potenciar Application Insights de Azure Monitor. La Distribución de OpenTelemetry de Azure Monitor ofrece una funcionalidad y experiencia similares al SDK de Application Insights. Es posible migrar desde el SDK de Application Insights usando las guías de migración para .NET, Node.js, y Python, pero todavía estamos trabajando para agregar unas pocas características más para la compatibilidad con versiones anteriores.
Una dependencia es un componente al que la aplicación llama. Suele ser un servicio al que se llama mediante HTTP, una base de datos o un sistema de archivos. Application Insights mide la duración de las llamadas de dependencia, independientemente de si devuelven un error o no, junto con información adicional como el nombre de la dependencia. Puede investigar llamadas de dependencia específicas y relacionarlas a solicitudes y excepciones.
Los SDK de Application Insights para .NET y .NET Core se suministran con DependencyTrackingTelemetryModule
, un módulo de telemetría que recopila dependencias automáticamente. Esta recopilación de dependencias se habilita automáticamente para las aplicaciones de ASP.NET y ASP.NET Core cuando se configura según los documentos oficiales vinculados. El módulo DependencyTrackingTelemetryModule
se envía como el paquete NuGet Microsoft.ApplicationInsights.DependencyCollector y se trae automáticamente cuando se usa el paquete NuGet de Microsoft.ApplicationInsights.Web
o el paquete NuGet de Microsoft.ApplicationInsights.AspNetCore
.
Actualmente, DependencyTrackingTelemetryModule
hace un seguimiento automático de las siguientes dependencias:
Dependencias | Detalles |
---|---|
HTTP/HTTPS | Llamadas HTTP/HTTPS locales o remotas. |
Llamadas WCF | Solo hace un seguimiento automáticamente si se usan enlaces basados en HTTP. |
SQL | Llamadas realizadas con SqlClient . Consulte la sección Seguimiento avanzado de SQL para obtener una consulta SQL completa para capturar consultas SQL. |
Azure Blob Storage, Table Storage o Queue Storage | Llamadas realizadas con el cliente de Azure Storage. |
SDK cliente de Azure Event Hubs | Use el paquete más reciente: https://nuget.org/packages/Azure.Messaging.EventHubs. |
SDK cliente de Azure Service Bus | Use el paquete más reciente: https://nuget.org/packages/Azure.Messaging.ServiceBus. |
Azure Cosmos DB | Se realiza un seguimiento automático si se usa HTTP/HTTPS. El seguimiento de las operaciones en modo directo con TCP se captura automáticamente mediante el paquete de vista previa >= 3.33.0-preview. Para obtener más información, visite la documentación. |
Si falta una dependencia o está usando un SDK diferente, asegúrese de que se encuentra en la lista de dependencias recopiladas automáticamente. Si la dependencia no se recopila automáticamente, puede hacer un seguimiento manual con una llamada a TrackDependency .
Para hacer un seguimiento automático de las dependencias de aplicaciones de consola de .NET, instale el paquete NuGet Microsoft.ApplicationInsights.DependencyCollector
e inicialice DependencyTrackingTelemetryModule
:
DependencyTrackingTelemetryModule depModule = new DependencyTrackingTelemetryModule();
depModule.Initialize(TelemetryConfiguration.Active);
En el caso de las aplicaciones de consola de .NET Core, TelemetryConfiguration.Active
se ha quedado obsoleto. Consulte las instrucciones de la documentación del servicio de trabajo y la documentación de supervisión de ASP.NET Core.
Las dependencias se recopilan automáticamente mediante una de las siguientes técnicas:
InstrumentationEngine
desde StatusMonitor
o una extensión de Azure App Service Web Apps.EventSource
.DiagnosticSource
en los SDK de .NET o .NET Core más recientes.Los siguientes son ejemplos de las dependencias que no se recopilan automáticamente y requieren seguimiento manual:
2.22.0-Beta1
.Para las dependencias que el SDK no recopila automáticamente, puede realizar un seguimiento manual mediante la API de TrackDependency que utilizan los módulos de recolección automática estándar.
Ejemplo
Si compila el código con un ensamblado que no escribió usted mismo, podría cronometrar todas las llamadas al ensamblado. Este escenario le permitiría averiguar qué contribución hace a los tiempos de respuesta.
Para que estos datos se muestren en los gráficos de dependencia en Application Insights, envíelos mediante TrackDependency
:
var startTime = DateTime.UtcNow;
var timer = System.Diagnostics.Stopwatch.StartNew();
try
{
// making dependency call
success = dependency.Call();
}
finally
{
timer.Stop();
telemetryClient.TrackDependency("myDependencyType", "myDependencyCall", "myDependencyData", startTime, timer.Elapsed, success);
}
Como alternativa, TelemetryClient
proporciona los métodos de extensión StartOperation
y StopOperation
que pueden usarse para realizar un seguimiento manual de las dependencias, tal como se muestra en Seguimiento de dependencias de salida.
Si desea desactivar el módulo de seguimiento de dependencia estándar, quite la referencia a DependencyTrackingTelemetryModule
en ApplicationInsights.config para las aplicaciones de ASP.NET. Para aplicaciones de ASP.NET Core, siga las instrucciones en Application Insights para aplicaciones de ASP.NET Core.
Para las páginas web, el SDK de JavaScript de Application Insights recopila automáticamente las llamadas AJAX como dependencias.
Nota
Azure Functions requiere una configuración independiente para habilitar la recopilación de texto de SQL. Para obtener más información, consulte Habilitación de la recopilación de consultas SQL.
Para las llamadas SQL, el nombre del servidor y la base de datos siempre se recopilan y almacenan como el nombre de la DependencyTelemetry
recopilada. Otro campo denominado datos, puede contener el texto completo de la consulta SQL.
En el caso de aplicaciones de ASP.NET Core, ahora es necesario participar en la recopilación de texto SQL mediante:
services.ConfigureTelemetryModule<DependencyTrackingTelemetryModule>((module, o) => { module. EnableSqlCommandTextInstrumentation = true; });
En el caso de las aplicaciones de ASP.NET, se recopila texto de la consulta SQL completa con la ayuda de la instrumentación de código de bytes, que requiere el uso del motor de instrumentación o puede realizarse mediante el paquete NuGet Microsoft.Data.SqlClient, en lugar de la biblioteca System.Data.SqlClient. En la siguiente tabla, se describen los pasos específicos de la plataforma para habilitar la recopilación completa de consultas SQL.
Plataforma | Pasos necesarios para obtener la consulta SQL completa |
---|---|
Web Apps en Azure App Service | En el panel de control de la aplicación web, abra el panel de Application Insights y habilite los comandos SQL de .NET. |
Servidor IIS (Azure Virtual Machines, local, etc.) | Use el paquete de NuGet Microsoft.Data.SqlClient o use el módulo de PowerShell del agente de Application Insights para instalar el motor de instrumentación y reiniciar IIS. |
Azure Cloud Services | Agregue una tarea de inicio para instalar StatusMonitor. La aplicación se debe incorporar al SDK de ApplicationInsights en tiempo de compilación mediante la instalación de paquetes NuGet para las aplicaciones de ASP.NET o ASP.NET Core. |
IIS Express | Use el paquete NuGet Microsoft.Data.SqlClient. |
WebJobs en Azure App Service | Use el paquete NuGet Microsoft.Data.SqlClient. |
Además de los pasos específicos de la plataforma anteriores, también debe optar explícitamente por habilitar la colección de comandos SQL al modificar el archivo applicationInsights.config
con el código siguiente:
<TelemetryModules>
<Add Type="Microsoft.ApplicationInsights.DependencyCollector.DependencyTrackingTelemetryModule, Microsoft.AI.DependencyCollector">
<EnableSqlCommandTextInstrumentation>true</EnableSqlCommandTextInstrumentation>
</Add>
En los casos anteriores, la forma correcta de validar que el motor de instrumentación está instalado correctamente es comprobar que la versión de SDK de la DependencyTelemetry
recopilada sea rddp
. EL uso de rdddsd
o rddf
indica que las dependencias se recogen a través de las devoluciones de llamada de DiagnosticSource
o EventSource
, por lo que no se capturará la consulta SQL completa.
Cada evento de solicitud está asociado a las llamadas de dependencia, las excepciones y otros eventos de los que se realiza un seguimiento mientras se procesa la solicitud. Por lo tanto, si algunas solicitudes no tienen un buen rendimiento, puede averiguar si se debe a respuestas lentas de una dependencia.
Seleccione la pestaña Rendimiento de la izquierda y seleccione la pestaña Dependencias de la parte superior.
Seleccione un nombre de dependencia de la sección General. Después de seleccionar una dependencia, muestra un gráfico de la distribución de esa dependencia de duraciones.
Seleccione el botón Ejemplos en la parte inferior derecha. A continuación, haga clic en un ejemplo para ver los detalles de transacción de un extremo a otro.
El Generador de perfiles de .NET realiza un seguimiento de las llamadas HTTP al sitio activo y muestra las funciones del código que tardaron más tiempo.
Las solicitudes con error también podrían estar asociadas a llamadas a dependencias con errores.
Seleccione la pestaña Errores y, a continuación, seleccione la pestaña Dependencias en la parte superior.
Aquí verá el recuento de dependencias con errores. Para obtener más información sobre una repetición errónea, seleccione un nombre de dependencia en la tabla inferior. Seleccione el botón Dependencias situado en la parte inferior derecha para ver los detalles de transacción de un extremo a otro.
Puede realizar un seguimiento de las dependencias en el lenguaje de consulta de Kusto. Estos son algunos ejemplos.
Búsqueda de llamadas de dependencia con errores:
dependencies | where success != "True" | take 10
Búsqueda de llamadas AJAX:
dependencies | where client_Type == "Browser" | take 10
Búsqueda de llamadas de dependencia asociadas a solicitudes:
dependencies
| where timestamp > ago(1d) and client_Type != "Browser"
| join (requests | where timestamp > ago(1d))
on operation_Id
Búsqueda de llamadas AJAX asociadas a vistas de página:
dependencies
| where timestamp > ago(1d) and client_Type == "Browser"
| join (browserTimings | where timestamp > ago(1d))
on operation_Id
Esta sección proporciona respuestas a preguntas comunes.
Las llamadas de dependencia con errores tienen el campo success
establecido en False. El módulo DependencyTrackingTelemetryModule
no notifica ExceptionTelemetry
. El modelo de datos completo para la dependencia se describe en Modelo de datos de telemetría de Application Insights.
Use este código:
dependencies
| extend E2EIngestionLatency = ingestion_time() - timestamp
| extend TimeIngested = ingestion_time()
En la vista de consulta de Log Analytics, timestamp
representa el momento en que se inició la llamada a TrackDependency(), que se produjo inmediatamente después de recibir la respuesta de la llamada de dependencia. Para calcular la hora de inicio de la llamada de dependencia, debería tomar timestamp
y restarle el valor de duration
registrado para la llamada de dependencia.
El seguimiento de dependencias en Application Insights no incluye cuerpos de respuesta de registro, ya que generaría demasiada telemetría para la mayoría de las aplicaciones.
Como todos los SDK de Application Insights, el módulo de recolección de dependencias también es de código abierto. Puede leer y contribuir al código o notificar sobre problemas en el repositorio oficial de GitHub.
A continuación encontrará la lista de las llamadas de dependencia admitida actualmente que se detectan automáticamente como dependencias sin requerir ninguna modificación adicional en el código de la aplicación. Estas dependencias se visualizan en el Mapa de aplicación de Application Insights y las vistas de Diagnóstico de transacciones. Si la dependencia no se encuentra en la lista, todavía puede realizar un seguimiento manual con una llamada a TrackDependency .
Marcos de trabajo de aplicaciones | Versiones |
---|---|
WebForms de ASP.NET | 4.5+ |
ASP.NET MVC | 4+ |
WebAPI de ASP.NET | 4.5+ |
ASP.NET Core | 1.1+ |
Bibliotecas de comunicaciones | |
HttpClient | 4.5+, .NET Core 1.1+ |
SqlClient | .NET Core 1.0+, NuGet 4.3.0 |
Microsoft.Data.SqlClient | 1.1.0: versión estable más reciente. (Consulte la nota siguiente). |
SDK de cliente de Event Hubs | 1.1.0 |
SDK de cliente de Service Bus | 7.0.0 |
Clientes de Storage | |
ADO.NET | 4.5+ |
Nota
Hay un problema conocido con versiones anteriores de Microsoft.Data.SqlClient. Se recomienda usar la versión 1.1.0 o posterior para mitigar este problema. Entity Framework Core no necesariamente se distribuye con la versión estable más reciente de Microsoft.Data.SqlClient, por lo que se recomienda confirmar que está usando al menos la versión 1.1.0 para evitar este problema.
Consulte la lista de dependencias recopiladas automáticamente de Java para Application Insights.
Una lista de los módulos compatible más recientes se mantiene aquí.
Bibliotecas de comunicaciones | Versiones |
---|---|
XMLHttpRequest | All |
Eventos
Cree aplicaciones inteligentes
17 mar, 9 p.m. - 21 mar, 10 a.m.
Únete a la serie de encuentros para crear soluciones de IA escalables basadas en casos de uso del mundo real con otros desarrolladores y expertos.
Regístrese ahoraFormación
Ruta de aprendizaje
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
Documentación
API de Application Insights para eventos y métricas personalizados - Azure Monitor
Inserte unas cuantas líneas de código en su aplicación de dispositivo o de escritorio, página web o servicio, para realizar el seguimiento del uso y diagnosticar problemas.
Aprenda a realizar el seguimiento de las operaciones personalizadas con el SDK de .NET de Azure Application Insights.
Filtro y preprocesamiento en el SDK de Application Insights - Azure Monitor
Escriba procesadores e inicializadores de telemetría para que el SDK filtre o agregue propiedades a los datos antes de enviar la telemetría al portal de Application Insights.