分布式追踪
分布式追踪用来记录一次请求过程中所经过和访问的所有业务系统、应用和相关服务组件的详细信息,包括业务数据、性能数据、代码堆栈、服务组件的详细操作以及错误和异常信息等等。当请求的响应时间大于设置的追踪阈值,那么该次请求的过程就会被系统详细记录。
追踪列表
追踪列表显示所监控的请求追踪,包括听云监控的追踪和接入的第三方的追踪。用户可根据查询条件进行过滤,查询条件包括业务系统、应用名称、请求类型、请求状态、用户标识、请求ID、请求名称、响应时间等。对于数据项,查询参数名称和参数值符合条件的请求追踪,可添加多个参数查询条件。

追踪详情
单击 请求ID 可以进入该请求追踪的详 情页面,该页面展示此次请求访问中完整的全栈追踪信息。

追踪概览
展示本次追踪的概览信息。包括:
-
所属应用:此次追踪的入口应用名称。
-
请求名称:该追踪的请求名称。
-
请求ID:此次请求的ID。
-
追踪 ID:此次追踪的唯一ID。
-
异常数量:此次追踪过程中发生的异常次数,包括异常和错误。
-
开始时间:此次请求追踪的起始时间点。精确到微秒。
-
响应时间:此次请求执行的总时间。精确到微秒。
-
执行时间:代码的执行时间,即从请求进入Web容器开始到接口执行结束的时间。如果有多个线程,是线程开始运行的时间到最后一个线程结束的时间,而不是所有异步执行的总和。
-
用户标识:此次请求执行过程中采集到的用户标识信息。
-
单击页面右上角的分享图标,可复制当前追踪详情的URL链接。
性能分解图
以饼图的形式展示本次追踪的性能分解,包含代码执行、数据库访问、NoSQL访问、MQ访问、外部调用(即外部服务)和连接池的获取连接耗时6部分的性能占比。外部服务是指应用通过HTTP等协议请求调用的外部应用的统称,是以 当前应用使用的外部服务的维度来展示相关性能数据。
疑似问题
疑似问题自动分析出该请求执行过程中最慢的代码段、调用次数最多的组件和最严重的错误信息。
拓扑
拓扑图展示本次请求追踪的逻辑拓扑调用关系。拓扑展示本次追踪中所经过和访问的所有应用(包括入口业务系统的应用和其他相关的业务系统中的应用)、服务组件和外部服务及其调用关系和调用的过程。请求追踪中经过和访问的应用、服务组件和外部服务以图标的形式展示,调用关系和调用过程的数据以连线及连线上的文字标识来展示。

Call Table
Call Table以列表的形式展示本次请求的代码调用过程。

-
方法:展示方法的调用关系。在同一层级的调用中,如果一个方法被调用了多次,该方法会被合并展示,方法前展示调用次数,用星号(*)隔开,如下图所示。
-
属性:展示具体请求的地址、HTTP状态码、方法 的参数值、数据库操作、数据库地址等方法执行的详细信息。
-
开始时间:展示代码段开始执行的时间,最后三位为毫秒。
-
偏移量:展示该代码段相对请求起始时间点的时间偏移量。
-
耗时:该代码段的独占耗时、网络耗时和异常耗时的总时间。
-
耗时占比:以条形图的形式展示代码段耗时的各组成部分,包括独占耗时、网络耗时和异常耗时。不同的颜色代表不同的耗时部分,具体请参见表格右上角的图例。
-
独占时间:该代码段自身的执行时间。
-
类名:该代码段所属的类。
-
应用:该代码段所属的应用。
-
详情:单击详情图标,查看方法栈详情。

Call Tree
Call Tree页面包括A、B、C、D四个区域。
- 区域A:调用栈。
- 区域B:调用时序图。
- 区域C:Span详情。
- 区域D:搜索。

调用栈
区域A的调用树展示本次追踪的代码调用过程。
-
调用栈以连线的方式显示方法间的调用关系,不同的应用以 不同连线颜色标识,异步调用以虚线表示。
-
各个应用的图例显示在调用栈的底部。
-
入口为虚拟节点(即第一个Span),显示请求信息,第一行显示请求名称,第二行显示容器、业务系统、应用,容器图标显示在请求信息前。未采集到容器类型的显示语言图标。
-
除入口的虚拟节点外,还会展示以下Span信息:
- Code:第一行显示类名.方法名(类名为最后一段),第二行显示类型(metric_scope)-包名.类名。
- Database:第一行显示SQL语句关键字,第二行显示组件类型-组件子类型/实例。
- NoSQL:第一行显示操作、key,第二行显示组件子类型-实例。
- MQ:第一行显示Producer/Consumer、topic,第二行显示组件类型-组件子类型/实例。
- External:第一行显示URL,第二行显示组件类型-类名.方法名。
- Pool:第一行显示GetConnection 、连接池名称,第二行显示组件类型-实例。
- GenAI:显示调用AI的URL及模型,以标签形式显示AI的类型、模型、tokens等信息。

