打通前后端链路相关问题

本文介绍配置前后端链路打通时遇到的常见问题。

开启RUM链路追踪后,API列表页无法查看调用链(按钮置灰)

一般都是由于端侧未正确开启链路追踪导致,需要结合应用类型,做如下检查:

  • Web应用:需检查是否为跨域请求,Web端默认为极简模式,开启链路追踪后仅对主域名生效,如果是跨域请求,则需要切换至完整模式,手动配置域名和透传协议,配置方法请参见Web端监控关联前后端Trace

  • 小程序应用:小程序不同于Web浏览器,没有主域名概念,因此需要检查对应的域名是否已正确配置透传协议,配置方法请参见Web端监控关联前后端Trace

  • 移动端应用(iOS/Android):需检查API请求对应的域名,是否已在控制台目标应用的应用设置 > 请求管理页面添加为自身服务,并开启了链路追踪,配置方法请参见App监控关联前后端Trace

开启RUM链路追踪后,看不到完整调用链

查看调用链详情中是否有RUM的入口Span数据。

  • 如果没有,则说明RUM侧未正常开启链路追踪,可以参考RUM帮助文档检查配置是否正确,并验证端侧请求中是否携带了对应的协议Header。具体操作文档,请参见验证RUM关联Trace验证是否配置成功

  • 如果可以看到RUM的入口Span,但是没有后端服务调用链数据,此时可能有以下几种原因:

    • 使用了阿里云WAF且后端接入了ARMS探针。

      此时需要调整后端应用链路透传协议优先级,因为WAF默认会注入老版EagleEye的协议头(eagleeye-traceid),该协议头在ARMS探针中优先级高于RUM透传的OpenTelemetry、Skywalking协议头,导致RUM协议头失效。

      修改方法如下:

      ARMS控制台应用监控 > 应用列表页面(新版)单击目标应用,然后进入应用配置页面,将透传协议改为RUM侧使用的协议类型,透传模式选择优先,单击保存。

      image

      说明
      • 该配置要求后端应用使用的探针版本在4.1.x及以上,升级探针的操作请参见升级ARMS探针

      • 如果遇到应用重启后,该配置未生效的问题,一般是由于探针拉取配置失败导致,请提交工单处理。

    • 没有使用阿里云WAF,需要确认是否采用了Nginx之类的网关,确保网关侧有正常透传RUM注入的协议头,各协议对应的协议头请参见PropagatorType,以Nginx转发W3C TraceContext协议头为例,可参考如下配置修改:

      server {
          listen 80;
      
          location / {
              proxy_pass http://backend_server;  # 这里换成你的后端服务器地址
      
              # 转发 W3C Trace Context 头部
              proxy_set_header traceparent $http_traceparent;
              proxy_set_header tracestate $http_tracestate;
      
              # 你可以根据需要设置更多的头部
              # proxy_set_header Host $host;
              # proxy_set_header X-Real-IP $remote_addr;
              # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              # proxy_set_header X-Forwarded-Proto $scheme;
          }
      }