1.1.8 • Published 1 month ago

@voodoo.io/tracing-middleware v1.1.8

Weekly downloads
-
License
MIT
Repository
github
Last release
1 month ago

npm version GitHub license Opened PR Opened issues CI pipeline Node version Code coverage

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
    }
})
NameDefaultDescription
serviceNameprocess.env.OTEL_SERVICE_NAMEYour service's name
exporterEndpointprocess.env.OTEL_EXPORTER_ENDPOINTThe opentelemetry endpoint
instrumentationsList of instrumentations
instrumentations.httptrue
instrumentations.awstrue
instrumentations.mysqlfalse
instrumentations.mongodbfalse
instrumentations.pgfalse
instrumentations.redisfalse
instrumentations.ioredisfalse
instrumentations.graphqlfalse
instrumentations.koafalse
instrumentations.expressfalse
instrumentations.fastifyfalse
instrumentations.lambdafalse
instrumentations.grpcfalse

Compatibility

VersionSupportedTested
20.xyesyes
18.xyesyes
16.xyesyes

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