- 异步:异步的调用关系用虚线标识,第一行显示类名.方法名,第二行显示语言类型-包名.类名,右侧显示异步图标。
-
Span前的数字表示当前方法所调用的所有方法的次数。最后一个被调用的方法前不显示次数。
-
当连续调用多个同级的相同方法、组件(类型、实例、操作相同)时,Span会合并展示。“N×Span名称”表示方法被调用的次数。开始时间、偏移量为合并的第一个方法的开始时间,响应时间、独占时间为所有方法的独占时间之和。
以下情况不合 并:
-
发生异常不合并
-
跨应用节点不合并
-
异步节点不合并
-
-
发生异常时,方法为红色。单击发生异常的Span,右侧详情默认显示异常页签。
调用时序图
区域B以条形图的形式展示了代码的调用时序。单击或者将鼠标悬浮在条形图上,可以查看此次追踪的请求执行过程中执行的Span名称(类名.方法名)、开始时间、偏移量(该Span相对请求起始时间点的时间偏移量)、响应时间、独占时间(该Span自身的执行时间)和独占时间占比等等。GenAI类型的Span还会显示首Token时间。
Span详情
单击一个Span,区域C会展示该Span的详情、Stacktrace和异常信息(如果有才会显示)。单击右侧的图标,可隐藏区域C,再次单击可恢复显示。单击类名后红框中的图标,可查看反编译的源代码,并可下载源代码。查看源代码需要开启获取源代码功能。
当单击的Span为连接池调用时,在详情中可查看所对应的连接池的详细指标。
-
Pool name:连接池名称,为连接池的唯一标识。通常由连接池框架名(C3P0、Druid等)+随机码组成。
-
Max Active:应用启动时,注册连接池初始化配置的最大活跃连接数。
-
Init Active:应用启动时,注册连接池初始化配置的活跃连接数,也即最小连接数。
-
Max Idle:应用启动时,注册连接池初始化配置的最 大空闲连接数。有些框架不需要设置,此时Max Idle等于Max Active。
-
Min Idle:应用启动时,注册连接池初始化配置的最小空闲连接数。
-
Current Wait Count:当前等待获取连接的线程数。
当单击的Span为GenAI时,在详情中可查看GenAI的厂商、模型、输入Token数、输出Token数、首Token时间、请求内容、响应内容等信息。
搜索
在区域D中,可输入独占时间或方法名称来过滤Span。直接单击查询按钮后,查询结果会高亮显示;如果勾选过滤复选框,再单击查询按钮,那么下方仅展示符合条件的Span。
连续多个独占时间小于1%的方法默认折叠显示,但不包括External、Dabatase、MQP、MQC、NoSQL和错误的Span。该时间可设置,修改完成后单击确定即可生效,单击设为默认可恢复默认值。折叠后,第一行显示折叠方法的个数,第二行显示单个方法独占时间占比<1%(或设置值)。
右侧展示条形图的图例。
-
独占时间:Span自身的调用耗时。
-
投影时间:调用其他服务的耗时。
-
Pool:从连接池获取连接的时间。
-
网络:网络耗时。
-
External:外部服务调用耗时。
-
Database:数据库调用耗时。
-
NoSQL:NoSQL调用耗时。
-
MQ:MQ调用耗时。
全栈快照
全栈快照页面展示当前请求的线程调用信息。该页面分为5个功能区,包括线程调用时序图、线程信息、图例及时间线、搜索区、数据视图。
1:调用时序图。
2:线程信息。
3:图例及时间线。
4:搜索区。
5:数据视图。

调用时序图
线程调用时序图展示本次请求完整调用链的所有服务里所有线程的调用时序。图的说明如下:
-
每一行表示一个服务中的线程,可能是同步线程,也可能是异步线程。
-
实线区块表示自身调用耗时,虚线区块表示投影时间,即调用其他服务的耗时。表示异步线程独占时间。
-
单击一个线程,下方可展示该线程的快照数据。如果线程下没有数据,可能是因为线程的执行时间小于快照采集的时间间隔。
-
将鼠标悬浮在一个线程上,可在悬浮框中查看线程的时间信息和概要信息。
-
网络耗时1=下级方法的开始时间-上级方法的开始时间,网络耗时2=上级方法的结束时间-下级方法的结束时间。
线程信息
线程信息区展示当前选中的线程的概要信息、请求信息、详情和异常。异步线程仅显示详情和异常。
-
概要信息:展示请求名称、应用、应用实例、独占时间和线程名,异步线程有字样。单击请求名称,可跳转到请求详情页面;单击应用名称,可跳转到应用详情页面;单击实例名称,可跳转到实例详情页面。
-
请求信息:展示URL、HTTP method、Response Status、Client IP、threadId、Request headers、Response headers、Request Parameters、Posts。
-
详情:展示时间信息、链路信息和环境信息。Span ID为action_id,Parent Span ID为调用者的action_id。
-
异常:展示当前线程的错误和异常。默认展开第一个异常。主线程的异常显示主线程和异步线程的所有异常。异步线程的异常只显示当前线程的异常。
图例及时间线
图例的深色线区块表示自身调用耗时,即独占时间,浅色线区块表示投影时间,即调用其他服务的耗时,所有区块的并集为总时间,红色线区块表示线程发生异常。