JSPM

  • Created
  • Published
  • Downloads 4744066
  • Score
    100M100P100Q243098F
  • License Apache-2.0

OpenTelemetry B3 propagator provides context propagation for systems that are using the B3 header format

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@opentelemetry/propagator-b3) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    OpenTelemetry Propagator B3

    NPM Published Version Apache License

    The OpenTelemetry b3 propagator package provides multiple propagator implementations for systems using the b3 context format. See the b3 specification for complete details.

    B3 Formats

    Single-Header Format:

    b3: {TraceId}-{SpanId}-{SamplingState}-{ParentSpanId}

    Multi-Header Format:

    X-B3-TraceId: {TraceId}
    X-B3-SpanId: {SpanId}
    X-B3-ParentSpanId: {ParentSpanId}
    X-B3-Sampled: {SamplingState}
    • {TraceId}

      • Required
      • Encoded as 32 or 16 lower-hex characters
      • 16 character traceIds will be converted to 32 characters by left-padding with 0s to conform with the OpenTelemetry specification
    • {SpanId}

      • Required
      • Encoded as 16 lower-hex characters
    • {ParentSpanId}

      • Optional
      • Used to support the Zipkin functionality where the client and server spans that make up an HTTP request share the same id
      • Not propagated by this library
    • {SamplingState} - Single-header

      • Optional
      • Valid values
        • 1 - Accept
        • 0 - Deny
        • d - Debug
        • Absent - Defer sampling decision
    • {SamplingState} - Multi-header

      • Optional
      • Valid values
        • 1 - Accept
        • 0 - Deny
    • {Flags} - Multi-header

      • Optional
      • Debug is encoded as X-B3-Flags: 1. Absent or any other value can be ignored. Debug implies an accept decision, so don't also send the X-B3-Sampled header.

    B3 Propagation

    The default B3Propagator implements b3 propagation according to the OpenTelemetry specification. It extracts b3 context from multi and single header encodings and injects context using the single-header b3 encoding by default. The inject encoding can be changed to multi-header via configuration. See the examples below.

    B3 Single-Header Configuration

    const api = require('@opentelemetry/api');
    const { B3Propagator } = require('@opentelemetry/propagator-b3');
    
    api.propagation.setGlobalPropagator(new B3Propagator());

    B3 Multi-Header Configuration

    const api = require('@opentelemetry/api');
    const { B3Propagator, B3InjectEncoding } = require('@opentelemetry/propagator-b3');
    
    api.propagation.setGlobalPropagator(
      new B3Propagator({ injectEncoding: B3InjectEncoding.MULTI_HEADER })
    );

    B3 Single and Multi-Header Configuration

    The B3Propagator always extracts both the single and multi-header b3 encodings. If you need to inject both encodings this can accomplished using a composite propagator.

    const api = require('@opentelemetry/api');
    const { CompositePropagator } = require('@opentelemetry/core');
    const { B3Propagator, B3InjectEncoding } = require('@opentelemetry/propagator-b3');
    api.propagation.setGlobalPropagator(
      new CompositePropagator({
        propagators: [
          new B3Propagator(),
          new B3Propagator({ injectEncoding: B3InjectEncoding.MULTI_HEADER }),
        ],
      })
    );

    License

    Apache 2.0 - See LICENSE for more information.