Compartir a través de


Muestreo en Application Insights de Azure Monitor con OpenTelemetry

Application Insights incluye un sampler personalizado e se integra con OpenTelemetry para reducir el volumen de telemetría, reducir los costos y conservar los datos de diagnóstico que le interesan.

Importante

Para obtener información sobre el muestreo al usar los kits de desarrollo de software (SDK) de la API clásica de Application Insights, consulte Muestreo de API clásica.

Prerrequisitos

Antes de continuar, asegúrese de que tiene:

¿Por qué importa el muestreo?

El muestreo es esencial para las aplicaciones que generan grandes cantidades de telemetría.

Sin muestreo, la ingesta excesiva de datos puede:

  • Aumento de los costos de almacenamiento y procesamiento
  • Cusa de que Application Insights limite la telemetría

El muestreo eficaz mantiene suficientes datos para diagnósticos significativos al controlar el costo.

El muestreo no está habilitado de forma predeterminada en distribuciones openTelemetry de Application Insights. Debe habilitar y configurar explícitamente el muestreo para administrar el volumen de telemetría.

Nota:

Si ve cargos inesperados o costos elevados en Application Insights, esta guía puede ayudarle. Abarca causas comunes, como un gran volumen de telemetría, picos de ingesta de datos y muestreo mal configurado. Es especialmente útil si está solucionando problemas relacionados con los picos de costos, el volumen de telemetría, el muestreo no funciona, los límites de datos, la ingesta alta o la facturación inesperada. Para empezar, consulte Solución de problemas de ingesta de datos elevados en Application Insights.

Sampler personalizado de Application Insights

La distribución basada en OpenTelemetry de Azure Monitor incluye un sampler personalizado.

  • Live Metrics y los SDK de API clásicas de Application Insights requieren este muestreador para compatibilidad.
  • El sampler está deshabilitado de forma predeterminada. Debe habilitar y configurar explícitamente el muestreo para usar el sampler.
  • Usa un algoritmo de velocidad fija. Por ejemplo, una tasa de 10 % envía alrededor de 10 % de seguimientos a Azure Monitor.
  • El servicio Application Insights de Azure Monitor se basa en esta muestra para mostrar seguimientos completos y evitar los incompletos.

Beneficios

  • Decisiones de muestreo coherentes durante la interoperabilidad con aplicaciones que usan los kits de desarrollo de software (SDK) de la API clásica de Application Insights.
  • Compatibilidad completa con Live Metrics porque el sampler es consciente de los requisitos de Live Metrics.

Para configurar el porcentaje de muestreo, consulte Habilitación del muestreo en Application Insights con OpenTelemetry.

Para obtener información más detallada y muestreo de casos perimetrales, consulte Preguntas más frecuentes.

El muestreo de ingesta es una solución alternativa cuando el control a nivel de origen no es posible. Descarta los datos en el punto de ingesta de Azure Monitor y no ofrece ningún control sobre qué seguimientos e intervalos se conservan. Esto aumenta la probabilidad de encontrar rastros rotos.

Entre los escenarios en los que es la única opción viable o más práctica se incluyen:

  • No se puede modificar el código fuente de la aplicación.
  • Debe reducir el volumen de telemetría inmediatamente sin volver a implementar aplicaciones.
  • Recibe telemetría de varios orígenes con configuraciones de muestreo incoherentes o desconocidas.

Para configurar el muestreo de ingesta:

  1. Vaya aUso y costos estimados de >.
  2. Seleccione Muestreo de datos.
  3. Elija el porcentaje de datos que se van a conservar.

Establecimiento de un límite diario

Establezca un límite diario para evitar costos inesperados. Este límite detiene la ingesta de telemetría cuando alcanza el umbral.

Use este límite como control de último recurso, no como reemplazo del muestreo. Un aumento repentino del volumen de datos puede desencadenar el límite, creando una brecha en la telemetría hasta que se restablece el día siguiente.

Para configurar el límite, consulte Establecimiento de un límite diario para Azure Monitor.

Preguntas más frecuentes

¿La muestra personalizada de Application Insights está basada en la cola?

La muestra personalizada de Application Insights toma decisiones de muestreo después de la creación del seguimiento, en lugar de antes, por lo que no sigue un enfoque tradicional basado en la cabecera. En su lugar, aplica decisiones de muestreo al final de la generación de intervalos, una vez completado el intervalo, pero antes de la exportación.

