Passer au contenu principal
Les services à fort débit peuvent produire des millions de spans par seconde. Stocker chaque span coûte cher, c’est pourquoi les équipes utilisent couramment le tail-sampling processor de l’OpenTelemetry Collector pour ne conserver qu’1 span sur N. Chaque span conservé porte un attribut SampleRate qui enregistre N. Une fois les données échantillonnées, les agrégations naïves sont erronées : count() renvoie N fois moins d’événements que ce qui s’est réellement produit, sum() et avg() sont biaisés, et les percentiles sont faussés. Les tableaux de bord affichent des volumes de requêtes, un débit et des taux d’erreur trompeusement bas. ClickStack résout ce problème avec un moteur de requête adapté à l’échantillonnage. Lorsque vous configurez une expression de taux d’échantillonnage sur une source de traces, le générateur de requêtes réécrit les agrégations SQL pour pondérer chaque span par son taux d’échantillonnage — dans les tableaux de bord, les alertes et les recherches ad hoc.

Fonctionnement

Lorsqu’une source de traces est configurée avec un sampleRateExpression, ClickStack l’encapsule comme suit :
greatest(toUInt64OrZero(toString(expr)), 1)
Les spans dépourvus de l’attribut SampleRate se voient attribuer par défaut un poids de 1, de sorte que les données non échantillonnées produisent des résultats identiques à ceux des requêtes d’origine. Le générateur de requêtes réécrit ensuite les agrégations :
AgrégationAvantAprès (corrigé pour l’échantillonnage)
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 / maxinchangéinchangé
count_distinctinchangéinchangé
En cas d’échantillonnage, les percentiles utilisent quantileTDigestWeighted, un sketch T-Digest approximatif. Les résultats sont proches, mais pas exacts.

Configuration de l’expression du taux d’échantillonnage

Ouvrez votre source de traces dans Paramètres de la source et saisissez, dans le champ Expression du taux d’échantillonnage, l’expression ClickHouse qui calcule le taux d’échantillonnage pour chaque span. Par exemple, si votre tail-sampling processor OpenTelemetry écrit ce taux dans SpanAttributes['SampleRate'] : Une fois cette configuration en place, tous les graphiques, tableaux de bord, alertes et panneaux du tableau de bord du service appliquent automatiquement des agrégations pondérées par l’échantillonnage. Il n’est pas nécessaire de modifier les requêtes individuellement.
Dernière modification le 25 juin 2026