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
npm install @voodoo.io/tracing-middleware --save
const tracer = require('@voodoo.io/tracing-middleware')()
This method will add the traceID in the req object.
const tracingModule = require('@voodoo.io/tracing-middleware')()
fastify.addHook('onRequest', tracingModule.addTraceId)
Example of configuration, using tempo as endpoint.
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 |
Version | Supported | Tested |
---|---|---|
20.x | yes | yes |
18.x | yes | yes |
16.x | yes | yes |
DEBUG=tracing-middleware* node myApp.js
$ npm test
Run with coverage
$ npm run coverage
Coverage report can be found in coverage/.
MIT
In order to do the release, at the moment it's done manually, you need to get the publish token from 1password and then bump the version in the package.json file. Then you can run the following command:
npm publish