Compartir a través de


Métricas basadas en registros de Application Insights

Las métricas basadas en registros de Application Insights le permiten analizar el estado de las aplicaciones supervisadas, crear paneles eficaces y configurar alertas. Existen dos tipos de métricas:

Dado que las métricas estándar se agregan previamente durante la recopilación, tienen un mejor rendimiento en el momento de la consulta. Esto las convierte en una opción mejor para los paneles y las alertas en tiempo real. Las métricas basadas en registros tienen más dimensiones, lo que las convierte en la mejor opción para el análisis de datos y los diagnósticos ad hoc. Use el selector del espacio de nombres para cambiar entre las métricas basadas en registros y las métricas estándar en el explorador de métricas.

Interpretación y uso de consultas de este artículo

En este artículo se enumeran las métricas con las agregaciones y dimensiones compatibles. Los detalles sobre las métricas basadas en registros incluyen las instrucciones de consulta de Kusto subyacentes. Para mayor comodidad, cada consulta usa valores predeterminados para la granularidad del tiempo, el tipo de gráfico y, a veces, para dividir la dimensión, lo que simplifica el uso de la consulta en Log Analytics sin necesidad de modificarla.

Cuando se traza la misma métrica en el explorador de métricas, no hay valores predeterminados: la consulta se ajusta dinámicamente en función de la configuración del gráfico:

  • El Intervalo de tiempo seleccionado se traduce en un una cláusula where timestamp... adicional para seleccionar solo los eventos del intervalo de tiempo seleccionado. Por ejemplo, en un gráfico que muestra los datos de las últimas 24 horas, la consulta incluye | where timestamp > ago(24 h).

  • La Granularidad de tiempo seleccionada se pone en la cláusula final.summarize ... by bin(timestamp, [time grain]) .

  • Todas las dimensiones de Filtro seleccionadas se traducen en cláusulas where adicionales.

  • La dimensión Split chart (Dividir gráfico) se traduce en una propiedad de resumen adicional. Por ejemplo, si divide el gráfico por ubicación y realiza un trazado usando una granularidad de tiempo de cinco minutos, la cláusula summarize se resume como ... by bin(timestamp, 5 m), location.

Nota

Si no está familiarizado con el lenguaje de consulta de Kusto, comience por copiar y pegar las instrucciones de Kusto en el panel de consulta de Log Analytics sin realizar ninguna modificación. Haga clic en Ejecutar para ver el gráfico básico. Cuando empiece a comprender la sintaxis del lenguaje de consulta, podrá comenzar a realizar pequeñas modificaciones y ver el impacto del cambio. La exploración de sus propios datos es una excelente manera de comenzar a obtener toda la eficacia de Log Analytics y Azure Monitor.

Métricas de disponibilidad

Las métricas de la categoría Disponibilidad le permiten ver el estado de la aplicación web, tal y como se observa en los puntos de todo el mundo. Configure las pruebas de disponibilidad para empezar a usar las métricas de esta categoría.

Disponibilidad (availabilityResults/availabilityPercentage)

La métrica Disponibilidad muestra el porcentaje de las series de pruebas web que no detectaron ningún problema. El valor mínimo posible es 0, que indica que se han producido errores en todas las series de pruebas web. El valor de 100 significa que todas las series de pruebas web superaron los criterios de validación.

Unidad de medida Agregaciones compatibles Dimensiones compatibles
Porcentaje Average Ubicación de ejecución, nombre de prueba
availabilityResults 
| summarize sum(todouble(success == 1) * 100) / count() by bin(timestamp, 5m), location
| render timechart

Duración de la prueba de disponibilidad (availabilityResults/duration)

La métrica Duración de la prueba de disponibilidad muestra cuánto tiempo tardó en ejecutarse la prueba web. En el caso de las pruebas web de varios pasos, la métrica refleja el tiempo total de ejecución de todos los pasos.

Unidad de medida Agregaciones compatibles Dimensiones compatibles
Milisegundos Promedio, mín., máx. Ubicación de ejecución, nombre de prueba, resultado de prueba
availabilityResults
| where notempty(duration)
| extend availabilityResult_duration = iif(itemType == 'availabilityResult', duration, todouble(''))
| summarize sum(availabilityResult_duration)/sum(itemCount) by bin(timestamp, 5m), location
| render timechart

Pruebas de disponibilidad (availabilityResults/count)

La métrica de las Pruebas de disponibilidad refleja el recuento de las series de pruebas web de Azure Monitor.

