一、下载skywalking-agent.jar
https://skywalking.apache.org/downloads/
java
上面页面里找到 Java Agent,下最新的 v9.8.0 Binary archive。直接地址:
https://dlcdn.apache.org/skywalking/java-agent/9.8.0/apache-skywalking-java-agent-9.8.0.tgz
这是 Agent 包,不是整套 SkyWalking 后端。解压后用里面的 skywalking-agent/skywalking-agent.jar
二、项目启动vm options带上skywalking-agent.jar
java
-javaagent:D:\idea\projects\practice\test-trace\skywalking-agent\skywalking-agent.jar
-Dskywalking.agent.service_name=test-a
-Dskywalking.agent.keep_tracing=true
-Dskywalking.collector.backend_service=127.0.0.1:11800
参数说明:
1、指向skywalking-agent.jar
2、微服务名称,在skywalking服务端界面看到的服务名称
3、连不上SkyWalking服务端时,是否照常生成traceId
true:照常生成 false:不生成,返回Ignored_Trace
4、SkyWalking服务端(OAP)。 Agent把链路数据上报到服务端. OAP 的全称是 Observability Analysis Platform(可观测性分析平台)。
它是 SkyWalking 的服务端,负责接收 Agent 上报的链路数据,做聚合分析,再给界面查询。
三、项目依赖与使用
java
//依赖
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-trace</artifactId>
<version>8.14.0</version>
</dependency>
//使用, 服务A自动生成的traceId,会自动传递到B服务
@GetMapping("/api/trace/a")
public Map<String, String> trace() {
String traceId = TraceContext.traceId();
log.info("test-a traceId={}", traceId);
//B微服务feign接口
String traceB = testBClient.trace();
Map<String, String> result = new LinkedHashMap<>();
result.put("a", traceId);
result.put("b", traceB);
result.put("same", String.valueOf(traceId.equals(traceB)));
return result;
}
//B微服务接口
@GetMapping("/api/trace/b")
public String trace() {
String traceId = TraceContext.traceId();
log.info("test-b traceId={}", traceId);
return traceId;
}