Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@opentelemetry/instrumentation-undici

Package Overview
Dependencies
Maintainers
6
Versions
34
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@opentelemetry/instrumentation-undici

OpenTelemetry instrumentation for `undici` http client and Node.js fetch()

latest
Source
npmnpm
Version
0.28.0
Version published
Weekly downloads
17M
-7.38%
Maintainers
6
Weekly downloads
 
Created
Source

OpenTelemetry Undici/fetch Instrumentation for Node.js

NPM Published Version Apache License

Note: This is an experimental package under active development. New releases may include breaking changes.

This module provides automatic instrumentation for undici and Node.js global fetch API. If you're looking the instrumentation for browser's fetch API it is located at https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-fetch/

Installation

npm install --save @opentelemetry/instrumentation-undici

Supported Versions

  • undici version >=5.12.0

Usage

OpenTelemetry Undici/fetch Instrumentation allows the user to automatically collect trace data and export them to their backend of choice, to give observability to distributed systems.

To load a specific instrumentation (Undici in this case), specify it in the Node Tracer's configuration.

const {
  UndiciInstrumentation,
} = require('@opentelemetry/instrumentation-undici');
const {
  ConsoleSpanExporter,
  NodeTracerProvider,
  SimpleSpanProcessor,
} = require('@opentelemetry/sdk-trace-node');
const { registerInstrumentations } = require('@opentelemetry/instrumentation');

const provider = new NodeTracerProvider({
  spanProcessors: [
    new SimpleSpanProcessor(new ConsoleSpanExporter()),
  ],
});

provider.register();

registerInstrumentations({
  instrumentations: [new UndiciInstrumentation()],
});

Undici/Fetch instrumentation Options

Undici instrumentation has few options available to choose from. You can set the following:

OptionsTypeDescription
ignoreRequestHookIgnoreRequestFunctionUndici instrumentation will not trace all incoming requests that matched with custom function.
requestHookRequestHookFunctionFunction for adding custom attributes before request is handled.
responseHookResponseHookFunctionFunction for adding custom attributes after the response headers are received.
startSpanHookStartSpanHookFunctionFunction for adding custom attributes before a span is started.
requireParentforSpansBooleanRequire a parent span is present to create new span for outgoing requests.
headersToSpanAttributesObjectList of case insensitive HTTP headers to convert to span attributes. Headers will be converted to span attributes in the form of http.{request|response}.header.header-name where the name is only lowercased, e.g. http.response.header.content-length

Observations

This instrumentation subscribes to certain diagnostics_channel to intercept the client requests and generate traces and metrics. In particular tracing spans are started when undici:request:create channel receives a message and ended when undici:request:trailers channel receive a message. This means the full response body has been received when the instrumentation ends the span.

Semantic Conventions

This package uses Semantic Conventions Version 1.24.0. As for now the Semantic Conventions are bundled in this package but eventually will be imported from @opentelemetry/semantic-conventions package when it is updated to latest version. Ref: opentelemetry-js/issues/4235

Attributes collected:

AttributeShort Description
error.typeDescribes a class of error the operation ended with.
http.request.methodHTTP request method.
http.request.method_originalOriginal HTTP method sent by the client in the request line.
http.response.status_codeHTTP response status code.
network.peer.addressPeer address of the network connection - IP address or Unix domain socket name.
network.peer.portPeer port number of the network connection.
server.addressServer domain name, IP address or Unix domain socket name.
server.portServer port number.
url.fullAbsolute URL describing a network resource according to RFC3986.
url.pathThe URI path component.
url.queryThe URI query component.
url.schemeHTTP request method.
user_agent.originalValue of the HTTP User-Agent header sent by the client.

License

Apache 2.0 - See LICENSE for more information.

Keywords

opentelemetry

FAQs

Package last updated on 13 May 2026

Did you know?

Socket

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