@opentelemetry/sdk-trace-base
OpenTelemetry Tracing
Last updated 16 days ago by GitHub Actions .
Apache-2.0 · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install @opentelemetry/sdk-trace-base 
SYNC missed versions from official npm registry.

OpenTelemetry Tracing SDK

NPM Published Version Apache License

The tracing module contains the foundation for all tracing SDKs of opentelemetry-js.

Used standalone, this module provides methods for manual instrumentation of code, offering full control over span creation for client-side JavaScript (browser) and Node.js.

It does not provide automated instrumentation of known libraries, context propagation or distributed-context out-of-the-box.

For a TracerProvider that includes default context management and propagation for Node.js, please see @opentelemetry/sdk-trace-node.

For a TracerProvider that includes default context management and propagation for Browser, please see @opentelemetry/sdk-trace-web.

Installation

npm install --save @opentelemetry/api
npm install --save @opentelemetry/sdk-trace-base

Usage

const { trace } = require('@opentelemetry/api');
const { BasicTracerProvider } = require('@opentelemetry/sdk-trace-base');

// To start a trace, you first need to initialize the Tracer provider.
// NOTE: The default OpenTelemetry tracer provider does not record any tracing information.
//       Registering a working tracer provider allows the API methods to record traces.
trace.setGlobalTracerProvider(new BasicTracerProvider());

// Important: requires a context manager and propagator to be registered manually.
// propagation.setGlobalPropagator(propagator);     // replace `propagator` with your `TextMapPropagator`, for example: `W3CTraceContextPropagator` from `@openetelemetry/core`
// context.setGlobalContextManager(contextManager); // replace `contextManager` with your `ContextManager`: `AsyncLocalStorageContextManager` from `@openetelemetry/async-hooks`

// To create a span in a trace, we used the global singleton tracer to start a new span.
const span = trace.getTracer('default').startSpan('foo');

// Set a span attribute
span.setAttribute('key', 'value');

// We must end the spans so they become available for exporting.
span.end();

Config

Tracing configuration is a merge of user supplied configuration with both the default configuration as specified in config.ts and an environmentally configurable sampling (via OTEL_TRACES_SAMPLER and OTEL_TRACES_SAMPLER_ARG).

Built-in Samplers

Sampler is used to make decisions on Span sampling.

AlwaysOn Sampler

Samples every trace regardless of upstream sampling decisions.

This is used as a default Sampler

const {
  AlwaysOnSampler,
  BasicTracerProvider,
} = require("@opentelemetry/sdk-trace-base");

const tracerProvider = new BasicTracerProvider({
  sampler: new AlwaysOnSampler()
});

AlwaysOff Sampler

Doesn't sample any trace, regardless of upstream sampling decisions.

const {
  AlwaysOffSampler,
  BasicTracerProvider,
} = require("@opentelemetry/sdk-trace-base");

const tracerProvider = new BasicTracerProvider({
  sampler: new AlwaysOffSampler()
});

TraceIdRatioBased Sampler

Samples some percentage of traces, calculated deterministically using the trace ID. Any trace that would be sampled at a given percentage will also be sampled at any higher percentage.

The TraceIDRatioSampler may be used with the ParentBasedSampler to respect the sampled flag of an incoming trace.

const {
  BasicTracerProvider,
  TraceIdRatioBasedSampler,
} = require("@opentelemetry/sdk-trace-base");

const tracerProvider = new BasicTracerProvider({
  // See details of ParentBasedSampler below
  sampler: new ParentBasedSampler({
    // Trace ID Ratio Sampler accepts a positional argument
    // which represents the percentage of traces which should
    // be sampled.
    root: new TraceIdRatioBasedSampler(0.5)
  });
});

ParentBased Sampler

  • This is a composite sampler. ParentBased helps distinguished between the following cases:
    • No parent (root span).
    • Remote parent with sampled flag true
    • Remote parent with sampled flag false
    • Local parent with sampled flag true
    • Local parent with sampled flag false

Required parameters:

  • root(Sampler) - Sampler called for spans with no parent (root spans)

Optional parameters:

  • remoteParentSampled(Sampler) (default: AlwaysOn)
  • remoteParentNotSampled(Sampler) (default: AlwaysOff)
  • localParentSampled(Sampler) (default: AlwaysOn)
  • localParentNotSampled(Sampler) (default: AlwaysOff)
Parent parent.isRemote() parent.isSampled() Invoke sampler
absent n/a n/a root()
present true true remoteParentSampled()
present true false remoteParentNotSampled()
present false true localParentSampled()
present false false localParentNotSampled()
const {
  AlwaysOffSampler,
  BasicTracerProvider,
  ParentBasedSampler,
  TraceIdRatioBasedSampler,
} = require("@opentelemetry/sdk-trace-base");

