Socket
Socket
Sign inDemoInstall

@opentelemetry/api

Package Overview
Dependencies
0
Maintainers
4
Versions
62
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @opentelemetry/api

Public API for OpenTelemetry


Version published
Maintainers
4
Install size
633 kB
Created

Package description

What is @opentelemetry/api?

The @opentelemetry/api package provides a set of APIs to instrument JavaScript applications for telemetry purposes. It allows developers to collect traces and metrics from their applications, which can then be exported to various observability backends for monitoring and analysis. The API is designed to be minimal, extensible, and vendor-neutral.

What are @opentelemetry/api's main functionalities?

Tracing

This feature allows the creation and management of traces to monitor the flow of a request through various services. The code sample demonstrates how to create a tracer, start a new span, and then end the span.

const { trace } = require('@opentelemetry/api');
const tracer = trace.getTracer('example-tracer');
const span = tracer.startSpan('example-span');
span.end();

Context Propagation

This feature enables the propagation of context information across asynchronous operations or service boundaries. The code sample shows how to associate a span with a context and execute a function within this context.

const { context, trace } = require('@opentelemetry/api');
const currentContext = context.active();
const span = trace.getTracer('example-tracer').startSpan('example-span');
context.with(trace.setSpan(currentContext, span), () => {
  // Your synchronous or asynchronous operation here
  span.end();
});

Metrics

This feature supports the collection of quantitative measurements of operational events, such as request counts. The code sample illustrates how to create a meter, define a counter metric, and increment the counter.

const { metrics } = require('@opentelemetry/api');
const meter = metrics.getMeter('example-meter');
const counter = meter.createCounter('example-counter');
counter.add(1);

Other packages similar to @opentelemetry/api

Changelog

Source

1.1.0

:rocket: (Enhancement)

  • opentelemetry-resources
    • #2727 feat(opentelemetry-resources): add runtime version information (@cuichenli)
  • exporter-trace-otlp-http, opentelemetry-core
  • instrumentation-http
  • opentelemetry-core, opentelemetry-exporter-jaeger
    • #2754 fix(exporter-jaeger): add env variable for agent port (@blumamir)
  • exporter-trace-otlp-grpc, exporter-trace-otlp-http, exporter-trace-otlp-proto, opentelemetry-context-async-hooks, opentelemetry-context-zone-peer-dep, opentelemetry-core, opentelemetry-exporter-jaeger, opentelemetry-exporter-zipkin, opentelemetry-propagator-b3, opentelemetry-propagator-jaeger, opentelemetry-resources, opentelemetry-sdk-trace-base, opentelemetry-sdk-trace-node, opentelemetry-sdk-trace-web, opentelemetry-shim-opentracing
  • opentelemetry-sdk-trace-web
  • exporter-trace-otlp-http, exporter-trace-otlp-proto
    • #2557 feat(otlp-exporter-http): change otlp-http port to canonical 4318 (@secustor)
  • exporter-trace-otlp-grpc, exporter-trace-otlp-http, exporter-trace-otlp-proto, opentelemetry-core, opentelemetry-exporter-jaeger, opentelemetry-sdk-trace-base
  • opentelemetry-propagator-jaeger
    • #2673 feat(@opentelemetry/propagator-jaeger): support custom baggage prefix (@sschegolev)
  • exporter-trace-otlp-grpc, exporter-trace-otlp-http, exporter-trace-otlp-proto
  • opentelemetry-context-zone-peer-dep, opentelemetry-context-zone, opentelemetry-core, opentelemetry-exporter-zipkin, opentelemetry-propagator-b3, opentelemetry-resources, opentelemetry-sdk-trace-base, opentelemetry-sdk-trace-web, opentelemetry-semantic-conventions

:bug: (Bug Fix)

  • exporter-trace-otlp-grpc, exporter-trace-otlp-http, exporter-trace-otlp-proto
  • opentelemetry-sdk-trace-base
    • #2790 fix: pass same context to Sampler and SpanProcessor in root span case (@Flarna)
    • #2757 fix: add parentContext to onStart (@Flarna)
    • #2678 fix: span attribute count and value limits (#2671) (@Bataran)
    • #2679 fix: span events count limit when set to 0 (@Bataran)
  • opentelemetry-core
    • #2766 fix(baggage): include baggage metadata when propagating baggage entries (@chrskrchr)
  • opentelemetry-exporter-jaeger
    • #2731 fix(exporter-jaeger): transform all links to jaeger reference (@blumamir)
  • opentelemetry-resources
    • #2739 fix(resources): align exported names in different environments (@legendecas)
  • Other
    • #2680 fix: tracer typo in fetchxhr examples (@MSNev)
    • #2650 fix: clientMethodTrace missing original properties (@bgpo)
  • opentelemetry-propagator-jaeger
  • opentelemetry-exporter-zipkin, opentelemetry-sdk-trace-web
    • #2689 fix: remove window and document dependencies in web packages (@legendecas)

:books: (Refine Doc)

