0.38.0 • Published 12 days ago

@opentelemetry/instrumentation-long-task v0.38.0

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
12 days ago

OpenTelemetry Long Task Instrumentation for web

NPM Published Version Apache License

This module provides automatic instrumentation for Long Task API which may be loaded using the @opentelemetry/sdk-trace-web package. It creates spans from tasks that take more than 50 milliseconds, all of the data reported via PerformanceLongTaskTiming is included as span attributes.

If total installation size is not constrained, it is recommended to use the @opentelemetry/auto-instrumentations-web bundle with @opentelemetry/sdk-trace-web for the most seamless instrumentation experience.

Compatible with OpenTelemetry JS API and SDK 1.0+.

Installation

npm install --save @opentelemetry/instrumentation-long-task

Usage

import { ConsoleSpanExporter, SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base';
import { WebTracerProvider } from '@opentelemetry/sdk-trace-web';
import { LongTaskInstrumentation } from '@opentelemetry/instrumentation-long-task';
import { registerInstrumentations } from '@opentelemetry/instrumentation';

const provider = new WebTracerProvider();

provider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter()));

registerInstrumentations({
  tracerProvider: provider,
  instrumentations: [
    new LongTaskInstrumentation({
      // see under for available configuration
    }),
  ],
});

longtask Instrumentation Options

OptionsTypeDescription
observerCallbackObserverCallbackCallback executed on observed longtask, allowing additional attributes to be attached to the span.

The observerCallback function is passed the created span and the longtask PerformanceEntry, allowing the user to add custom attributes to the span with any logic. For example, a web app with client-side routing can add contextual information on the current page, even if the tracer was instantiated before navigation.

Usage Example:

longtaskInstrumentationConfig = {
  observerCallback: (span, longtaskEvent) => {
    span.setAttribute('location.pathname', window.location.pathname)
  }
}

Useful links

License

Apache 2.0 - See LICENSE for more information.