Eventos
Cree aplicaciones y agentes de IA
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.
El muestreo es una característica de Application Insights. Se trata de la manera recomendada de reducir el tráfico de telemetría, los costos de datos y los costos de almacenamiento, conservando al mismo tiempo un análisis estadísticamente correcto de los datos de las aplicaciones. 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.
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.
Nota
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.
OperationId
.summarize sum(itemCount)
.En la tabla siguiente se resumen los tipos de muestreo disponibles para cada SDK y tipo de aplicación:
SDK de Application Insights | Se admite el muestreo adaptable | Se admite el muestreo de frecuencia fija | Se admite el muestreo de ingesta |
---|---|---|---|
ASP.NET | Sí (activado de forma predeterminada) | Sí | Solo si no hay otro muestreo en vigor |
ASP.NET Core | Sí (activado de forma predeterminada) | Sí | Solo si no hay otro muestreo en vigor |
Azure Functions | Sí (activado de forma predeterminada) | No | Solo si no hay otro muestreo en vigor |
Java | No | Sí | Solo si no hay otro muestreo en vigor |
JavaScript | No | Sí | Solo si no hay otro muestreo en vigor |
Node.JS | No | Sí | Solo si no hay otro muestreo en vigor |
Python | No | Sí | Solo si no hay otro muestreo en vigor |
Todos los demás | No | No | Sí |
Nota
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 algoritmo de muestreo decide qué elementos de telemetría quitar y cuáles conservar, ya realice el muestreo el SDK o el servicio de Application Insights. Sigue las reglas para mantener intactos todos los puntos de datos interrelacionados, lo que garantiza que Application Insights proporciona una experiencia de diagnóstico accionable y confiable, incluso con menos datos. Por ejemplo, si un ejemplo incluye una solicitud con error, conserva todos los elementos de telemetría relacionados, como excepciones y seguimientos. De esta manera, al examinar los detalles de solicitud en Application Insights, siempre se ve la solicitud y su telemetría asociada.
La decisión de muestreo se basa en el identificador 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 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.
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. 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 sincronizan 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.
Importante
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.
Influye en el volumen de telemetría enviado desde su aplicación de servidor web hasta el punto de conexión del servicio de Application Insights.
Sugerencia
El muestreo adaptable está habilitado de forma predeterminada cuando se usa el SDK de ASP.NET o el SDK de ASP.NET Core y también está habilitado de forma predeterminada para Azure Functions.
El volumen se ajusta automáticamente para permanecer dentro del límite de velocidad de MaxTelemetryItemsPerSecond
. Si la aplicación genera una telemetría baja, como durante la depuración o el uso bajo, no quita los elementos siempre y cuando el volumen permanezca en MaxTelemetryItemsPerSecond
. A medida que aumenta el volumen de telemetría, ajusta la frecuencia de muestreo para alcanzar el volumen de destino. Este ajuste se actualiza a intervalos regulares y se basa en la media móvil de la velocidad de transmisión de salida.
Para lograr el volumen objetivo, se descartan algunos de los datos de telemetría generados. Pero, al igual que otros tipos de muestreo, el algoritmo conserva los elementos de telemetría relacionados. Por ejemplo, cuando se inspeccione la telemetría en Búsqueda, puede buscar la solicitud relacionada con una excepción determinada.
Los recuentos de métricas, como la tasa de solicitudes y la tasa de excepciones, se ajustan para compensar la frecuencia de muestreo, de modo que indican valores aproximados en el explorador de métricas.
Nota
Esta sección se aplica a las aplicaciones de ASP.NET, no a las aplicaciones de ASP.NET Core. Obtenga información sobre cómo configurar el muestreo adaptable para aplicaciones de ASP.NET Core más adelante en este documento.
En ApplicationInsights.config
, puede ajustar varios parámetros en el nodo AdaptiveSamplingTelemetryProcessor
. Las cifras que se muestran son los valores predeterminados:
<MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
La velocidad de destino de las operaciones lógicas que el algoritmo adaptativo pretende recopilar en cada host de servidor. Si la aplicación web se ejecuta en varios hosts, reduzca este valor para que se mantenga dentro de la velocidad objetivo de tráfico en el portal de Application Insights.
<EvaluationInterval>00:00:15</EvaluationInterval>
Intervalo en el que se vuelve a evaluar la velocidad actual de telemetría. La evaluación se realiza como una media móvil. Se recomienda acortar este intervalo si la telemetría experimenta ráfagas repentinas.
<SamplingPercentageDecreaseTimeout>00:02:00</SamplingPercentageDecreaseTimeout>
Cuando se cambia el valor del porcentaje de muestreo, se determina la rapidez con la que podemos reducir el porcentaje de muestreo para capturar menos datos.
<SamplingPercentageIncreaseTimeout>00:15:00</SamplingPercentageIncreaseTimeout>
Cuando se cambia el valor del porcentaje de muestreo, se dictamina lo pronto que podemos aumentar el porcentaje de muestreo para capturar más datos.
<MinSamplingPercentage>0.1</MinSamplingPercentage>
A medida que el porcentaje de muestreo varía, ¿cuál es el valor mínimo que se permite establecer?
<MaxSamplingPercentage>100.0</MaxSamplingPercentage>
A medida que el porcentaje de muestreo varía, ¿cuál es el valor máximo que se permite establecer?
<MovingAverageRatio>0.25</MovingAverageRatio>
En el cálculo de la media móvil, este valor especifica el peso que se debe asignar al valor más reciente. Use un valor igual o menor que 1. Los valores menores hacen que el algoritmo reaccione con menor agilidad a los cambios repentinos.
<InitialSamplingPercentage>100</InitialSamplingPercentage>
Cantidad de datos de telemetría que se muestrea cuando se ha iniciado la aplicación. No reduzca este valor durante la depuración.
<ExcludedTypes>type;type</ExcludedTypes>
Lista de tipos delimitados por punto y coma que no desea que estén sujetos a muestreo. Los tipos reconocidos son: Dependency
, Event
, Exception
, PageView
, Request
y Trace
. Se transmiten todos los datos de telemetría de los tipos especificados; los tipos no especificados se muestrean.
<IncludedTypes>type;type</IncludedTypes>
Una lista delimitada por puntos y coma de tipos que desea que estén sujetos a muestreo. Los tipos reconocidos son: Dependency
, Event
, Exception
, PageView
, Request
y Trace
. Los tipos especificados se muestrean, todos los datos de telemetría del resto de tipos siempre se transmiten.
Para desactivar el muestreo adaptable, elimine los nodos AdaptiveSamplingTelemetryProcessor
de ApplicationInsights.config
.
En lugar de establecer el parámetro de muestreo en el archivo .config
, puede establecer estos valores mediante programación.
Elimine todos los nodos AdaptiveSamplingTelemetryProcessor
del archivo .config
.
Use el siguiente fragmento de código para configurar el muestreo adaptable:
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.WindowsServer.Channel.Implementation;
using Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel;
// ...
var builder = TelemetryConfiguration.Active.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
// For older versions of the Application Insights SDK, use the following line instead:
// var builder = TelemetryConfiguration.Active.TelemetryProcessorChainBuilder;
// Enable AdaptiveSampling so as to keep overall telemetry volume to 5 items per second.
builder.UseAdaptiveSampling(maxTelemetryItemsPerSecond:5);
// If you have other telemetry processors:
builder.Use((next) => new AnotherProcessor(next));
builder.Build();
También puede ajustar la frecuencia de muestreo para cada tipo de telemetría individualmente o incluso puede excluir determinados tipos del muestreo:
// The following configures adaptive sampling with 5 items per second, and also excludes Dependency telemetry from being subjected to sampling.
builder.UseAdaptiveSampling(maxTelemetryItemsPerSecond:5, excludedTypes: "Dependency");
Las aplicaciones de ASP.NET Core se pueden configurar en código o a través del archivo appsettings.json
. Para más información, consulte Configuración en ASP.NET Core.
El muestreo adaptable está habilitado de forma predeterminada para todas las aplicaciones de ASP.NET Core. Puede deshabilitar o personalizar el comportamiento de muestreo.
La característica predeterminada de muestreo se puede deshabilitar al agregar el servicio de Application Insights.
Agregue ApplicationInsightsServiceOptions
después del método WebApplication.CreateBuilder()
en el archivo Program.cs
:
var builder = WebApplication.CreateBuilder(args);
var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
aiOptions.EnableAdaptiveSampling = false;
builder.Services.AddApplicationInsightsTelemetry(aiOptions);
var app = builder.Build();
El código anterior deshabilita el muestreo adaptable. Siga los siguientes pasos para agregar el muestreo con más opciones de personalización.
Use los métodos de extensión siguientes de TelemetryProcessorChainBuilder
para personalizar el comportamiento de muestreo.
Importante
Si usa este método para configurar el muestreo, asegúrese de establecer la propiedad aiOptions.EnableAdaptiveSampling
en false
al llamar a AddApplicationInsightsTelemetry()
. Tras este cambio, debe seguir las instrucciones del bloque de código siguiente tal cual para volver a habilitar el muestreo adaptable con las personalizaciones en su lugar. Si no lo hace, puede producirse un exceso de ingesta de datos. Pruebe la configuración de muestreo siempre después de cambiarla y establezca un límite de datos diario adecuado para ayudar a controlar los costos.
using Microsoft.ApplicationInsights.AspNetCore.Extensions;
using Microsoft.ApplicationInsights.Extensibility;
var builder = WebApplication.CreateBuilder(args);
builder.Services.Configure<TelemetryConfiguration>(telemetryConfiguration =>
{
var telemetryProcessorChainBuilder = telemetryConfiguration.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
// Using adaptive sampling
telemetryProcessorChainBuilder.UseAdaptiveSampling(maxTelemetryItemsPerSecond: 5);
// Alternately, the following configures adaptive sampling with 5 items per second, and also excludes DependencyTelemetry from being subject to sampling:
// telemetryProcessorChainBuilder.UseAdaptiveSampling(maxTelemetryItemsPerSecond:5, excludedTypes: "Dependency");
telemetryProcessorChainBuilder.Build();
});
builder.Services.AddApplicationInsightsTelemetry(new ApplicationInsightsServiceOptions
{
EnableAdaptiveSampling = false,
});
var app = builder.Build();
Puedes personalizar otras configuraciones de muestreo utilizando la clase SamplingPercentageEstimatorSettings:
using Microsoft.ApplicationInsights.WindowsServer.Channel.Implementation;
telemetryProcessorChainBuilder.UseAdaptiveSampling(new SamplingPercentageEstimatorSettings
{
MinSamplingPercentage = 0.01,
MaxSamplingPercentage = 100,
MaxTelemetryItemsPerSecond = 5
}, null, excludedTypes: "Dependency");
Siga las instrucciones de esta página para configurar el muestreo adaptable para las aplicaciones que se ejecutan en Azure Functions.
El muestreo de frecuencia fija reduce el tráfico enviado desde el servidor web y los exploradores web. A diferencia del muestreo adaptable, reduce la telemetría a una tasa fija que usted decide. El muestreo de frecuencia fija está disponible para las aplicaciones de ASP.NET, ASP.NET Core, Java y Python.
Al igual que otras técnicas, también conserva los elementos relacionados. También sincroniza el muestreo de cliente y servidor para que se conserven los elementos relacionados. Por ejemplo, al examinar una vista de página en Búsqueda, puede encontrar las solicitudes de servidor relacionadas.
En el explorador de métricas, las tasas, como los recuentos de solicitudes y de excepciones, se multiplican por un factor para compensar la frecuencia de muestreo, de modo que sean los más correctas posible.
Deshabilite el muestreo adaptable: En ApplicationInsights.config
, elimine o marque como comentario el nodo AdaptiveSamplingTelemetryProcessor
.
<TelemetryProcessors>
<!-- Disabled adaptive sampling:
<Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
<MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
</Add>
-->
Habilite el módulo de muestreo de frecuencia fija. Agregue este fragmento de código a ApplicationInsights.config
:
En este ejemplo, SamplingPercentage es 20, por lo que se muestrea el 20 % de todos los elementos. Los valores del Explorador de métricas se multiplican por (100/20) = 5 para compensar.
<TelemetryProcessors>
<Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.SamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
<!-- Set a percentage close to 100/N where N is an integer. -->
<!-- E.g. 50 (=100/2), 33.33 (=100/3), 25 (=100/4), 20, 1 (=100/100), 0.1 (=100/1000) -->
<SamplingPercentage>20</SamplingPercentage>
</Add>
</TelemetryProcessors>
Como alternativa, en lugar de establecer el parámetro de muestreo en el archivo ApplicationInsights.config
, puede establecer estos valores mediante programación:
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel;
// ...
var builder = TelemetryConfiguration.Active.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
// For older versions of the Application Insights SDK, use the following line instead:
// var builder = TelemetryConfiguration.Active.TelemetryProcessorChainBuilder;
builder.UseSampling(10.0); // percentage
// If you have other telemetry processors:
builder.Use((next) => new AnotherProcessor(next));
builder.Build();
Deshabilite el muestreo adaptable:
Se pueden realizar cambios después del método WebApplication.CreateBuilder()
mediante ApplicationInsightsServiceOptions
:
var builder = WebApplication.CreateBuilder(args);
var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
aiOptions.EnableAdaptiveSampling = false;
builder.Services.AddApplicationInsightsTelemetry(aiOptions);
var app = builder.Build();
Habilite el módulo de muestreo de frecuencia fija.
Los cambios se pueden realizar después del método WebApplication.CreateBuilder()
:
var builder = WebApplication.CreateBuilder(args);
builder.Services.Configure<TelemetryConfiguration>(telemetryConfiguration =>
{
var builder = telemetryConfiguration.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
// Using fixed rate sampling
double fixedSamplingPercentage = 10;
builder.UseSampling(fixedSamplingPercentage);
builder.Build();
});
builder.Services.AddApplicationInsightsTelemetry(new ApplicationInsightsServiceOptions
{
EnableAdaptiveSampling = false,
});
var app = builder.Build();
De manera predeterminada, no hay ningún muestreo habilitado ni en la instrumentación automática y ni en el SDK de Java. Actualmente se admiten la instrumentación automática de Java, las invalidaciones de muestreo y el muestreo de frecuencia fija. En Java no se admite el muestreo adaptable.
Nota
Para el porcentaje de muestreo, elija un porcentaje que esté cerca de 100/N, donde N es un número entero. Actualmente el muestreo no es compatible con otros valores.
Instrumente la aplicación con los exportadores de Azure Monitor de OpenCensus más recientes.
Nota
El muestreo de frecuencia fija no está disponible para el exportador de métricas. Esto significa que las métricas personalizadas son los únicos tipos de telemetría en los que NO se puede configurar el muestreo. El exportador de métricas enviará toda la telemetría de la que realice el seguimiento.
Puede especificar un elemento sampler
como parte de la configuración de Tracer
. Si no se proporciona ningún elemento sampler explícito, se usa de forma predeterminada ProbabilitySampler
. ProbabilitySampler
usaría una frecuencia de 1/10000 de forma predeterminada, lo que significa que se envía a Application Insights una de cada 10,000 solicitudes. Si desea especificar una frecuencia de muestreo, consulte los detalles siguientes.
Para especificar la frecuencia de muestreo, asegúrese de que Tracer
especifica un elemento sampler con una frecuencia de muestreo entre 0,0 y 1,0, ambos inclusive. Una velocidad de muestreo de 1,0 representa el 100 %, lo que significa que todas las solicitudes se envían como datos de telemetría a Application Insights.
tracer = Tracer(
exporter=AzureExporter(
instrumentation_key='00000000-0000-0000-0000-000000000000',
),
sampler=ProbabilitySampler(1.0),
)
Puede configurar el muestreo de frecuencia fija para AzureLogHandler
mediante la modificación del argumento opcional logging_sampling_rate
. Si no se proporciona ningún argumento, se usa una frecuencia de muestreo de 1.0. Una velocidad de muestreo de 1,0 representa el 100 %, lo que significa que todas las solicitudes se envían como datos de telemetría a Application Insights.
handler = AzureLogHandler(
instrumentation_key='00000000-0000-0000-0000-000000000000',
logging_sampling_rate=0.5,
)
Las páginas web basadas en JavaScript se pueden configurar para usar Application Insights. Los datos de telemetría se envían desde la aplicación cliente que se ejecuta en el explorador del usuario y las páginas se pueden hospedar en cualquier servidor.
Cuando configure las páginas web basadas en JavaScript para Application Insights, modifique el fragmento de código de JavaScript que obtiene del portal de Application Insights.
Sugerencia
En aplicaciones de ASP.NET con JavaScript incluido, el fragmento de código suele ir en _Layout.cshtml
.
Inserte una línea como samplingPercentage: 10,
antes de la clave de instrumentación:
<script>
var appInsights = // ...
({
// Value must be 100/N where N is an integer.
// Valid examples: 50, 25, 20, 10, 5, 1, 0.1, ...
samplingPercentage: 10,
instrumentationKey: ...
});
window.appInsights = appInsights;
appInsights.trackPageView();
</script>
Nota
El 31 de marzo de 2025 finalizará la compatibilidad con la ingesta de claves de instrumentación. La ingesta de claves de instrumentación seguirá funcionando, pero la característica ya no recibirá actualizaciones ni soporte técnico. Transición a las cadenas de conexión para aprovechar las nuevas funcionalidades.
Para el porcentaje de muestreo, elija un porcentaje que esté cerca de 100/N, donde N es un número entero. Actualmente el muestreo no es compatible con otros valores.
El SDK de JavaScript del lado cliente participa en el muestreo de frecuencia fija junto con el SDK del lado servidor. Las páginas instrumentadas solo envían telemetría del cliente desde el mismo usuario para el que el SDK del servidor decidió incluir en el muestreo. Esta lógica está diseñada para mantener la integridad de la sesión de usuario entre las aplicaciones en el lado cliente y el lado servidor. Como resultado, a partir de cualquier elemento específico de telemetría en Application Insights, puede encontrar todos los demás elementos de telemetría para ese usuario o esa sesión y, en Buscar, puede desplazarse entre las vistas de página y las solicitudes relacionadas.
Si la telemetría del lado cliente y la del lado servidor no muestran muestras coordinadas:
El muestreo de ingesta funciona en el punto en el que la telemetría del servidor web, los exploradores y los dispositivos alcanzan el punto de conexión de servicio de Application Insights. Aunque no reduce el tráfico de telemetría enviado desde su aplicación, sí reduce la cantidad procesada y retenida (y cobrada) por Application Insights.
Utilice este tipo de muestreo si con frecuencia su aplicación sobrepasa su cuota mensual y no tiene la opción de usar ninguno de los tipos de muestreo basados en el SDK.
Establecer la frecuencia de muestreo en la página Uso y costos estimados:
Al igual que otros tipos de muestreo, el algoritmo conserva elementos de telemetría relacionados. Por ejemplo, cuando se inspeccione la telemetría en Búsqueda, puede buscar la solicitud relacionada con una excepción determinada. Los recuentos de métrica, como la tasa de solicitudes y la tasa de excepciones se mantienen correctamente.
El muestreo descarta determinados puntos de datos, lo que hace que no estén disponibles en ninguna característica de Application Insights como Exportación continua.
El muestreo de ingesta no funciona junto con el muestreo adaptable o el de frecuencia fija. El muestreo adaptable se activa automáticamente con el SDK de ASP.NET, el SDK de ASP.NET Core, en Azure App Service o con el agente de Application Insights. Cuando el punto de conexión de servicio de Application Insights recibe telemetría y detecta una frecuencia de muestreo inferior al 100 % (que indica el muestreo activo), omite cualquier frecuencia de muestreo de ingesta establecida.
Advertencia
El valor que se muestra en el icono del portal indica el valor que ha establecido para el muestreo de ingesta. Si un muestreo del SDK está en funcionamiento (muestreo adaptable o de frecuencia fija), no representa la frecuencia real de muestreo.
Use el muestreo de ingesta si:
Use el muestreo de frecuencia fija si:
Use el muestreo adaptable si:
Si no se cumplen las condiciones para usar las otras formas de muestreo, le recomendamos el muestreo adaptable. Esta opción está habilitada de manera predeterminada en el SDK de ASP.NET y ASP.NET Core. No reduce el tráfico hasta que se alcance un determinado índice mínimo; por lo tanto, los sitios con poco uso probablemente no se muestren.
Use una consulta de Analytics para buscar la frecuencia de muestreo.
union requests,dependencies,pageViews,browserTimings,exceptions,traces
| where timestamp > ago(1d)
| summarize RetainedPercentage = 100/avg(itemCount) by bin(timestamp, 1h), itemType
Si ve que RetainedPercentage
para cualquier tipo es inferior a 100, se muestrea ese tipo de telemetría.
Importante
Application Insights no realiza el muestreo de los contadores de sesión, métricas (incluidas las métricas personalizadas) ni rendimiento de los tipos de telemetría en ninguna de las técnicas de muestreo. Estos tipos siempre se excluyen del muestreo, ya que la reducción en la precisión puede ser altamente indeseable para estos tipos de telemetría.
A medida que la aplicación se escala verticalmente, puede procesar docenas, cientos o miles de elementos de trabajo por segundo. Registrar un evento para cada uno de ellos no es rentable ni en términos de recursos. Application Insights utiliza el muestreo para adaptarse al creciente volumen de telemetría de una manera flexible y para controlar el uso y el costo de los recursos.
Advertencia
La integridad de la vista de un extremo a otro de una operación distribuida puede verse afectada si alguna aplicación de la operación distribuida ha activado el muestreo. Cada aplicación toma decisiones de muestreo diferentes en una operación distribuida, por lo que una aplicación puede guardar los datos de telemetría de un identificador de operación, mientras que otras aplicaciones pueden decidir no muestrear los datos de telemetría de ese mismo identificador de operación.
A medida que las frecuencias de muestreo aumentan, la precisión de las consultas basadas en registros disminuye y se infla. Solo afecta a la precisión de las consultas basadas en registros cuando el muestreo está habilitado y las tasas de muestreo están en un intervalo mayor (~ 60 %). El impacto varía en función de los tipos de telemetría, los recuentos de telemetría por operación y otros factores.
Los SDK usan métricas agregadas previamente para resolver problemas causados por el muestreo. Para más información sobre estas métricas, consulte Azure Application Insights: Azure Monitor | Microsoft Docs. Los SDK identifican las propiedades pertinentes de los datos registrados y extraen estadísticas antes del muestreo. Para minimizar el uso y los costos de los recursos, se agregan métricas. Este proceso da como resultado algunos elementos de telemetría de métricas por minuto, en lugar de miles de elementos de telemetría de eventos. Por ejemplo, estas métricas podrían notificar "que esta aplicación web procesó 25 solicitudes" a la cuenta MDM, con un itemCount
de 100 en el registro de telemetría de solicitud enviado. Estas métricas agregadas previamente proporcionan números precisos y son confiables incluso cuando el muestreo afecta a los resultados de la consulta basada en registros. Puede verlas en el panel Métricas del portal de Application Insights.
¿El muestreo afecta a la precisión de las alertas?
Nota
El muestreo no se aplica a las métricas, pero se pueden derivar métricas de los datos sometidos a muestreo. De esta manera, el muestreo puede afectar indirectamente a la precisión de las alertas.
¿Cuál es el comportamiento de muestreo predeterminado en los SDK de ASP.NET y ASP.NET Core?
AdaptiveSamplingTelemetryProcessor
: uno incluye el tipo Event
en el muestreo, mientras que el otro lo excluye. Esta configuración limita la telemetría a cinco elementos de tipo Event
y cinco elementos de todos los demás tipos combinados, lo que garantiza que se muestree Events
por separado de otros tipos de telemetría.Use los ejemplos de la sección anterior de esta página para cambiar este comportamiento predeterminado.
¿La telemetría se puede muestrear más de una vez?
¿Por qué realizar un muestreo no consiste simplemente en "recopilar X por ciento de cada tipo de telemetría"?
¿Se puede cambiar el porcentaje de muestreo con el tiempo?
Si uso el muestreo de frecuencia fija, ¿cómo sé cuál es el porcentaje de muestreo que funciona mejor para mi aplicación?
Una manera de comenzar es con muestreo adaptable, averigüe qué velocidad elige (consulte la pregunta anterior) y luego cambie a muestreo de tasa fija con esa velocidad.
Si no, lo tendrá que adivinar. Analice su uso actual de telemetría en Application Insights, observe las limitaciones que se produzcan y estime el volumen de telemetría recopilado. Estas tres entradas, junto con el plan de tarifa seleccionado, le sugerirán cuánto debería reducir el volumen de telemetría recopilado. Sin embargo, un aumento del número de usuarios o algún otro incremento en el volumen de datos de telemetría podrían provocar que la estimación no fuese válida.
¿Qué sucede si configuro un porcentaje de muestreo demasiado bajo?
¿Qué sucede si configuro un porcentaje de muestreo demasiado alto?
¿Qué ocurre si configuro los valores IncludedTypes y ExcludedTypes?
ExcludedTypes
ni IncludedTypes
en la configuración para evitar conflictos y garantizar una configuración clara de recopilación de telemetría.ExcludedTypes
se excluyen incluso si también se establecen en la configuración de IncludedTypes
. ExcludedTypes tendrá prioridad sobre IncludedTypes.¿En qué plataformas puedo usar muestreo?
applicationinsights.json
(para el SDK de Java, configure ApplicationInsights.xml
) para activar el muestreo de frecuencia fija. De manera predeterminada, el muestreo está desactivado. Con el muestreo de frecuencia fija, el SDK del explorador y el servidor se sincronizan automáticamente para muestrear los eventos relacionados.Hay ciertos eventos excepcionales que siempre quiero ver. ¿Cómo se consigue que el módulo de muestreo los reconozca?
La mejor forma de ver siempre ciertos eventos es escribir un objeto TelemetryInitializer personalizado, que establece SamplingPercentage
en 100 en el elemento de telemetría que desee retener, tal como se muestra en el ejemplo siguiente. Se garantiza que los inicializadores se ejecutan antes que los procesadores de telemetría (incluido el muestreo), se tiene la seguridad de que todas las técnicas de muestreo omiten este elemento de cualquier consideración de muestreo. Se dispone de inicializadores de telemetría personalizados en el SDK de ASP.NET, el SDK de ASP.NET Core, el SDK de JavaScript y el SDK de Java. Por ejemplo, puede configurar un inicializador de telemetría mediante el SDK de ASP.NET:
public class MyTelemetryInitializer : ITelemetryInitializer
{
public void Initialize(ITelemetry telemetry)
{
if(somecondition)
{
((ISupportSampling)telemetry).SamplingPercentage = 100;
}
}
}
El muestreo adaptable está disponible para el SDK de Application Insights para ASP.NET v2.0.0-beta3 y versiones posteriores y el SDK de Microsoft.ApplicationInsights.AspNetCore v2.2.0-beta1 y versiones posteriores y está habilitado de manera predeterminada.
El muestreo de frecuencia fija es una característica del SDK de ASP.NET de la versión 2.0.0 y posteriores y del SDK de Java de la versión 2.0.1 y posteriores.
Antes de la versión 2.5.0-beta2 del SDK de ASP.NET y de la versión 2.2.0-beta3 del SDK de ASP.NET Core, las decisiones de muestreo para las aplicaciones que definen "usuario" (como la mayoría de las aplicaciones web) se basaban en el hash del identificador de usuario. En el caso de las aplicaciones que no definen usuarios (como los servicios web), se basa en la decisión sobre el identificador de operación de la solicitud. Las versiones recientes de ambos SDK, de ASP.NET y ASP.NET Core, ahora usan el identificador de operación para las decisiones de muestreo.
Eventos
Cree aplicaciones y agentes de IA
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