OneTrace详情
单击请求 ID 可以进入该请求追踪的OneTrace页面,该页面展示此次请求访问中完整的全栈追踪信息,包括以下的功能和项目:
追踪概览
展示本次追踪的概览信息。包括:
所属应用:此次追踪的入口应用名称。
请求名称:该追踪的请求名称。
请求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 、连接池名称,第二行显示组件类型-实例。
- 异步:异步的调用关系用虚线标识,第一行显示类名.方法名,第二行显示语言类型-包名.类名,右侧显示异步图标。
Span前的数字表示当前方法所调用的所有方法的次数。最后一个被调用的方法前不显示次数。
当连续调用多个同级的相同方法、组件(类型、实例、操作相同)时,Span会合并展示。“N×Span名称”表示方法被调用的次数。开始时间、偏移量为合并的第一个方法的开始时间,响应时间、独占时间为所有方法的独占时间之和。
以下情况不合并:
发生异常不合并
跨应用节点不合并
异步节点不合并
发生异常时,方法为红色。单击发生异常的Span,右侧详情默认显示异常页签。
调用时序图
区域B以条形图的形式展示了代码的调用时序。单击或者将鼠标悬浮在条形图上,可以查看此次追踪的请求执行过程中执行的Span名称(类名.方法名)、开始时间、偏移量(该Span相对请求起始时间点的时间偏移量)、响应时间、独占时间(该Span自身的执行时间)和独占时间占比等等。
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:当前等待获取连接的线程数。
搜索
在区域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。
异常:展示当前线程的错误和异常。默认展开第一个异常。主线程的异常显示主线程和异步线程的所有异常。异步线程的异常只显示当前线程的异常。
图例及时间线
图例的深色线区块表示自身调用耗时,即独占时间,浅色线区块表示投影时间,即调用其他服务的耗时,所有区块的并集为总时间,红色线区块表示线程发生异常。
搜索
线程下的方法支持通过方法名称和占比耗时来搜索。在下拉菜单中进行切换即可。当选择方法时,支持模糊搜索。当选择占比时,大于指定比例的方法会出现在搜索结果中。
方法个数展示搜索结果中方法的个数/方法总个数。
方法耗时支持按方法总耗时和独占时间进行展示,单击右侧页签进行切换即可。
数据视图
方法列展示合并后的方法调用栈,格式为:包名.类名.方法名:行号。当连续多个(3个及以上)方法调用的独占时间占比<0.5%时,会被合并展示。以下情况除外:
- 根节点不合并
- 最后一个方法不合并
- 当子级有多条时,该方法不合并
占比:方法独占时间/线程总耗时,保留2位小数。
单击操作列的图标,选择自定义嵌码,可将该方法快速加入监控。
单击操作列的图标,选择查看源代码,可查看应用的源代码。只有在全局配置中开启获取源代码功能后,才能展示该选项。
异常
集中展示当前请求追踪过程中捕获的所有异常信息。所有的异常信息按异常出现的时间顺序排列,列表中包括:
- 偏移量:异常出现的时间点相对请求起始时间点的偏移量。
- 异常类型:异常类型包括事务错误(会导致事务失败)、代码异常、数据库异常、外部服务异常等多种类型。
异常名称:异常的名称,例如Java异常类名、404等状态码异常和数据库异常。
所属应用:发生该异常的应用名称。
- 所属实例:发生该异常的应用实例名称。
单击异常列表中的条目,可在下方的内容区域查看对应异常的详细信息,包括异常或错误信息、错误类型和错误堆栈。
参数信息
展示此次请求追踪中采集到的 HTTP请求和响应头中的参数,以及从方法参数或返回值中采集的用户自定义参数。
Code统计
Code统计页面展示该请求中耗时占比排名前100的方法信息。默认按照耗时占比从高到低排序。支持根据方法名称的首字母正反排序,也支持根据耗时占比、调用次数、总独占时间、平均独占时间和最大独占时间进行正反排序。
SQL分析
展示该请求的所有SQL语句列表,包括详细的SQL语句、调用次数、总耗时、平均执行时间和调用SQL语句的代码所在的行数。支持排序。
NoSQL分析
展示该请求的所有NoSQL操作列表,包括NoSQL类型、NoSQL操作、Key、NoSQL实例、调用次数和总耗时。支持排序。
数据项
展示该请求追踪中获取到的数据项信息,包括:数据项名称、Value和数据项来源。
Servers
Servers页面提供该请求追踪发生前后30分钟之内该事务入口应用的各个实例的JVM CPU、内存、线程和会话等指标的变化情况。
日志
日志页面展示该请求追踪发生前后的日志信息。
支持根据应用定位到指定应用上打印的日志,默认展示全部应用的日志。
支持根据追踪ID定位指定事务、服务接口或后台任务的的完整日志,默认根据当前追踪ID过滤出当前请求的完整日志。
支持选择前后15分钟、前后30分钟、前后1小时、前后2小时和前后8小时的日志进行查看。
支持通过输入日志关键字搜索日志。