# @voodoo.io/tracing-middleware

> Add a middleware to handle tracing with open tracing libs

Latest version **3.0.1** (published 2025-09-18) · MIT license · 0 weekly downloads

## Install

```sh
npm install @voodoo.io/tracing-middleware
pnpm add @voodoo.io/tracing-middleware
yarn add @voodoo.io/tracing-middleware
bun add @voodoo.io/tracing-middleware
```

Provides the command `tracing-middleware`.

## Health

**Score 40/100 (D)** — status: maintenance-mode.

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads.

Negative: stale; low maintenance score.

## Facts

| | |
|---|---|
| Version | 3.0.1 |
| Published | 2025-09-18 |
| First published | 2022-03-30 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | >=20.0.0 |
| Dependencies | 22 |
| Unpacked size | 13.5 KB |
| Known vulnerabilities | 0 (+3 in 3 direct dependencies) |
| Install scripts | no |
| Author | Vincent Vallet |
| Maintainers | voodooio, vincentvallet_voodoo, raphaelyazdi |
| Keywords | tracing, tracer, opentelemetry, instrumentation, jeager, span, trace, traceId, monitoring, tempo |

## Links

- npm: https://www.npmjs.com/package/@voodoo.io/tracing-middleware
- Repository: https://github.com/VoodooTeam/tracing-middleware
- Homepage: https://github.com/VoodooTeam/tracing-middleware#readme
- Issues: https://github.com/VoodooTeam/tracing-middleware/issues
- npm.io page: https://npm.io/package/@voodoo.io/tracing-middleware

## Dependencies (22)