Unidad de medida Agregaciones compatibles Dimensiones compatibles
Count Count Ubicación de ejecución, nombre de prueba, resultado de prueba
availabilityResults
| summarize sum(itemCount) by bin(timestamp, 5m)
| render timechart

Métricas del explorador

El SDK de JavaScript de Application Insights recopila las métricas de explorador de los exploradores de los usuarios finales reales. Proporcionan una gran información sobre la experiencia de los usuarios con la aplicación web. Normalmente, no se muestrean las métricas del explorador, lo que significa que proporcionan una mayor precisión de los números de uso en comparación con las métricas del lado servidor, que podrían sesgarse con el muestreo.

Nota

Para recopilar las métricas del explorador, la aplicación debe estar instrumentada con el SDK de JavaScript para Application Insights.

Tiempo de carga de página del explorador (browserTimings/totalDuration)

Tiempo que transcurre entre la solicitud del usuario hasta que se cargan el DOM, las hojas de estilo, los scripts y las imágenes.

Unidad de medida Agregaciones compatibles Dimensiones preagregadas
Milisegundos Promedio, mín., máx. None
browserTimings
| where notempty(totalDuration)
| extend _sum = totalDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart

Tiempo de procesamiento del cliente (browserTiming/processingDuration)

Tiempo transcurrido entre la recepción del último byte de un documento hasta que se carga el DOM. Todavía se pueden procesar solicitudes asincrónicas.

Unidad de medida Agregaciones compatibles Dimensiones preagregadas
Milisegundos Promedio, mín., máx. None
browserTimings
| where notempty(processingDuration)
| extend _sum = processingDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum)/sum(_count) by bin(timestamp, 5m)
| render timechart

Tiempo de conexión de red de carga de página (browserTimings/networkDuration)

Tiempo transcurrido entre la solicitud del usuario y la conexión de red. Incluye la búsqueda de DNS y la conexión de transporte.

Unidad de medida Agregaciones compatibles Dimensiones preagregadas
Milisegundos Promedio, mín., máx. None
browserTimings
| where notempty(networkDuration)
| extend _sum = networkDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart

Tiempo de respuesta de recepción (browserTimings/receiveDuration)

Tiempo transcurrido entre el primer y el último byte, o hasta la desconexión.

Unidad de medida Agregaciones compatibles Dimensiones preagregadas
Milisegundos Promedio, mín., máx. None
browserTimings
| where notempty(receiveDuration)
| extend _sum = receiveDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart

Hora de envío de la solicitud (browserTimings/sendDuration)

Tiempo transcurrido entre la conexión de red y la recepción del primer byte.

Unidad de medida Agregaciones compatibles Dimensiones preagregadas
Milisegundos Promedio, mín., máx. None
browserTimings
| where notempty(sendDuration)
| extend _sum = sendDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart

Métricas de errores

Las métricas de Errores muestran problemas con el procesamiento de solicitudes, las llamadas de dependencia y las excepciones producidas.

Excepciones de explorador (exceptions/browser)

Esta métrica refleja el número de excepciones producidas a partir del código de aplicación que se ejecuta en el explorador. Solo se incluyen en la métrica las excepciones de las que se realiza un seguimiento con una llamada API de Application Insights trackException().

Unidad de medida Agregaciones compatibles Dimensiones preagregadas Notas
Count Count None La versión basada en registros usa la agregación Sum.
exceptions
| where notempty(client_Browser)
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

Errores de llamada de dependencia (dependencies/failed)

Cantidad de llamadas de dependencia con errores.

Unidad de medida Agregaciones compatibles Dimensiones preagregadas Notas
Count Count None La versión basada en registros usa la agregación Sum.
dependencies
| where success == 'False'
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

Excepciones (exceptions/count)

Cada vez que registra una excepción en Application Insights, se produce una llamada al método trackException() del SDK. La métrica de excepciones muestra la cantidad de excepciones registradas.

Unidad de medida Agregaciones compatibles Dimensiones preagregadas Notas
Count Count Nombre del rol en la nube, instancia de rol en la nube, tipo de dispositivo La versión basada en registros usa la agregación Sum.
exceptions
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

Solicitudes con error (requests/failed)

Recuento de solicitudes de servidor de las que se ha realizado un seguimiento y que se marcaron como errores. De forma predeterminada, el SDK de Application Insights marca automáticamente cada solicitud de servidor que devolvió el código de respuesta HTTP 5xx o 4xx como una solicitud con error. Para personalizar esta lógica, puede modificar la propiedad success del elemento de telemetría de la solicitud de un inicializador de telemetría personalizado.

