获取追踪 ID | 学习笔记

简介: 快速学习获取追踪 ID

开发者学堂课程【分布式链路追踪 Skywalking获取追踪 ID】学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https:/https://developer.aliyun.com/learning/course/743/detail/13162


获取追踪 ID


获取追踪 ID

Skywalking 提供的 Trace 工具包,来进行追踪 ID 的获取。

1.什么是追踪 ID ?

Rocketboard 追踪功能,追踪功能可以找到每一笔调用的整体的链路,这个链路会有一个 ID,这个 ID 是由 Skywalking 生成的。

如图:

image.png

image.png

进行 ID 值的拷贝,然后点击搜索,就可以查找到这笔调用。这个功能是非常实用的,假设用户现在反馈有页面打不开的问题,那么作为开发者就需要去解决这个问题,这可能需要分析它的链路,由于此时每一秒都有很多的请求,所以是无法精准定位是哪个请求发生异常的。但是如果用户提供了追踪 ID,就可以直接通过追踪 ID 在 Skywalking 上进行搜索,定向找到追踪。

2.如何在 java 代码中去获取这个追踪 ID ?

需要 Skywalking 提供的工具包,通过这个工具包可以获取它的追踪 ID,同时可以在其中打印额外的消息或者信息来提供可靠的提示

(1)如何使用 Trace 工具包?

如图:

image.png

首先打开 plugins 工程,查看它的源码。

然后点开 pom 文件,如图:

image.png

image.png

在依赖中,需要添加 apm-tookit-trace 这个工具包,它的版本号和 Skywalking 是的一致的,由于这里使用的是 Skywalking 的6.5.0版本,因此这个工具包的版本也应该设置为6.5.0。本身这个 plugins 就是一个 web 端项目,可以通过它进行数据的获取。

如图,打开一个配置项:

image.png

如图,当前的这个 plugins 发布在8088端口上,可以使用这个端口进行接口的访问。

如图:

image.png

这里添加了 PluginController,而且通过 Get 请求获取对应的数据。

这个数据是如何获取的?其实目的是获取它的 Trace ID,所以可以通过 TraceContext . traceID 的方法。

如图:

image.png

这个方法本身是一个静态方法,当前是没有数据的,当 skywalking agent 通过 java agent 去集成到项目中时,它就会对 traceID 进行复制(只有运行时才会对其进行复制,所以现在是无法看见的),通过 traceID 的方法对 ID 进行返回。

如图:

image.png

工具包还提供了 ActiveSpan 功能,它可以在当前链路中打印额外的一些消息,如图中的 error、info、debug 三种消息,这种打印方式和之前的 webs.jar 是类似的,但是这种方式的日志会在整个链路上进行展示。当使用 error 时,需要返回异常也就是通过传递异常来异常的展示,这里使用 RuntimeException 传递到 error 中进行使用。

这里的 Get 请求可以通过 gettraceID 路径进行访问。

(2)如何使用插件进行数据的访问

如图:

image.png

首先把架包上传到 Skywalking 目录下。

输入ls,

输入:java -javagent:/usr/local/skywalking/apache-skywalking-apm-bin/agent/skywalking-agent.jar -Dskywalking.agent.service_name=skywalking_plugins -Dserver.port=9088 -jar skywalking_plugins.jar &,如图:

image.png

这里显示没有文件,是因为换行符的问题。

可以打开记事本将代码拷贝上去,把中间的换行符全部删除,然后检查看是否有问题。可以看到,第一行最后的 apmbin 中间应该添加-,而 skywalking.agent.service_name 是系统配置也就是用这种方式去进行应用名称的修改,这里已经赋予 agent 目录下的探针。

image.png

修改之后将其拷贝重新输入,进行启动,如图:

image.png

如图显示,无法创建虚拟机,此时应检查拷贝是否正确。

检查后发现缺少下面一行代码如图:

image.png

image.png

重新进行输入,没有问题就启动。

如图:

image.png

