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+
.
npm install --save @opentelemetry/instrumentation-long-task
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
}),
],
});
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)
}
}
- For more information on OpenTelemetry, visit: https://opentelemetry.io/
- For more about OpenTelemetry JavaScript: https://github.com/open-telemetry/opentelemetry-js
- For help or feedback on this project, join us in GitHub Discussions
Apache 2.0 - See LICENSE for more information.