API/代码编辑

使用 span API 手动创建您感兴趣的方法的跨度。API 非常灵活,并提供自定义跨度的能力,例如添加标签或更改类型、名称或时间戳。

OpenTracing 粉丝?您可以使用 OpenTracing API,而不是 Agent API,手动创建跨度。

如何使用 span API 创建跨度编辑

  1. 使用 currentSpan() 获取当前跨度,该跨度可能由自动检测创建,也可能没有。
  2. 使用 startSpan() 创建子跨度。
  3. 使用 activate() 激活跨度。
  4. 使用 span API 自定义跨度。
import co.elastic.apm.api.ElasticApm;
import co.elastic.apm.api.Span;

Span parent = ElasticApm.currentSpan(); 
Span span = parent.startSpan(); 
try (Scope scope = span.activate()) { 
    span.setName("SELECT FROM customer"); 
    span.addLabel("foo", "bar"); 
    // do your thing...
} catch (Exception e) {
    span.captureException(e);
    throw e;
} finally {
    span.end();
}

获取当前跨度

创建子跨度

使此跨度成为当前线程上的活动跨度

覆盖默认跨度名称

向跨度添加标签

与注解结合编辑

您可以将注解与 span API 结合使用以提高其灵活性。只需获取注解方法上的当前跨度,并根据您的喜好自定义跨度。

@CaptureSpan 
private static void spanWithAnnotation(String foo) {
    Span span = ElasticApm.currentSpan(); 
    span.setTag("foo", foo); 
}

使用 @CaptureSpan 注解创建跨度

获取当前跨度(通过 @CaptureSpan 注解创建的跨度)

自定义跨度