Unidad de medida Agregaciones compatibles Dimensiones preagregadas Notas
Count Count Instancia de rol en la nube, nombre de rol en la nube, tráfico real o sintético, rendimiento de la solicitud, código de respuesta La versión basada en registros usa la agregación Sum.
requests
| where success == 'False'
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

Excepciones del servidor (exceptions/server)

Esta métrica muestra el número de excepciones de servidor.

Unidad de medida Agregaciones compatibles Dimensiones preagregadas Notas
Count Count Nombre del rol en la nube, instancia de rol en la nube La versión basada en registros usa la agregación Sum.
exceptions
| where isempty(client_Browser)
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

Contadores de rendimiento

Use las métricas de la categoría de Contadores de rendimiento para acceder a los contadores de rendimiento del sistema que recopila Application Insights.

Memoria disponible (performanceCounters/availableMemory)

performanceCounters
| where ((category == "Memory" and counter == "Available Bytes") or name == "availableMemory")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

Tasa de excepciones (performanceCounters/exceptionRate)

performanceCounters
| where ((category == ".NET CLR Exceptions" and counter == "# of Exceps Thrown / sec") or name == "exceptionRate")
| extend performanceCounter_value = iif(itemType == 'performanceCounter',value,todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

Tiempo de ejecución de la solicitud HTTP (performanceCounters/requestExecutionTime)

performanceCounters
| where ((category == "ASP.NET Applications" and counter == "Request Execution Time") or name == "requestExecutionTime")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

Frecuencia de solicitudes HTTP (performanceCounters/requestsPerSecond)

performanceCounters
| where ((category == "ASP.NET Applications" and counter == "Requests/Sec") or name == "requestsPerSecond")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

Solicitudes HTTP en la cola de la aplicación (performanceCounters/requestsInQueue)

performanceCounters
| where ((category == "ASP.NET Applications" and counter == "Requests In Application Queue") or name == "requestsInQueue")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

CPU de proceso (performanceCounters/processCpuPercentage)

La métrica muestra la cantidad de la capacidad total del procesador que usa el proceso que hospeda la aplicación supervisada.

Unidad de medida Agregaciones compatibles Dimensiones compatibles
Porcentaje Promedio, mín., máx. Instancia de rol en la nube
performanceCounters
| where ((category == "Process" and counter == "% Processor Time Normalized") or name == "processCpuPercentage")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

Nota

El intervalo de la métrica está entre 0 y 100 * n, donde n es el número de núcleos de CPU disponibles. Por ejemplo, el valor de métrica del 200 % podría representar el uso completo de dos núcleos de CPU o la mitad del uso de cuatro núcleos de CPU, y así sucesivamente. Process CPU Normalized es una métrica alternativa que recopilan muchos SDK que representa el mismo valor, pero lo divide por el número de núcleos de CPU disponibles. Por lo tanto, el intervalo de la métrica Process CPU Normalized (Procesar CPU normalizada) es de 0 a 100.

Tasa de E/S del proceso (performanceCounters/processIOBytesPerSecond)

Unidad de medida Agregaciones compatibles Dimensiones compatibles
Bytes por segundo Promedio, mín., máx. Instancia de rol en la nube
performanceCounters
| where ((category == "Process" and counter == "IO Data Bytes/sec") or name == "processIOBytesPerSecond")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

Bytes privados del proceso (performanceCounters/processPrivateBytes)

Cantidad de memoria no compartida que el proceso supervisado asignó para sus datos.

Unidad de medida Agregaciones compatibles Dimensiones compatibles
Bytes Promedio, mín., máx. Instancia de rol en la nube
performanceCounters
| where ((category == "Process" and counter == "Private Bytes") or name == "processPrivateBytes")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

Tiempo de procesador (performanceCounters/processorCpuPercentage)

Consumo de CPU de todos los procesos que se ejecutan en la instancia del servidor supervisado.

Unidad de medida Agregaciones compatibles Dimensiones compatibles
Porcentaje Promedio, mín., máx. Instancia de rol en la nube

Nota

La métrica de tiempo del procesador no está disponible para las aplicaciones hospedadas en Azure App Services. Use la métrica de la CPU de procesos para realizar un seguimiento del uso de la CPU de las aplicaciones web hospedadas en App Services.

performanceCounters
| where ((category == "Processor" and counter == "% Processor Time") or name == "processorCpuPercentage")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

Métricas del servidor

Llamadas de dependencia (dependencies/count)

Esta métrica está relacionada con el número de llamadas de dependencia.

dependencies
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

Duración de la dependencia (dependencies/duration)

Esta métrica hace referencia a la duración de las llamadas de dependencia.

dependencies
| where notempty(duration)
| extend dependency_duration = iif(itemType == 'dependency',duration,todouble(''))
| extend _sum = dependency_duration
| extend _count = itemCount
| extend _sum = _sum*_count
| summarize sum(_sum)/sum(_count) by bin(timestamp, 1m)
| render timechart

Solicitudes de servidor (requests/count)

Esta métrica refleja el número de solicitudes de servidor entrantes que recibió la aplicación web.

requests
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

Tiempo de respuesta del servidor (requests/duration)

Esta métrica refleja el tiempo que tardaron los servidores en procesar las solicitudes entrantes.

requests
| where notempty(duration)
| extend request_duration = iif(itemType == 'request', duration, todouble(''))
| extend _sum = request_duration
| extend _count = itemCount
| extend _sum = _sum*_count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 1m)
| render timechart

