Newly Purchased Memories

    @opentelemetry/exporter-trace-otlp-http
    TypeScript icon, indicating that this package has built-in type declarations

    0.34.0 • Public • Published

    OpenTelemetry Collector Exporter for web and node

    NPM Published Version Apache License

    Note: This is an experimental package under active development. New releases may include breaking changes.

    This module provides exporter for web and node to be used with OTLP (http/json) compatible receivers. Compatible with opentelemetry-collector versions >=0.48 <=0.50.

    Installation

    npm install --save @opentelemetry/exporter-trace-otlp-http

    Service Name

    The OpenTelemetry Collector Exporter does not have a service name configuration. In order to set the service name, use the service.name resource attribute as prescribed in the OpenTelemetry Resource Semantic Conventions. To see documentation and sample code for the metric exporter, see the exporter-metrics-otlp-http package

    Traces in Web

    The OTLPTraceExporter in Web expects the endpoint to end in /v1/traces.

    import {
      BatchSpanProcessor,
      WebTracerProvider,
    } from '@opentelemetry/sdk-trace-web';
    import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
    
    const collectorOptions = {
      url: '<opentelemetry-collector-url>', // url is optional and can be omitted - default is http://localhost:4318/v1/traces
      headers: {}, // an optional object containing custom headers to be sent with each request
      concurrencyLimit: 10, // an optional limit on pending requests
    };
    
    const provider = new WebTracerProvider();
    const exporter = new OTLPTraceExporter(collectorOptions);
    provider.addSpanProcessor(new BatchSpanProcessor(exporter, {
      // The maximum queue size. After the size is reached spans are dropped.
      maxQueueSize: 100,
      // The maximum batch size of every export. It must be smaller or equal to maxQueueSize.
      maxExportBatchSize: 10,
      // The interval between two consecutive exports
      scheduledDelayMillis: 500,
      // How long the export can run before it is cancelled
      exportTimeoutMillis: 30000,
    }));
    
    provider.register();

    Traces in Node - JSON over http

    const { BasicTracerProvider, BatchSpanProcessor } = require('@opentelemetry/sdk-trace-base');
    const { OTLPTraceExporter } =  require('@opentelemetry/exporter-trace-otlp-http');
    
    const collectorOptions = {
      url: '<opentelemetry-collector-url>', // url is optional and can be omitted - default is http://localhost:4318/v1/traces
      headers: {
        foo: 'bar'
      }, // an optional object containing custom headers to be sent with each request will only work with http
      concurrencyLimit: 10, // an optional limit on pending requests
    };
    
    const provider = new BasicTracerProvider();
    const exporter = new OTLPTraceExporter(collectorOptions);
    provider.addSpanProcessor(new BatchSpanProcessor(exporter, {
      // The maximum queue size. After the size is reached spans are dropped.
      maxQueueSize: 1000,
      // The interval between two consecutive exports
      scheduledDelayMillis: 30000,
    }));
    
    provider.register();

    GRPC

    For GRPC please check npm-url-grpc

    PROTOBUF

    For PROTOBUF please check npm-url-proto

    Configuration options as environment variables

    Instead of providing options to OTLPTraceExporter explicitly, environment variables may be provided instead.

    OTEL_EXPORTER_OTLP_ENDPOINT=https://localhost:4318
    # this will automatically append the version and signal path
    # e.g. https://localhost:4318/v1/traces for `OTLPTraceExporter` and https://localhost:4318/v1/metrics for `OTLPMetricExporter`

    If the trace and metric exporter endpoints have different providers, the env var for per-signal endpoints are available to use

    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://trace-service:4318/v1/traces
    OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=https://metric-service:4318/v1/metrics
    # version and signal needs to be explicit

    The per-signal endpoints take precedence and overrides OTEL_EXPORTER_OTLP_ENDPOINT

    For more details, see OpenTelemetry Specification on Protocol Exporter.

    Exporter Timeout Configuration

    The OTLPTraceExporter has a timeout configuration option which is the maximum time, in milliseconds, the OTLP exporter will wait for each batch export. The default value is 10000ms.

    To override the default timeout duration, use the following options:

    • Set with environment variables:

      Environment variable Description
      OTEL_EXPORTER_OTLP_TRACES_TIMEOUT The maximum waiting time, in milliseconds, allowed to send each OTLP trace batch. Default is 10000.
      OTEL_EXPORTER_OTLP_TIMEOUT The maximum waiting time, in milliseconds, allowed to send each OTLP trace and metric batch. Default is 10000.

      OTEL_EXPORTER_OTLP_TRACES_TIMEOUT takes precedence and overrides OTEL_EXPORTER_OTLP_TIMEOUT.

    • Provide timeoutMillis to OTLPTraceExporter with collectorOptions:

      const collectorOptions = {
        timeoutMillis: 15000,
        url: '<opentelemetry-collector-url>', // url is optional and can be omitted - default is http://localhost:4318/v1/traces
        headers: {
          foo: 'bar'
        }, // an optional object containing custom headers to be sent with each request will only work with http
        concurrencyLimit: 10, // an optional limit on pending requests
      };
      
      const exporter = new OTLPTraceExporter(collectorOptions);

      Providing timeoutMillis with collectorOptions takes precedence and overrides timeout set with environment variables.

    Running opentelemetry-collector locally to see the traces

    1. Go to examples/otlp-exporter-node
    2. Follow the instructions there to inspect traces.

    Useful links

    License

    Apache 2.0 - See LICENSE for more information.

    Install

    npm i @opentelemetry/exporter-trace-otlp-http

    DownloadsWeekly Downloads

    396,400

    Version

    0.34.0

    License

    Apache-2.0

    Unpacked Size

    88.1 kB

    Total Files

    66

    Last publish

    Collaborators

    • bogdandrutu
    • dyladan