首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用开放遥测startSpan采样器强制parentbased_always_off

如何用开放遥测startSpan采样器强制parentbased_always_off
EN

Stack Overflow用户
提问于 2022-02-15 18:21:09
回答 1查看 339关注 0票数 1

我正在尝试用一个取样器(-Dotel.traces.sampler=parentbased_always_off)建立一个开放的遥测系统。它的作用是:

代码语言:javascript
复制
Span span = tracer.spanBuilder("span").startSpan()

没有记录的样本。

现在,我尝试手动启动示例,以便只在一些通过编程决定的情况下记录跟踪。问题是,我无法在api中找到允许我这样做的方法。startSpan调用总是被忽略。

我怎样才能强制开始跟踪记录?

换句话说:我如何以编程的方式决定记录的跨度和不记录的跨度?例如,我希望只对某些特定用户进行记录跟踪,而不是全部。

EN

回答 1

Stack Overflow用户

发布于 2022-02-16 08:26:30

据我所知,您正在寻找一种方式来定制抽样行为,以决定是否记录span。Opentelemetry使您能够通过实现您自己的Sampler来扩展它。

假设您不想记录带有名称溢出和rest的任何span。您的实现应该是这样的。

代码语言:javascript
复制
package io.opentelemetry.sdk.extension.trace.mycustom.sampler;

...
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.trace.SpanKind;
import io.opentelemetry.context.Context;
import io.opentelemetry.sdk.trace.data.LinkData;
import io.opentelemetry.sdk.trace.samplers.Sampler;
import io.opentelemetry.sdk.trace.samplers.SamplingResult;
import io.opentelemetry.sdk.trace.sampler.SamplingDecision;
...


public final class MyCustomSampler implements Sampler {

  ...
    
  @Override
  public SamplingResult shouldSample(
      Context parentContext,
      String traceId,
      String name,
      SpanKind spanKind,
      Attributes attributes,
      List<LinkData> parentLinks) {
    // your logic goes here
    return name == "overflow" ? SamplingResult.drop() : SamplingResult.recordAndSample();
  }

  @Override
  public String getDescription() {
    return "MyCustomSampler";
  }

}

您可以查看默认的采样器这里或sdk扩展远距离采样器之一,以获得更好的想法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71131504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档