- [debug](https://npm.io/package/debug.md) 4.4.3
- [@opentelemetry/api](https://npm.io/package/@opentelemetry/api.md) 1.9.0
- [@opentelemetry/sdk-node](https://npm.io/package/@opentelemetry/sdk-node.md) 0.205.0
- [@prisma/instrumentation](https://npm.io/package/@prisma/instrumentation.md) 6.16.2
- [@opentelemetry/resources](https://npm.io/package/@opentelemetry/resources.md) 2.1.0
- [@opentelemetry/instrumentation-pg](https://npm.io/package/@opentelemetry/instrumentation-pg.md) 0.58.0
- [@opentelemetry/instrumentation-koa](https://npm.io/package/@opentelemetry/instrumentation-koa.md) 0.53.0
- [@opentelemetry/instrumentation-grpc](https://npm.io/package/@opentelemetry/instrumentation-grpc.md) 0.205.0
- [@opentelemetry/instrumentation-http](https://npm.io/package/@opentelemetry/instrumentation-http.md) 0.205.0
- [@opentelemetry/instrumentation-pino](https://npm.io/package/@opentelemetry/instrumentation-pino.md) 0.52.0
- [@opentelemetry/semantic-conventions](https://npm.io/package/@opentelemetry/semantic-conventions.md) 1.37.0
- [@opentelemetry/instrumentation-mysql](https://npm.io/package/@opentelemetry/instrumentation-mysql.md) 0.51.0
- [@opentelemetry/instrumentation-redis](https://npm.io/package/@opentelemetry/instrumentation-redis.md) 0.54.1
- [@opentelemetry/instrumentation-aws-sdk](https://npm.io/package/@opentelemetry/instrumentation-aws-sdk.md) 0.60.0
- [@opentelemetry/instrumentation-express](https://npm.io/package/@opentelemetry/instrumentation-express.md) 0.54.0
- [@opentelemetry/instrumentation-fastify](https://npm.io/package/@opentelemetry/instrumentation-fastify.md) 0.50.0
- [@opentelemetry/instrumentation-graphql](https://npm.io/package/@opentelemetry/instrumentation-graphql.md) 0.53.0
- [@opentelemetry/instrumentation-ioredis](https://npm.io/package/@opentelemetry/instrumentation-ioredis.md) 0.53.0
- [@opentelemetry/instrumentation-mongodb](https://npm.io/package/@opentelemetry/instrumentation-mongodb.md) 0.58.0
- [@opentelemetry/instrumentation-winston](https://npm.io/package/@opentelemetry/instrumentation-winston.md) 0.50.0
- [@opentelemetry/exporter-trace-otlp-http](https://npm.io/package/@opentelemetry/exporter-trace-otlp-http.md) 0.205.0
- [@opentelemetry/instrumentation-aws-lambda](https://npm.io/package/@opentelemetry/instrumentation-aws-lambda.md) 0.56.0

## Alternatives

- [@sindresorhus/slugify](https://npm.io/package/@sindresorhus/slugify.md) — 3.7M weekly downloads
- [solid-js](https://npm.io/package/solid-js.md) — 2.7M weekly downloads
- [expo-glass-effect](https://npm.io/package/expo-glass-effect.md) — 2.5M weekly downloads
- [nanoassert](https://npm.io/package/nanoassert.md) — 780.8K weekly downloads
- [@ffmpeg/ffmpeg](https://npm.io/package/@ffmpeg/ffmpeg.md) — 529.5K weekly downloads

## Recent versions

- 3.0.1 (latest) — 2025-09-18
- 3.0.0 — 2025-09-04
- 2.1.0 — 2025-09-02
- 2.0.5 — 2025-06-03
- 2.0.4 — 2025-06-03
- 2.0.3 — 2025-01-10
- 2.0.2 — 2024-09-04
- 2.0.1 — 2024-07-09
- 2.0.0 — 2024-05-30
- 1.1.8 — 2024-04-04
- 1.1.7 — 2024-02-28
- 1.1.6 — 2024-01-08
- 1.1.5 — 2023-11-22
- 1.2.1 — 2023-11-09
- 1.2.0 — 2023-10-18
- … 9 more at https://npm.io/package/@voodoo.io/tracing-middleware/versions

## README

[![npm version](https://badge.fury.io/js/%40voodoo.io%2Ftracing-middleware.svg)](https://badge.fury.io/js/%40voodoo.io%2Ftracing-middleware)
[![GitHub license](https://img.shields.io/github/license/VoodooTeam/tracing-middleware.svg)](https://github.com/VoodooTeam/tracing-middleware/blob/master/LICENSE)
[![Opened PR](https://img.shields.io/github/issues-pr-raw/VoodooTeam/tracing-middleware.svg)](https://github.com/VoodooTeam/tracing-middleware/pulls)
[![Opened issues](https://img.shields.io/github/issues/VoodooTeam/tracing-middleware.svg)](https://github.com/VoodooTeam/tracing-middleware/issues)
[![CI pipeline](https://github.com/VoodooTeam/tracing-middleware/workflows/Node.js%20CI/badge.svg)](https://github.com/VoodooTeam/tracing-middleware/actions?query=workflow%3A%22Node.js+CI%22)
[![Node version](https://img.shields.io/node/v-lts/%40voodoo.io%2Ftracing-middleware.svg)](https://github.com/VoodooTeam/tracing-middleware)
[![Code coverage](https://codecov.io/gh/VoodooTeam/tracing-middleware/branch/master/graph/badge.svg)](https://codecov.io/gh/VoodooTeam/tracing-middleware)

# Tracing middleware with open tracing libs

## Purpose

A simple middleware to enable tracing with opentelemetry lib.
It will instantiate some instrumentation libs in order to catch span for:
* HTTP calls
* AWS SDK
* Mysql
* MongoDB
* Postgres
* Web frameworks: Fastify, Express, Koa
* AWS Lambda
* Redis
* GraphQL
* GRPC
* Prisma

## Installation

```bash
npm install @voodoo.io/tracing-middleware --save
```

## Usage

### Basic usage
```javascript
const tracer = require('@voodoo.io/tracing-middleware')()
```

### Use addTraceId method
This method will add the traceID in the req object.
```javascript
const tracingModule = require('@voodoo.io/tracing-middleware')()

fastify.addHook('onRequest', tracingModule.addTraceId)
```

### Configuration
Example of configuration, using tempo as endpoint.
```javascript
const tracer = require('@voodoo.io/tracing-middleware')({
    serviceName: 'myService',
    exporterEndpoint: 'http://tempo.monitoring.svc.cluster.local:14268/api/traces',
    instrumentations: {
        mysql: true,
        lambda: true
    }
})
```

| Name                       | Default                            | Description                 |
|:---------------------------|:-----------------------------------|:----------------------------|
| serviceName                | process.env.OTEL_SERVICE_NAME      | Your service's name         |
| exporterEndpoint           | process.env.OTEL_EXPORTER_ENDPOINT | The opentelemetry endpoint  |
| instrumentations           |                                    | List of instrumentations    |
| instrumentations.http      | true                               |                             |
| instrumentations.aws       | true                               |                             |
| instrumentations.mysql     | false                              |                             |
| instrumentations.mongodb   | false                              |                             |
| instrumentations.pg        | false                              |                             |
| instrumentations.redis     | false                              |                             |
| instrumentations.ioredis   | false                              |                             |
| instrumentations.graphql   | false                              |                             |
| instrumentations.koa       | false                              |                             |
| instrumentations.express   | false                              |                             |
| instrumentations.fastify   | false                              |                             |
| instrumentations.lambda    | false                              |                             |
| instrumentations.grpc      | false                              |                             |
| instrumentations.winston   | false                              |                             |
| instrumentations.prisma    | false                              |                             |

## Compatibility


| Version       | Supported     | Tested         |
|:-------------:|:-------------:|:--------------:|
| 20.x          | yes           | yes            |
| 18.x          | yes           | yes            |

## Debug
```bash
DEBUG=tracing-middleware* node myApp.js
```

## Test

```bash
$ npm test
```

Run with coverage

```bash
$ npm run coverage
```

Coverage report can be found in coverage/.

## License

MIT

## Release 

```bash
npm publish
```

---
_Source: https://npm.io/package/@voodoo.io/tracing-middleware · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
