全部产品
阿里云办公

前后端链路追踪

更新时间:2018-09-17 19:41:06

在前端监控中,即便已知 API 的请求耗时,也无从知晓准确的网络传输性能、后端服务的调用链路及性能,因而无法快速准确地排查应用 API 问题。前后端链路追踪功能可以解决此类问题,它会将 API 请求从前端发出到后端调用的链路串联起来,真实还原代码执行的完整现场。

前提条件

必须开通阿里云 ARMS 前端监控和应用监控服务并搭配使用二者,才能获得前后端的完整调用链路。

  • 阿里云 ARMS 前端监控

    • SDK 配置

      • 允许 API 自动上报,即不关闭 API 自动上报。

      • 允许前后端链路追踪,即配置 enableLinkTrace 为 true。具体配置为:

        1. <script>
        2. !(function(c,b,d,a){c[a]||(c[a]={});c[a].config={pid:"xxx",imgUrl:"https://arms-retcode.aliyuncs.com/r.png?", enableLinkTrace: true};
        3. with(b)with(body)with(insertBefore(createElement("script"),firstChild))setAttribute("crossorigin","",src=d)
        4. })(window,document,"https://retcode.alicdn.com/retcode/bl.js","__bl");
        5. </script>
    • 工作原理

      • 在允许 API 自动上报的前提下,如果 API 与当前应用的域名同源,则会在 API 请求头(Request Header)加入两个自定义 Header:EagleEye-TraceID 和 EagleEye-SessionID。EagleEye-TraceID 即串联前后端链路的标识。
      • 如果 API 与当前应用的域名不同源,则不会在请求头添加自定义 Header,以保证应用请求可以正常发送。
      • 如需验证前后端链路追踪配置是否生效,可以打开控制台查看对应 API 请求的 Request Headers 中是否有 EagleEye-TraceID 和 EagleEye-SessionID 这两个标识(如图所示)。

        CAUTION:

        EagleEye-TraceID 和 EagleEye-SessionID 的值有相应的含义,请勿自行生成。

  • 阿里云 ARMS 应用监控

    • 关于应用监控的配置,请参考应用监控概述

    • 仅 2.4.5 或更高版本的应用监控探针支持该功能。

使用方法

在阿里云 ARMS 前端监控中,总览、API 请求和页面这三个页面均提供了 API 链路追踪模块。

您可以在此模块中执行以下操作:

  • 按照上报时间或请求耗时对 API 进行升序或降序排列
  • 单击链路追踪,即可进入调用链路标签页,查看前端监控的整体耗时和后端应用的调用时序图。
  • 单击访问明细,即可进入查看详情页面,查看 API 请求的详细信息。

使用场景和案例

应用监控可提供 API 在后端的处理性能及调用链路,但这些数据未必能准确反映用户的真实体验。前端监控只能监控到 API 从发送到返回的整体耗时及状态,无法提供后端服务的调用链路及性能数据。在这种情况下,前后端链路追踪功能可将前端与后端串联起来,给您一站式的问题排查体验。

通过调用的时间轴,可以知道是网络传输还是后端调用的时间长,同时点击后端应用中的线程剖析,可以看到本次请求后端的完整调用链路。从而根据业务定位是什么原因导致API错误。

  • 当 API 返回错误码或者业务逻辑错误时定位问题

    1. 在 API 链路追踪模块的 API 失败列表中,找到相关的 API 或者 TraceID,并单击相应的链路追踪按钮,以查看前端监控的整体耗时和后端应用的调用时序图。

    2. 根据调用的时间轴判断,耗时长的是网络传输还是后端调用。

    3. 对后端应用单击方法栈栏中的放大镜图标,可以查看本次请求的完整后端调用链,并根据业务定位导致 API 错误的原因。

  • 当 API 耗时较长时定位问题

    1. 在 API 链路追踪模块中,按照请求耗时对 API 进行降序排列,找到耗时较长的 API 或者 TraceID。

    2. 在耗时较长的记录所在行上,单击相应的链路追踪按钮,以查看前端监控的整体耗时和后端应用的调用时序图。

      • 如果后端应用处理时间较短,而整体耗时较长,则说明 API 请求从发送到服务端以及从服务端返回数据到浏览器端的网络传输耗时较长。此时可以单击访问明细,并在查看详情页面上查看本次访问的网络、地域、浏览器、设备、操作系统等信息。
      • 如果后端应用处理时间较长,则说明后端处理的性能较差。此时可以单击方法栈栏中的放大镜图标,并在本地方法栈对话框中查看后端链路上哪部分内容耗时较长,继而定位问题。