1.1.8 • Published 1 month ago
@voodoo.io/tracing-middleware v1.1.8
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
Installation
npm install @voodoo.io/tracing-middleware --save
Usage
Basic usage
const tracer = require('@voodoo.io/tracing-middleware')()
Use addTraceId method
This method will add the traceID in the req object.
const tracingModule = require('@voodoo.io/tracing-middleware')()
fastify.addHook('onRequest', tracingModule.addTraceId)
Configuration
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 |
Compatibility
Version | Supported | Tested |
---|---|---|
20.x | yes | yes |
18.x | yes | yes |
16.x | yes | yes |
Debug
DEBUG=tracing-middleware* node myApp.js
Test
$ npm test
Run with coverage
$ npm run coverage
Coverage report can be found in coverage/.
License
MIT
Release
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