全链路场景可以查看服务端到客户端整个链路的完整数据,帮助快速定位问题。本文介绍如何接入WebPro端监控的全链路打通场景。
服务需要在响应头配置Access-Control-Allow-Headers
来允许x-rum-traceparent和x-rum-tracestate请求头被传递。配置示例:Access-Control-Allow-Headers: x-rum-traceparent, x-rum-tracestate
配置后需充分验证,否则请求可能会因为跨域错误导致发送失败。
import client from '@apmplus/web' client('init', { ... plugins: { ... fetch: { // 如果请求由fetch API 发出,则需要在fetch插件上配置 trace: { sample: 1, // trace 采样率,采样规则为会话采样,也就是一次会话中的符合要求的请求要么全部开启trace,要么全部不开启trace origins: ['xxx'], // origins用作请求地址匹配,只有匹配上origins的请求才会开启trace } }, ajax: { // 如果请求由xhr API发出,则需要在ajax插件上配置 trace: { sample: 1, // trace 采样率,采样规则为会话采样,也就是一次会话中的符合要求的请求要么全部开启trace,要么全部不开启trace origins: ['xxx'] // origins用作请求地址匹配,只有匹配上origins的请求才会开启trace } } }, ... })
如果@apmplus/web配置正确,对应的请求里会携带两个请求头,分别是X-Rum-Traceparent和X-Rum-Tracestate,同时在X-Rum-Tracestate中有携带当前的app_id。
如果没有携带请求头,请自行排查SDK的版本是否 >= v1.3.0或者配置的结构是否正确。