Muestreo de Application Insights

Completado

El muestreo es una característica de Application Insights que permite reducir el tráfico de telemetría, los costos de datos y los costos de almacenamiento, a la vez que conserva un análisis estadísticamente correcto de los datos de la aplicación. El muestreo también le ayuda a evitar que Application Insights limite los datos de telemetría. El filtro de muestreo selecciona los elementos relacionados para que pueda desplazarse entre ellos cuando realiza investigaciones de diagnóstico.

En general, para la mayoría de las aplicaciones pequeñas y medianas no es necesario realizar muestreos. La información de diagnóstico más útil y las estadísticas más precisas se obtienen mediante la recopilación de datos en todas las actividades del usuario.

Las principales ventajas del muestreo son:

  • El servicio de Application Insights descarta ("limita") puntos de datos cuando la aplicación envía un número elevado de datos de telemetría en un intervalo de tiempo corto. El muestreo reduce la probabilidad de que se produzca una limitación en la aplicación.
  • Le permite mantenerse dentro de la cuota de puntos de datos de su plan de tarifa.
  • Le permite reducir el tráfico de red de la recopilación de telemetría.

Cómo funciona el muestreo

El algoritmo de muestreo decide qué elementos de telemetría se van a eliminar y cuáles conservar. Es cierto si el muestreo lo realiza el SDK o el servicio de Application Insights. La decisión del muestreo se basa en varias reglas que tienen como objetivo conservar intactos todos los puntos de datos interrelacionados, manteniendo una experiencia de diagnóstico en Application Insights que sea práctica y confiable, incluso con un conjunto reducido de datos. Por ejemplo, si la aplicación tiene una solicitud con error incluida en una muestra, se conservan los elementos de telemetría adicionales (como la excepción y los seguimientos registrados para esta solicitud). El muestreo los mantiene o los elimina en conjunto. Como resultado, al examinar los detalles de solicitud en Application Insights, siempre puede ver la solicitud junto con sus elementos de telemetría asociados.

La decisión de muestreo se basa en el id. de operación de la solicitud, lo que significa que todos los elementos de telemetría que pertenecen a una operación determinada se conservan o se descartan. Para los elementos de telemetría que no tienen establecido un identificador de operación (por ejemplo, los elementos de telemetría notificados desde subprocesos asincrónicos sin contexto HTTP), el muestreo simplemente captura un porcentaje de elementos de telemetría de cada tipo.

Al presentarle la telemetría, el servicio de Application Insights ajusta las métricas con el mismo porcentaje de muestreo que se usó en el momento de la recopilación, para compensar por los puntos de datos que faltan. Por lo tanto, al examinar la telemetría en Application Insights, los usuarios ven aproximaciones estadísticamente correctas que están muy próximas a los números reales.

La precisión de la aproximación depende en gran medida del porcentaje de muestreo configurado. También, la precisión aumenta en las aplicaciones que administran un gran volumen de solicitudes similares de muchos usuarios. Por otro lado, para las aplicaciones que no funcionan con una carga significativa, el muestreo no es necesario ya que estas aplicaciones normalmente pueden enviar toda su telemetría manteniéndose dentro de la cuota, sin causar pérdida de datos por causa de la limitación.

Cuando los recuentos de métricas se presentan en el portal, se vuelven a normalizar para tener en cuenta el muestreo. De este modo, se minimizan los efectos en las estadísticas.

Tipos de muestreo

Hay tres métodos de muestreo diferentes:

  • El muestreo adaptable ajusta automáticamente el volumen de telemetría que se envía desde el SDK en la aplicación de ASP.NET/ASP.NET Core y desde Azure Functions. Este es el muestreo predeterminado cuando se usa el SDK de ASP.NET o ASP.NET Core. Actualmente, el muestreo adaptable solo está disponible para la telemetría del lado servidor de ASP.NET/ASP.NET Core y para Azure Functions.
  • El muestreo de frecuencia fija reduce el volumen de telemetría que se envía desde el servidor ASP.NET, ASP.NET Core o Java y desde los exploradores de los usuarios. El usuario establece la frecuencia. El cliente y el servidor sincronizarán su muestreo por lo que, en Búsqueda, puede desplazarse entre las solicitudes y las vistas de página relacionadas.
  • El muestreo de ingesta se produce en el punto de conexión de servicio de Application Insights. Lo que hace es descartar algunos de los datos de telemetría que llegan desde su aplicación según la frecuencia de muestreo establecida. Aunque no reduce el tráfico de telemetría enviado desde su aplicación, le ayuda a mantenerse dentro de su cuota mensual. La principal ventaja del muestreo de ingesta es que puede establecer la frecuencia de muestreo sin volver a implementar la aplicación. El muestreo de ingesta funciona de manera uniforme para todos los servidores y clientes, pero no se aplica cuando están en funcionamiento otros tipos de muestreo.

Si se habilitan los métodos de muestreo de frecuencia fija o adaptable para un tipo de telemetría, el muestreo de ingesta queda deshabilitado para esa telemetría. Pero los tipos de telemetría que se excluyen del muestreo en el nivel de SDK siguen sujetos al muestreo de ingesta a la frecuencia establecida en el portal.