OpenTelemetry笔记(2)-Span操作

介绍 Span 的状态、属性、事件

Span 状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
* The set of canonical status codes. If new codes are added over time they must choose a numerical
* value that does not collide with any previously used value.
*/
public enum StatusCode {
/** The default status. */
UNSET,

/**
* The operation has been validated by an Application developers or Operator to have completed
* successfully.
*/
OK,

/** The operation contains an error. */
ERROR
}

public static void main(String[] args) {
OpenTelemetry openTelemetry = OpenTelemetryFactory.create();
Tracer tracer = openTelemetry.getTracer("demo-instrumentation","1.0.0");
Span span = tracer.spanBuilder("basicSpan").startSpan();
span.setStatus(StatusCode.OK|StatusCode.ERROR|StatusCode.UNSET);
span.end();
}

Span 属性

使用 setAttribute 方法设置属性

1
2
3
Span span = tracer.spanBuilder("valueSpan").startSpan();
span.setAttribute("value","test");
span.end();

Span 事件

有了事件,可以把 Span 当成一个完整的行为,行为内部的操作当中一个操作的事件步骤进行处理

1
2
3
4
Span span = tracer.spanBuilder("EventSpan").startSpan();
span.addEvent("Init");
span.addEvent("End");
span.end();

在事件中携带属性

1
2
3
4
Span span = tracer.spanBuilder("EventSpan").startSpan();
span.addEvent("Init", Attributes.of(AttributeKey.stringKey("request"),"request"));
span.addEvent("End",Attributes.of(AttributeKey.stringKey("response"),"response"));
span.end();