Как использовать lightstep/otel-launcher-node в качестве экспортера OpenTelemetry?

До того, как я использовал https://github.com/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 устарело и заменено на https://github.com/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?

1 ответ

Решение

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'
        }
      })
    )
  );

По умолчанию YOUR_DIGETS_URLот https://github.com/lightstep/otel-launcher-node/ естьhttps://ingest.lightstep.com:443/api/v2/otel/trace

Другие вопросы по тегам