Learn about our RFC process, Open RFC meetings & more.Join in the discussion! »

@opentelemetry/core

0.9.0 • Public • Published

OpenTelemetry Core

Gitter chat NPM Published Version dependencies devDependencies Apache License

This package provides default implementations of the OpenTelemetry API for trace and metrics. It's intended for use both on the server and in the browser.

Built-in Implementations

Built-in Propagators

HttpTraceContext Propagator

OpenTelemetry provides a text-based approach to propagate context to remote services using the W3C Trace Context HTTP headers.

This is used as a default Propagator

const api = require("@opentelemetry/api");
const { HttpTraceContext } = require("@opentelemetry/core");
 
/* Set Global Propagator */
api.propagation.setGlobalPropagator(new HttpTraceContext());

B3 Propagator

This is propagator for the B3 HTTP header format, which sends a SpanContext on the wire in an HTTP request, allowing other services to create spans with the right context. Based on: https://github.com/openzipkin/b3-propagation

const api = require("@opentelemetry/api");
const { B3Propagator } = require("@opentelemetry/core");
 
/* Set Global Propagator */
api.propagation.setGlobalPropagator(new B3Propagator());

Composite Propagator

Combines multiple propagators into a single propagator.

const api = require("@opentelemetry/api");
const { CompositePropagator } = require("@opentelemetry/core");
 
/* Set Global Propagator */
api.propagation.setGlobalPropagator(new CompositePropagator());

Correlation Context Propagator

Provides a text-based approach to propagate correlation context to remote services using the OpenTelemetry CorrelationContext Propagation HTTP headers.

const api = require("@opentelemetry/api");
const { HttpCorrelationContext } = require("@opentelemetry/core");
 
/* Set Global Propagator */
api.propagation.setGlobalPropagator(new HttpCorrelationContext());

Built-in Sampler

Sampler is used to make decisions on Span sampling.

Always Sampler

Samples every trace regardless of upstream sampling decisions.

This is used as a default Sampler

const { NodeTracerProvider } = require("@opentelemetry/node");
const { ALWAYS_SAMPLER } = require("@opentelemetry/core");
 
const tracerProvider = new NodeTracerProvider({
  sampler: ALWAYS_SAMPLER
});

Never Sampler

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

const { NodeTracerProvider } = require("@opentelemetry/node");
const { NEVER_SAMPLER } = require("@opentelemetry/core");
 
const tracerProvider = new NodeTracerProvider({
  sampler: NEVER_SAMPLER
});

Probability Sampler

Samples a configurable percentage of traces, and additionally samples any trace that was sampled upstream.

const { NodeTracerProvider } = require("@opentelemetry/node");
const { ProbabilitySampler } = require("@opentelemetry/core");
 
const tracerProvider = new NodeTracerProvider({
  sampler: new ProbabilitySampler(0.5)
});

Useful links

License

Apache 2.0 - See LICENSE for more information.

Install

npm i @opentelemetry/core

DownloadsWeekly Downloads

22,976

Version

0.9.0

License

Apache-2.0

Unpacked Size

105 kB

Total Files

77

Last publish

Collaborators

  • avatar
  • avatar
  • avatar
  • avatar