OpenTelemetry Long Task Instrumentation for web
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({
}),
],
});
longtask Instrumentation Options
Options | Type | Description |
---|
observerCallback | ObserverCallback | Callback 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)
}
}
Semantic Conventions
This package does not currently generate any attributes from semantic conventions.
Useful links
License
Apache 2.0 - See LICENSE for more information.