一条 trace,三个服务
SDK 在应用启动前补丁 http 与 pg,每次出站调用都成为入站请求 span 的子 span。trace context 经网络传播,网关、订单、支付 span 共享同一 trace id。
import { NodeSDK } from '@opentelemetry/sdk-node';
new NodeSDK({
serviceName: 'orders',
traceExporter: new OTLPTraceExporter({ url: 'http://collector:4318/v1/traces' }),
instrumentations: [getNodeAutoInstrumentations()],
}).start();
先于应用加载
tracing 文件必须在应用代码前加载,补丁才能在任何库 import 前就位。用 –require 或 NODE_OPTIONS 环境变量优先加载。
node --require ./tracing.js dist/index.js
预期结果
经网关的请求在 collector 中产生一条 trace,含三个服务的 span 并由 parent id 串联。最慢一跳是耗时最长的 span,失败精确显示哪个服务抛错。自动埋点覆盖主流库但不覆盖自定义 RPC,后者需手工 span;高峰期高采样率可能压垮 collector,应做头或尾采样控制流量。