SampleRate que registra N.
Una vez muestreados los datos, las agregaciones ingenuas son incorrectas: count() devuelve N veces menos eventos de los que realmente ocurrieron, sum() y avg() quedan sesgadas y los percentiles se desplazan. Los dashboards muestran recuentos de solicitudes, rendimiento y tasas de error engañosamente bajos.
ClickStack resuelve esto con un motor de consultas consciente del muestreo. Cuando configuras una expresión de tasa de muestreo en una fuente de trazas, el generador de consultas reescribe las agregaciones de SQL para ponderar cada span según su tasa de muestreo, en dashboards, alertas y búsquedas ad hoc.
Cómo funciona
sampleRateExpression, ClickStack la envuelve así:
SampleRate usan un peso de 1 de forma predeterminada, por lo que los datos no muestreados producen resultados idénticos a las consultas originales.
El generador de consultas reescribe entonces las agregaciones:
| Agregación | Antes | Después (ajustado al muestreo) |
|---|---|---|
| count | count() | sum(weight) |
| count + condition | countIf(cond) | sumIf(weight, cond) |
| avg | avg(col) | sum(col * weight) / sum(weight) |
| sum | sum(col) | sum(col * weight) |
| quantile(p) | quantile(p)(col) | quantileTDigestWeighted(p)(col, weight) |
| min / max | sin cambios | sin cambios |
| count_distinct | sin cambios | sin cambios |
Los percentiles con muestreo usan
quantileTDigestWeighted, un sketch aproximado de T-Digest. Los resultados son muy similares, pero no exactos.Configuración de la expresión de tasa de muestreo
span en el campo Expresión de tasa de muestreo.
Por ejemplo, si el tail-sampling processor de OpenTelemetry escribe la tasa en SpanAttributes['SampleRate']:
Una vez configurada, todos los gráficos, dashboards, alertas y paneles del dashboard del servicio aplican automáticamente agregaciones ponderadas por muestreo. No es necesario modificar las consultas individuales.