@opentelemetry/instrumentation-long-task
v0.41.0
Published
OpenTelemetry instrumentation for long task Web API
Downloads
63,665
Readme
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({
// see under for available configuration
}),
],
});
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)
}
}
Useful links
- 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
License
Apache 2.0 - See LICENSE for more information.