可以看到,现在已经启动成功,端口号是8088。

在访问页面提前进行修改,

把端口号改为8088,接口是代码中的 getTraceID,等待启动,然后通过这个接口调用。

如图:

image.png

在 Skywalking 的agent 中会将 TraceID 进行返回。

(3)获取 ID

把这个 TraceID 拷贝进追踪,进行查询,如图:

image.png

这里显示有这条记录,但是这条记录显示红色。原因是之前通过 ActiveSpan 选择了error 进行打印,只要选择的是 error,那么它的链路就是报错的链路也就说明它调用失败。

接下来,查看它的详细信息,如图:

image.png

点开链路,可以看到这里出现了日志的标签,日志分为:event,它显示当前事件的级别,如 error 级别,它会告知用户异常的类别如这里显示的 RuntimeException,同时通过 massage 端把异常后的消息打印出来如这里显示的Test-Error-Throwable,然后同时有更加高级的堆载方式把这些信息打印出来,它可以让用户更加方便的查看是哪行出现问题,这里很明显是 PluginController 的getTrace 出现了问题,抛出了一个 RuntimeException。这里的异常消息就是这些。通过 error 方式可以手动定制异常,在链路中进行打印,这样方便用户定位问题。

链路下还有两段信息,info 和 debug,这两个是通过代码 info 和 debug 进行打印的消息。

image.png

(3)小结

通过代码的方式不仅仅能获取 ID,也通过 ActiveSpan 的方式植入了链路中,这些信息可以通过 Skywalking 的 RocketBoot 的监控系统来进行查看,所以,Trace 工具包在工作中非常实用,学会使用Skywalking 提供的 Trace 工具包,来获取 ID也是非常重要的。

相关文章
|
监控 网络协议 Java
分布式链路追踪- SkyWalking使用手册
分布式链路追踪- SkyWalking使用手册
2088 0
分布式链路追踪- SkyWalking使用手册
|
Prometheus 数据可视化 Cloud Native
Grafana 系列文章(四):Grafana Explore
Grafana 系列文章(四):Grafana Explore
Grafana 系列文章(四):Grafana Explore
|
运维 负载均衡 算法
MySQL MGR模式介绍
MGR是Mysql Group Replication(组复制)的缩写,Mysql5.7之后是以一个Mysql插件的形式集成在Mysql中,用于创建可伸缩、高可用、可容错的复制架构,是Mysql集群的一种形式
2602 0
MySQL MGR模式介绍
|
监控 Java Shell
链路跟踪-SkyWalking系列(一)
链路跟踪-SkyWalking系列(一)
2674 2
|
消息中间件 Java Kafka
skywalking日志收集
skywalking日志收集
skywalking日志收集
|
SQL Arthas 缓存
使用篇丨链路追踪(Tracing)其实很简单:请求轨迹回溯与多维链路筛选
本章我们将以业务 Owner(小帅)的视角,逐步了解分布式链路追踪的各种基础用法:小到单次用户请求的异常根因诊断,大到全局系统的强弱依赖梳理,分布式链路追踪都能给予确定性答案。
20304 94
使用篇丨链路追踪(Tracing)其实很简单:请求轨迹回溯与多维链路筛选
|
消息中间件 数据可视化 Java
SpringBoot3集成Kafka
SpringBoot3集成KafkaKafka是一个开源的分布式事件流平台,常被用于高性能数据管道、流分析、数据集成和关键任务应用,基于Zookeeper协调的处理平台,也是一种消息系统,具有更好的吞吐量、内置分区、复制和容错。
1117 0
SkyWalking 8.4.0版本中traceId的生成规则
SkyWalking 8.4.0版本中traceId的生成规则
2979 1
【实验篇】如何利用BFD与浮动路由联动实现链路自动切换?
【实验篇】如何利用BFD与浮动路由联动实现链路自动切换?
299 0
|
网络协议 jenkins 持续交付
Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker
Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker
4347 0
Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker