Saltar al contenido principal
Los servicios de alto rendimiento pueden producir millones de spans por segundo. Almacenar cada span es costoso, por lo que los equipos suelen ejecutar el tail-sampling processor de OpenTelemetry Collector para conservar solo 1 de cada N spans. Cada span conservado lleva un atributo 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

Cuando una fuente de trazas tiene configurado sampleRateExpression, ClickStack la envuelve así:
greatest(toUInt64OrZero(toString(expr)), 1)
Los spans sin un atributo 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ónAntesDespués (ajustado al muestreo)
countcount()sum(weight)
count + conditioncountIf(cond)sumIf(weight, cond)
avgavg(col)sum(col * weight) / sum(weight)
sumsum(col)sum(col * weight)
quantile(p)quantile(p)(col)quantileTDigestWeighted(p)(col, weight)
min / maxsin cambiossin cambios
count_distinctsin cambiossin 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

Abra la fuente de trazas en Configuración de la fuente e introduzca la expresión de ClickHouse que evalúa la tasa de muestreo por 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.
Última modificación el 10 de junio de 2026