L’échantillonnage à l’ingestion nécessite une version du serveur Weave qui inclut l’échantillonneur. L’échantillonnage des appels
@weave.op nécessite également le SDK Python Weave 0.53.0 ou version ultérieure, ou le SDK TypeScript Weave 0.16.0 ou version ultérieure. Les spans d’agent ne nécessitent aucun SDK particulier. Pour plus de détails, voir Exigences et limites.tracing_sample_rate du décorateur @weave.op permet toujours à une fonction tracée d’échantillonner ses propres appels, mais seul un taux côté serveur s’applique à l’ensemble du déploiement, et les clients individuels ne peuvent ni le modifier ni l’ignorer. Pour plus d’informations, voir Control sampling rate.
Pourquoi utiliser l’échantillonnage à l’ingestion
0 et 1 :
1.0conserve toutes les traces et désactive l’échantillonnage (par défaut).0.1conserve 10 % des traces et supprime le reste.0.0supprime toutes les traces, à l’exception des évaluations.
À quoi s’applique l’échantillonnage à l’ingestion
- Les appels du décorateur
@weave.op, qui apparaissent dans l’onglet Traces. - Les spans d’agent envoyés au point de terminaison d’agent tracing (
/agents/otel/v1/traces), qui apparaissent dans l’onglet Agents. Pour plus d’informations, voir Tracer vos agents.
- Les évaluations du SDK Weave. Weave les conserve, car il s’agit de mesures de qualité intentionnelles, et leurs scores seraient erronés s’ils étaient calculés sur des données partielles.
- Les traces envoyées avec vos propres outils OpenTelemetry vers le point de terminaison OTel brut (
/otel/v1/traces). Le trafic OpenTelemetry brut ne contient aucun marqueur d’évaluation ; son échantillonnage pourrait donc supprimer silencieusement des évaluations. Pour plus d’informations, voir Envoyer des traces OpenTelemetry vers Weave. - Les appels provenant de versions du SDK Weave antérieures aux versions prises en charge. Voir Exigences et limites.
Fonctionnement
trace_id, la décision du serveur de conserver ou de rejeter une trace s’applique également à tous les appels imbriqués ou spans qui partagent le même ID de trace. Une trace est soit conservée dans son intégralité, soit rejetée dans son intégralité ; elle n’est jamais stockée partiellement.
Configurer l’échantillonnage à l’ingestion
Définissez
WEAVE_INGEST_SAMPLE_RATE sur la proportion de traces que vous souhaitez conserver, par exemple 0.1.
Facultatif : aperçu avec une simulation à blanc
WEAVE_INGEST_SAMPLE_RATE=0.1 et WEAVE_INGEST_SAMPLE_DRY_RUN=true pendant une période couvrant un trafic de pointe représentatif, par exemple une journée complète, afin de voir quelle quantité de trafic le serveur supprimerait et quelle quantité de trafic n’est pas éligible à l’échantillonnage. Définissez ensuite WEAVE_INGEST_SAMPLE_DRY_RUN=false pour commencer à supprimer des traces.
Les appels et les spans d’agent publient des compteurs distincts, et ces deux ensembles comptent des éléments différents et ne doivent pas être combinés. Chaque compteur porte un tag route qui identifie le point de terminaison. Les compteurs d’appels comptent les enregistrements d’appel et les compteurs d’agent comptent les spans, et non des traces entières ; les proportions au sein d’un même ensemble reflètent donc le volume de messages plutôt que le nombre de traces.
Les compteurs suivants couvrent les appels :
Les compteurs suivants couvrent les spans d’agent :
Exigences et limites
- Exigences de version du SDK : le serveur échantillonne les appels uniquement depuis le SDK Python Weave 0.53.0 ou version ultérieure, ou le SDK TypeScript Weave 0.16.0 ou version ultérieure. Ces versions ajoutent les signaux que le serveur utilise pour regrouper les messages d’une trace et reconnaître les appels d’évaluation. Les appels provenant d’anciens SDK ne sont ni échantillonnés ni rejetés ; tant que vos applications ne sont pas mises à niveau, le taux n’a donc aucun effet sur leur trafic. Les spans d’agent incluent un ID de trace dans le protocole OpenTelemetry ; leur échantillonnage n’impose donc aucune exigence de SDK.
- Version du serveur : la prise en charge des spans d’agent a été ajoutée après celle des appels. Si vous avez déjà défini un taux inférieur à
1.0, la mise à niveau vers une version du serveur qui échantillonne les spans d’agent commencera à échantillonner votre trafic d’agent au même taux. - Les économies dépendent de votre mix de clients : le trafic qui n’est pas échantillonné, comme celui provenant d’anciens SDK et d’OpenTelemetry brut, ne réduit pas les coûts. Si une grande partie de votre trafic provient de ces sources, les économies seront plus faibles que ce que le taux laisse penser. Une simulation à blanc est le meilleur moyen de le mesurer au préalable.
- Monitors et scoring : une trace écartée n’est ni stockée ni évaluée. Si vous comptez sur des monitors couvrant 100 % du trafic, tenez-en compte avant d’activer l’échantillonnage.
- Aucun signal d’exclusion envoyé au client : une trace écartée reçoit une réponse de réussite normale. Le client n’est pas informé que sa trace a été écartée.