我正在尝试使用 OpenTelementry 检测 Node.js 程序。此应用程序不使用任何 http 框架(Express 等)。它处理 Kafka 消息,需要调用 Redis 和一些 REST API(通过 Axios)。我为 OpenTelementry 创建了一个简单的测试,但无论我做什么,我都无法获得一个跨度来生成任何东西。任何帮助,将不胜感激。
import { NodeTracerProvider } from '@opentelemetry/node';
import { ConsoleSpanExporter, SimpleSpanProcessor } from '@opentelemetry/tracing';
const provider = new NodeTracerProvider();
const consoleExporter = new ConsoleSpanExporter();
provider.addSpanProcessor(new SimpleSpanProcessor(consoleExporter));
provider.register();
import opentelemetry, { context, getSpan, getSpanContext } from '@opentelemetry/api';
const tracer = opentelemetry.trace.getTracer('test');
const spanContext = getSpanContext(context.active());
console.log(spanContext);
const traceId = spanContext && spanContext.traceId;
console.log(traceId);
const span = tracer.startSpan('message');
setTimeout(() => {
console.log('message processed');
}, 1000);
span.end();
在我的控制台中,我得到的只是跨度上下文和跟踪 ID 的未定义,我得到了处理我的消息。