问题描述
在使用lightstep/opentelemetry-exporter-js之前,我可以同时使用自己的导出器和Lightstep导出器。
import { CollectorTraceExporter } from '@opentelemetry/exporter-collector';
import { NodeTracerProvider } from '@opentelemetry/node';
import { BatchSpanProcessor,ConsoleSpanExporter } from '@opentelemetry/tracing';
import { LightstepExporter } from 'lightstep-opentelemetry-exporter';
const initTracer = () => {
const serviceName = 'server-trace-service';
const tracerProvider = new NodeTracerProvider({
plugins: {
http: {
enabled: true,path: '@opentelemetry/plugin-http',},});
tracerProvider.addSpanProcessor(new BatchSpanProcessor(new ConsoleSpanExporter()));
tracerProvider.addSpanProcessor(
new BatchSpanProcessor(
new CollectorTraceExporter({
serviceName,})
)
);
tracerProvider.addSpanProcessor(
new BatchSpanProcessor(
new LightstepExporter({
serviceName,token: 'myToken',})
)
);
tracerProvider.register();
};
但是,仅看到lightstep / opentelemetry-exporter-js已被弃用并由lightstep/otel-launcher-node代替。
我检查了它和演示的源代码,它看起来像是OpenTelemetry之上的“框架”。
const {
lightstep,opentelemetry,} = require('lightstep-opentelemetry-launcher-node');
const sdk = lightstep.configureOpenTelemetry({
accesstoken: 'YOUR ACCESS TOKEN',serviceName: 'locl-ex',});
sdk.start().then(() => {
const tracer = opentelemetry.trace.getTracer('otel-node-example');
const span = tracer.startSpan('test-span');
span.end();
opentelemetry.trace.getTracerProvider().getActiveSpanProcessor().shutdown();
});
是否可以将其简单地用作OpenTelemetry出口商之一?
解决方法
lightstep-opentelemetry-launcher-node
基本上为您捆绑了必需的内容,以简化配置,因此它不是导出器。如果您只需在代码中将“ LightstepExporter”替换为“ OpenTelemetry Collector Exporter”,则只需执行此操作
import { CollectorTraceExporter } from '@opentelemetry/exporter-collector';
tracerProvider.addSpanProcessor(
new BatchSpanProcessor(
new CollectorTraceExporter({
url: 'YOUR_DIGEST_URL',headers: {
'Lightstep-Access-Token': 'YOUR_TOKEN'
}
})
)
);
lightstep/otel-launcher-node中的默认YOUR_DIGETS_URL
是https://ingest.lightstep.com:443/api/v2/otel/trace