本文介绍配置前后端链路打通时遇到的常见问题。
开启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侧使用的协议类型,透传模式选择优先,单击保存。
没有使用阿里云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; } }