背景与价值将浏览器侧请求注入 `traceparent`,后端采集并关联,形成端到端追踪链路,提升问题定位效率。前端注入示例function genTraceId() {
const bytes = crypto.getRandomValues(new Uint8Array(16));
return Array.from(bytes, b => b.toString(16).padStart(2, '0')).join('');
}
function genSpanId() {
const bytes = crypto.getRandomValues(new Uint8Array(8));
return Array.from(bytes, b => b.toString(16).padStart(2, '0')).join('');
}
function buildTraceparent(traceId: string, spanId: string, flags = '01') {
return `00-${traceId}-${spanId}-${flags}`;
}
async function fetchWithTrace(url: string, init: RequestInit = {}) {
const traceId = genTraceId(); const spanId = genSpanId();
const tp = buildTraceparent(traceId, spanId);
const headers = new Headers(init.headers || {});
headers.set('traceparent', tp);
return fetch(url, { ...init, headers });
}
后端关联(Node/Express + OpenTelemetry 概念)中间件读取 `traceparent` 并创建对应 span;将响应头回传或记录。指标验证(Chrome 128/Edge 130 + 后端采集)关联覆盖率:前后端链路关联 ≥ 95%。定位效率:关键问题定位时间降低 30%–50%。准确性:跨层关联误匹配率 ≤ 0.2%。风险与治理跨域与隐私:避免在第三方请求中携带内部追踪;仅在自有域注入。采样率:控制采样避免过度开销;对关键事务提高采样比。测试清单前后端日志:检查 traceId/traceparent 在请求与服务端 span 中一致。异常路径:错误请求仍能关联并提供上下文。

发表评论 取消回复