概览通过 `traceparent` 将浏览器端与服务端的请求关联起来,结合 Edge Runtime 的 Route Handlers 能实现低延迟的追踪事件上报。OTLP HTTP 上报适合多平台后端。客户端生成与透传'use client' function genTraceparent(): string { const version = '00' const traceId = crypto.randomUUID().replace(/-/g, '').slice(0, 32) const spanId = crypto.randomUUID().replace(/-/g, '').slice(0, 16) const flags = '01' return `${version}-${traceId}-${spanId}-${flags}` } export async function fetchWithTrace(url: string) { const tp = genTraceparent() return fetch(url, { headers: { traceparent: tp } }) } Edge Route 上报app/api/ingest/route.tsexport const runtime = 'edge' export async function POST(req: Request) { const tp = req.headers.get('traceparent') || undefined const payload = await req.json() await fetch(process.env.OTLP_HTTP_EXPORT!, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ traceparent: tp, payload }), }) return Response.json({ ok: true }) } App Router 透传// app/posts/[id]/route.ts export async function GET(req: Request, { params }: { params: { id: string } }) { const tp = req.headers.get('traceparent') || '' const data = await fetch(`https://api.example.com/posts/${params.id}`, { headers: { traceparent: tp } }).then(r => r.json()) return Response.json({ data }) } 治理要点保持 `traceparent` 在客户端与服务端一致传递,避免断链。使用环境变量管理 OTLP 端点,避免泄露。结合指标与日志采集,实现端到端观测面。验证与指标浏览器:Chrome 120+、Edge 120+;API 兼容Next.js:15.0+;Edge Runtime:稳定追踪链路贯通;事件与指标上报成功率稳定

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部