Introducción a los contadores de eventos
EventCounter
es el mecanismo de .NET/.NET Core para publicar y consumir contadores o estadísticas. Los contadores de eventos se admiten en todas las plataformas de sistema operativo (Windows, Linux y macOS). Puede considerarse un equivalente multiplataforma de los contadores de rendimiento que solo se admiten en los sistemas Windows.
Aunque los usuarios puedan publicar cualquier EventCounters
personalizado que necesiten, .NET publicará un conjunto de estos contadores de forma predeterminada. En este documento se recorren los pasos necesarios para recopilar y ver EventCounters
(definidos por el sistema o por el usuario) en Azure Application Insights.
Uso de Application Insights para recopilar contadores de eventos
Application Insights admite la recopilación de EventCounters
con su EventCounterCollectionModule
, que forma parte del paquete NuGet Microsoft.ApplicationInsights.EventCounterCollector lanzado recientemente. EventCounterCollectionModule
se habilita automáticamente al usar AspNetCore o WorkerService. EventCounterCollectionModule
recopila contadores con una frecuencia de recopilación no configurable de 60 segundos. No se requieren permisos especiales para recopilar contadores de eventos.
Contadores predeterminados recopilados
A partir de la versión 2.15.0 del SDK de AspNetCore o SDK de WorkerService, no se recopila ningún contador de forma predeterminada. El propio módulo está habilitado, por lo que los usuarios simplemente pueden agregar los contadores deseados para recopilarlos.
Para obtener una lista de los contadores conocidos que se hayan publicado en el Runtime de .NET, consulte el documento de los Contadores disponibles.
Personalización de los contadores que se van a recopilar
El ejemplo siguiente muestra cómo agregar/quitar contadores. Esta personalización se llevaría a cabo en el método ConfigureServices
de la aplicación después de que se haya habilitado la recopilación de telemetría de Application Insights mediante AddApplicationInsightsTelemetry()
o AddApplicationInsightsWorkerService()
. A continuación se muestra un ejemplo de código de una aplicación ASP.NET Core. Para otros tipos de aplicaciones, consulte este documento.
using Microsoft.ApplicationInsights.Extensibility.EventCounterCollector;
using Microsoft.Extensions.DependencyInjection;
public void ConfigureServices(IServiceCollection services)
{
//... other code...
// The following code shows how to configure the module to collect
// additional counters.
services.ConfigureTelemetryModule<EventCounterCollectionModule>(
(module, o) =>
{
// This removes all default counters, if any.
module.Counters.Clear();
// This adds a user defined counter "MyCounter" from EventSource named "MyEventSource"
module.Counters.Add(new EventCounterCollectionRequest("MyEventSource", "MyCounter"));
// This adds the system counter "gen-0-size" from "System.Runtime"
module.Counters.Add(new EventCounterCollectionRequest("System.Runtime", "gen-0-size"));
}
);
}
Deshabilitación del módulo de recopilación EventCounter
EventCounterCollectionModule
se puede deshabilitar mediante ApplicationInsightsServiceOptions
. A continuación se muestra un ejemplo de cómo utilizar el SDK de ASP.NET Core.
using Microsoft.ApplicationInsights.AspNetCore.Extensions;
using Microsoft.Extensions.DependencyInjection;
public void ConfigureServices(IServiceCollection services)
{
//... other code...
var applicationInsightsServiceOptions = new ApplicationInsightsServiceOptions();
applicationInsightsServiceOptions.EnableEventCounterCollectionModule = false;
services.AddApplicationInsightsTelemetry(applicationInsightsServiceOptions);
}
También se puede usar un enfoque similar para el SDK de WorkerService, pero se debe cambiar el espacio de nombres tal y como se muestra en el ejemplo siguiente.
using Microsoft.ApplicationInsights.WorkerService;
using Microsoft.Extensions.DependencyInjection;
var applicationInsightsServiceOptions = new ApplicationInsightsServiceOptions();
applicationInsightsServiceOptions.EnableEventCounterCollectionModule = false;
services.AddApplicationInsightsTelemetryWorkerService(applicationInsightsServiceOptions);
Los contadores de eventos en el explorador de métricas
Para ver las métricas de EventCounter en el explorador de métricas, seleccione el recurso de Application Insights y elija las métricas basadas en registros como espacio de nombres de métrica. Después, las métricas de EventCounter se mostrarán en la categoría Custom.
Contadores de eventos en Analytics
También puede buscar y mostrar informes de los contadores de eventos en Analytics, en la tabla customMetrics.
Por ejemplo, ejecute la siguiente consulta para ver qué contadores se recopilan y están disponibles para consulta:
customMetrics | summarize avg(value) by name
Para un gráfico de un contador específico (por ejemplo, ThreadPool Completed Work Item Count
) en el período más reciente, ejecute la consulta siguiente.
customMetrics
| where name contains "System.Runtime|ThreadPool Completed Work Item Count"
| where timestamp >= ago(1h)
| summarize avg(value) by cloud_RoleInstance, bin(timestamp, 1m)
| render timechart
Al igual que otros datos de telemetría, customMetrics también tiene una columna cloud_RoleInstance
que indica la identidad de la instancia del servidor host en el que se ejecuta la aplicación. La consulta anterior muestra el valor del contador por instancia y se puede usar para comparar el rendimiento de las distintas instancias del servidor.
Alertas
Al igual que otras métricas, puede establecer una alerta para advertirle si un contador de eventos supera un límite especificado. Abra el panel de alertas y haga clic en Agregar alerta.
Preguntas más frecuentes
¿Puedo ver los contadores de eventos en Live Metrics?
A día de hoy, Live Metrics no muestra los contadores de eventos. Para ver la telemetría, use el explorador de métricas o el análisis.
He habilitado Application Insights en el portal de aplicaciones web de Azure, pero no veo contadores de eventos.
La extensión de Application Insights para ASP.NET Core aún no admite esta característica. Este documento se actualizará cuando se admita la característica.