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 注解创建的跨度)

自定义跨度