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
sampleRateExpression, ClickStack l’encapsule comme suit :
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égation | Avant | Après (corrigé pour l’échantillonnage) |
|---|---|---|
| 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 | inchangé | inchangé |
| count_distinct | inchangé | 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
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.