const tracerProvider = new BasicTracerProvider({
  sampler: new ParentBasedSampler({
    // By default, the ParentBasedSampler will respect the parent span's sampling
    // decision. This is configurable by providing a different sampler to use
    // based on the situation. See configuration details above.
    //
    // This will delegate the sampling decision of all root traces (no parent)
    // to the TraceIdRatioBasedSampler.
    // See details of TraceIdRatioBasedSampler above.
    root: new TraceIdRatioBasedSampler(0.5)
  })
});

Example

See examples/basic-tracer-node for an end-to-end example, including exporting created spans.

Useful links

License

Apache 2.0 - See LICENSE for more information.

Current Tags

  • 2.0.0-rc.1                                ...           canary (a year ago)
  • 2.6.1                                ...           latest (16 days ago)
  • 1.8.0                                ...           next (3 years ago)

73 Versions

  • 2.6.1                                ...           16 days ago
  • 2.6.0                                ...           a month ago
  • 2.5.1                                ...           2 months ago
  • 2.5.0                                ...           3 months ago
  • 2.4.0                                ...           3 months ago
  • 2.3.0                                ...           3 months ago
  • 2.2.0                                ...           6 months ago
  • 2.1.0                                ...           7 months ago
  • 2.0.1                                ...           a year ago
  • 2.0.0                                ...           a year ago
  • 2.0.0-rc.1                                ...           a year ago
  • 2.0.0-dev.1                                ...           a year ago
  • 2.0.0-dev.0                                ...           a year ago
  • 1.30.1                                ...           a year ago
  • 1.30.0                                ...           a year ago
  • 1.29.0                                ...           a year ago
  • 1.28.0                                ...           a year ago
  • 1.27.0                                ...           a year ago
  • 1.26.0                                ...           2 years ago
  • 1.25.1                                ...           2 years ago
  • 1.25.0                                ...           2 years ago
  • 1.24.1                                ...           2 years ago
  • 1.24.0                                ...           2 years ago
  • 1.23.0                                ...           2 years ago
  • 1.22.0                                ...           2 years ago
  • 1.21.0                                ...           2 years ago
  • 1.20.0                                ...           2 years ago
  • 1.19.0                                ...           2 years ago
  • 1.18.1                                ...           2 years ago
  • 1.18.0                                ...           2 years ago
  • 1.17.1                                ...           3 years ago
  • 1.17.0                                ...           3 years ago
  • 1.16.0                                ...           3 years ago
  • 1.15.2                                ...           3 years ago
  • 1.15.1                                ...           3 years ago
  • 1.15.0                                ...           3 years ago
  • 1.14.0                                ...           3 years ago
  • 1.13.0                                ...           3 years ago
  • 1.12.0                                ...           3 years ago
  • 1.11.0                                ...           3 years ago
  • 1.10.1                                ...           3 years ago
  • 1.10.0                                ...           3 years ago
  • 1.9.1                                ...           3 years ago
  • 1.9.0                                ...           3 years ago
  • 1.8.0                                ...           3 years ago
  • 1.7.0                                ...           4 years ago
  • 1.6.0                                ...           4 years ago
  • 1.5.0                                ...           4 years ago
  • 1.4.0                                ...           4 years ago
  • 1.3.1                                ...           4 years ago
  • 1.3.0                                ...           4 years ago
  • 1.2.0                                ...           4 years ago
  • 1.1.1                                ...           4 years ago
  • 1.1.0                                ...           4 years ago
  • 1.0.1                                ...           4 years ago
  • 1.0.0                                ...           5 years ago
  • 0.26.0                                ...           5 years ago
  • 0.25.1-alpha.23                                ...           5 years ago
  • 0.25.1-alpha.16                                ...           5 years ago
  • 0.25.1-alpha.13                                ...           5 years ago
  • 0.25.1-alpha.12                                ...           5 years ago
  • 0.25.1-alpha.7                                ...           5 years ago
  • 0.25.1-alpha.4                                ...           5 years ago
  • 0.25.1-alpha.2                                ...           5 years ago
  • 0.25.0                                ...           5 years ago
  • 0.25.1-alpha.21                                ...           5 years ago
  • 0.24.1-alpha.20                                ...           5 years ago
  • 0.24.1-alpha.18                                ...           5 years ago
  • 0.24.1-alpha.14                                ...           5 years ago
  • 0.24.1-alpha.9                                ...           5 years ago
  • 0.24.1-alpha.7                                ...           5 years ago
  • 0.24.1-alpha.5                                ...           5 years ago
  • 0.24.1-alpha.4                                ...           5 years ago

Copyright 2013 - present © cnpmjs.org | Home |