/opentelemetry-instrumentation-fetch-node

OpenTelemetry Node 18+ native fetch automatic instrumentation package

Primary LanguageTypeScriptMIT LicenseMIT

opentelemetry-instrumentation-fetch-node

TypeScript

main CI

npm version

OpenTelemetry Node 18+ native fetch automatic instrumentation package.

Existing instrumentation packages (like @opentelemetry/instrumentation-http) do not work with Node 18 native fetch, which is based on the undici module but packaged in a "strange" way (some sort of internal bundle that I don't really understand). This module uses the new Node diagnostics channel to instrument native fetch.

Note that due to the fact that fetch is lazy loaded in Node 18, this module will kick off a "phony" fetch to an unparseable URL (blank string) to get the library to load so we don't miss any events (because the diagnostics channel would not yet exist).

See the tests for an example setup - note the onRequest event that allows you to add outbound headers or span attributes or what have you.