Aunque este comportamiento se parece al muestreo basado en la cola de algunas maneras, la muestra no espera a recopilar varios intervalos del mismo seguimiento antes de decidir. En su lugar, usa un hash del identificador de seguimiento para ayudar a garantizar la integridad del seguimiento.

Este enfoque equilibra la completitud del rastreo y la eficacia, y evita el mayor costo asociado al muestreo completo basado en cola.

Para tomar decisiones de muestreo basadas en el resultado de un seguimiento completo (por ejemplo, determinar si se produjo un error en cualquier intervalo dentro del seguimiento), se requiere el muestreo de cola completo en un agente o recopilador de nivel inferior. Esta funcionalidad no se admite actualmente, pero puede solicitarla como una nueva característica a través del Centro de opiniones.

¿Cómo se compara el sampler personalizado de Application Insights con el muestreo basado en encabezados o colas de OpenTelemetry?

Método de muestreo Punto de decisión Puntos destacados Debilidades
Basado en la cabecera Antes de que se inicie un intervalo Baja latencia, sobrecarga mínima Puede muestrear seguimientos deseados, incluidos los errores
Basado en la cola Después de que los intervalos se almacenen en búfer en función de los umbrales de tiempo o volumen Permite criterios altamente selectivos para el muestreo de trazas Mayor costo y retraso de procesamiento agregado
Muestra personalizada de App Insights Fin de la generación de intervalos Equilibra la completitud del rastro con la eficacia. Obligatorio para la compatibilidad de Live Metrics y api clásica

¿Puedo muestrear dependencias, solicitudes u otros tipos de telemetría a diferentes tasas?

No, la muestra aplica una tasa uniforme a todos los tipos de telemetría de un seguimiento. Las solicitudes, dependencias y otros intervalos siguen el mismo porcentaje de muestreo. Para aplicar diferentes tasas por tipo de telemetría, considera la posibilidad de usar procesadores de intervalos de OpenTelemetry o (transformaciones en tiempo de ingesta)[opentelemetry-overview.md#telemetry-routing].

¿Cómo propaga el muestreo personalizado de Application Insights las decisiones de muestreo?

El muestreador personalizado de Application Insights propaga las decisiones de muestreo mediante el estándar de contexto de seguimiento de W3C de forma predeterminada. Este estándar permite que las decisiones de muestreo fluyan entre los servicios. Sin embargo, dado que la muestra toma decisiones de muestreo al final de la generación de intervalos, después de la llamada a los servicios de bajada, la propagación incluye información de muestreo incompleta. Esta limitación cumple con la especificación de contexto de seguimiento de W3C, pero los servicios de bajada no pueden usar de forma confiable esta decisión de muestreo propagada.

¿El muestreador personalizado de Application Insights respeta las decisiones de muestreo de los servicios ascendentes?

No, el sampler personalizado de Application Insights siempre toma una decisión de muestreo independiente, incluso si el servicio ascendente usa el mismo algoritmo de muestreo. Las decisiones de muestreo de los servicios ascendentes, incluidas las que usan encabezados de contexto de seguimiento de W3C, no influyen en la decisión del servicio de bajada. Sin embargo, realiza un muestreo basado en un hash del identificador de seguimiento para garantizar la completitud del seguimiento. Para mejorar la coherencia y reducir la posibilidad de que haya seguimientos rotos, configure todos los componentes del sistema para usar el mismo muestreo y la misma frecuencia de muestreo.

¿Por qué algunos seguimientos aparecen incompletos incluso cuando se usa el sampler personalizado de Application Insights?

Hay varias razones por las que los seguimientos pueden aparecer incompletos:

  • Los distintos nodos de un sistema distribuido usan diferentes enfoques de muestreo que no coordinan las decisiones. Por ejemplo, un nodo aplica el muestreo basado en encabezado de OpenTelemetry y otro nodo aplica el muestreo a través del muestreador personalizado de Azure Monitor.
  • Los distintos nodos se establecen en diferentes velocidades de muestreo, incluso si ambos usan el mismo enfoque de muestreo.
  • Se establecen límites de filtrado, muestreo o velocidad en la canalización del lado del servicio, y esta configuración muestrea aleatoriamente los intervalos sin tener en cuenta la integridad de la traza.

Si un componente aplica el muestreo basado en la cabecera sin propagar la decisión de muestreo (mediante cabeceras de contexto de seguimiento de W3C), los servicios de bajada muestrean el seguimiento de forma independiente, lo que puede dar lugar a intervalos descartados. Como resultado, algunas partes del seguimiento no siempre están disponibles cuando se ven en Application Insights.

Pasos siguientes