Métricas de uso

Tiempo de carga de la vista de página (pageViews/duration)

Esta métrica hace referencia a la cantidad de tiempo que tardaron en cargarse los eventos de PageView.

pageViews
| where notempty(duration)
| extend pageView_duration = iif(itemType == 'pageView', duration, todouble(''))
| extend _sum = pageView_duration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render barchart

Vistas de página (pageViews/count)

Recuento de eventos de PageView registrados con la API de Application Insights TrackPageView().

pageViews
| summarize sum(itemCount) by bin(timestamp, 1h)
| render barchart

Sesiones (sessions/count)

Esta métrica hace referencia al recuento de distintos identificadores de sesión.

union traces, requests, pageViews, dependencies, customEvents, availabilityResults, exceptions, customMetrics, browserTimings
| where notempty(session_Id)
| summarize dcount(session_Id) by bin(timestamp, 1h)
| render barchart

Seguimientos (traces/count)

Recuento de instrucciones de seguimiento registradas con la llamada API de Application Insights TrackTrace().

traces
| summarize sum(itemCount) by bin(timestamp, 1h)
| render barchart

Usuarios (users/count)

Número de usuarios distintos que han tenido acceso a la aplicación. La precisión de esta métrica puede verse afectada significativamente mediante el uso del filtrado y el muestreo de telemetría.

union traces, requests, pageViews, dependencies, customEvents, availabilityResults, exceptions, customMetrics, browserTimings
| where notempty(user_Id)
| summarize dcount(user_Id) by bin(timestamp, 1h)
| render barchart

Usuarios, autenticados (users/authenticated)

Número de usuarios distintos que se han autenticado en la aplicación.

union traces, requests, pageViews, dependencies, customEvents, availabilityResults, exceptions, customMetrics, browserTimings
| where notempty(user_AuthenticatedId)
| summarize dcount(user_AuthenticatedId) by bin(timestamp, 1h)
| render barchart

Acceso a todos los datos directamente con la API REST de Application Insights

La API REST de Application Insights permite la recuperación mediante programación de métricas basadas en registros. También incluye un parámetro opcional "ai.include-query-payload" que, cuando se agrega a una cadena de consulta, pide a la API que devuelva no solo los datos de timeseries, sino también la instrucción Lenguaje de consulta Kusto (KQL) que se usa para capturarlos. Este parámetro puede ser especialmente beneficioso para los usuarios que pretenden comprender la conexión entre eventos sin procesar en Log Analytics y la métrica basada en registros resultante.

Para acceder a los datos directamente, pase el parámetro "ai.include-query-payload" a la API de Application Insights en una consulta mediante KQL.

api.applicationinsights.io/v1/apps/DEMO_APP/metrics/users/authenticated?api_key=DEMO_KEY&prefer=ai.include-query-payload

A continuación se muestra un ejemplo de una instrucción KQL de devolución para la métrica "Usuarios autenticados". (En este ejemplo, "users/authenticated" es el identificador de métrica).

output
{
    "value": {
        "start": "2024-06-21T09:14:25.450Z",
        "end": "2024-06-21T21:14:25.450Z",
        "users/authenticated": {
            "unique": 0
        }
    },
    "@ai.query": "union (traces | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (requests | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (pageViews | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (dependencies | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (customEvents | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (availabilityResults | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (exceptions | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (customMetrics | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (browserTimings | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)) | where notempty(user_AuthenticatedId) | summarize ['users/authenticated_unique'] = dcount(user_AuthenticatedId)"
}