:house: (Internal)

  • opentelemetry-sdk-trace-base
    • #2768 test(sdk-trace-base): pin core.hrtime dependencies on timeOrigin (@legendecas)
  • exporter-trace-otlp-http, opentelemetry-context-zone-peer-dep, opentelemetry-context-zone, opentelemetry-core, opentelemetry-exporter-zipkin, opentelemetry-propagator-b3, opentelemetry-resources, opentelemetry-sdk-trace-base, opentelemetry-sdk-trace-web, opentelemetry-semantic-conventions
  • Other
  • opentelemetry-core
  • exporter-trace-otlp-grpc, exporter-trace-otlp-http, exporter-trace-otlp-proto, opentelemetry-exporter-jaeger, opentelemetry-exporter-zipkin, opentelemetry-propagator-b3, opentelemetry-resources, opentelemetry-sdk-trace-base, opentelemetry-sdk-trace-web, opentelemetry-semantic-conventions
  • exporter-trace-otlp-grpc, exporter-trace-otlp-http, exporter-trace-otlp-proto, opentelemetry-context-async-hooks, opentelemetry-context-zone-peer-dep, opentelemetry-context-zone, opentelemetry-core, opentelemetry-exporter-jaeger, opentelemetry-exporter-zipkin, opentelemetry-propagator-b3, opentelemetry-propagator-jaeger, opentelemetry-resources, opentelemetry-sdk-trace-base, opentelemetry-sdk-trace-node, opentelemetry-sdk-trace-web, opentelemetry-semantic-conventions, opentelemetry-shim-opentracing, template
  • opentelemetry-context-async-hooks, opentelemetry-context-zone-peer-dep, opentelemetry-context-zone, opentelemetry-core, opentelemetry-exporter-jaeger, opentelemetry-exporter-zipkin, opentelemetry-propagator-b3, opentelemetry-propagator-jaeger, opentelemetry-resources, opentelemetry-sdk-trace-base, opentelemetry-sdk-trace-node, opentelemetry-sdk-trace-web, opentelemetry-semantic-conventions, opentelemetry-shim-opentracing
  • opentelemetry-exporter-jaeger, opentelemetry-exporter-zipkin, opentelemetry-resources, opentelemetry-semantic-conventions
  • opentelemetry-sdk-trace-web

Committers: 24

Readme

Source

API Documentation   •   Getting In Touch (GitHub Discussions)

GitHub release (latest by date including pre-releases) Codecov Status license
Build Status Build Status


OpenTelemetry API for JavaScript

NPM Published Version

This package provides everything needed to interact with the OpenTelemetry API, including all TypeScript interfaces, enums, and no-op implementations. It is intended for use both on the server and in the browser.

The methods in this package perform no operations by default. This means they can be safely called by a library or end-user application whether there is an SDK registered or not. In order to generate and export telemetry data, you will also need an SDK such as the OpenTelemetry JS SDK.

Tracing Quick Start

You Will Need

  • An application you wish to instrument
  • OpenTelemetry JS SDK
  • Node.js >=8.5.0 (14+ is preferred) or an ECMAScript 5+ compatible browser

Note: ECMAScript 5+ compatibility is for this package only. Please refer to the documentation for the SDK you are using to determine its minimum ECMAScript version.

Note for library authors: Only your end users will need an OpenTelemetry SDK. If you wish to support OpenTelemetry in your library, you only need to use the OpenTelemetry API. For more information, please read the tracing documentation.

Install Dependencies

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

Trace Your Application

In order to get started with tracing, you will need to first register an SDK. The SDK you are using may provide a convenience method which calls the registration methods for you, but if you would like to call them directly they are documented here: sdk registration methods.

Once you have registered an SDK, you can start and end spans. A simple example of basic SDK registration and tracing a simple operation is below. The example should export spans to the console once per second. For more information, see the tracing documentation.

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

// Create and register an SDK
const provider = new BasicTracerProvider();
provider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter()));
trace.setGlobalTracerProvider(provider);

// Acquire a tracer from the global tracer provider which will be used to trace the application
const name = 'my-application-name';
const version = '0.1.0';
const tracer = trace.getTracer(name, version);

// Trace your application by creating spans
async function operation() {
  const span = tracer.startSpan("do operation");

  // mock some work by sleeping 1 second
  await new Promise((resolve, reject) => {
    setTimeout(resolve, 1000);
  })

  span.end();
}

async function main() {
  while (true) {
    await operation();
  }
}

main();

Version Compatibility

Because the npm installer and node module resolution algorithm could potentially allow two or more copies of any given package to exist within the same node_modules structure, the OpenTelemetry API takes advantage of a variable on the global object to store the global API. When an API method in the API package is called, it checks if this global API exists and proxies calls to it if and only if it is a compatible API version. This means if a package has a dependency on an OpenTelemetry API version which is not compatible with the API used by the end user, the package will receive a no-op implementation of the API.

Upgrade Guidelines

0.21.0 to 1.0.0

No breaking changes

0.20.0 to 0.21.0

  • #78 api.context.bind arguments reversed and context is now a required argument.
  • #46 Noop classes and singletons are no longer exported. To create a noop span it is recommended to use api.trace.wrapSpanContext with INVALID_SPAN_CONTEXT instead of using the NOOP_TRACER.

1.0.0-rc.3 to 0.20.0

  • Removing TimedEvent which was not part of spec
  • HttpBaggage renamed to HttpBaggagePropagator
  • #45 Span#context renamed to Span#spanContext
  • #47 getSpan/setSpan/getSpanContext/setSpanContext moved to trace namespace
  • #55 getBaggage/setBaggage/createBaggage moved to propagation namespace

License

Apache 2.0 - See LICENSE for more information.

Keywords

FAQs

Last updated on 27 Jan 2022

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc